本研究では、プログラムの実行を命令レベルでモニタリングすることによって関数の呼び出し関係を動的に把握し、これに基づいて分岐命令の実行の正当性をチェックすることにより、バッファオーバフローを用いたスタックスマッシング攻撃などの不正攻撃を完全に防止するプロセッサアーキテクチャの検討を行なった。 C言語のlongjmp関数やC++における例外処理(try~throw~catch)に対しても正確に関数呼び出し状況を把握できる方式を開発したことにより、実用的なプログラムに対して十分に適用することが可能となった。次に、本方式の実装に関する概略設計を行い、小規模なリターンアドレス管理プロセッサをメインプロセッサとは別に設けて、メインプロセッサで実行するプログラムをモニタリングすることとした。また、来年度に予定している性能評価のため、動作サイクル単位でプログラムの実行時間を計測するシミュレータを開発した。 本格的な評価は来年度に行うが、ある実用プログラムに対して、防御能力としては不完全ながらも低オーバヘッドで攻撃検出を行う既存の防御方式と比較しても、本方式における防御処理のためのオーバヘッドは極めて小さいことを確認した。
|