修論タイトル:「バイナリコードから脅威度を推定する脆弱性検出ツールの実装と評価」 (2008年度 修士論文)

氏名:今井 祥子

概要:

 現在インターネット上には多数の有益なプログラムが存在している。その理由として考えられるのは、インターネットの拡大だけではなく、Vectorのようなソフトウェア・ライブラリサイトの存在が大きい。このようなサイトの出現によって、開発者は簡単な情報を登録するだけで、自作のプログラムを公開可能になった。これはプログラム増加の一助となっていると考えられる。
 しかし一方で、CERTのようなサイトには多数のプログラムにおける脆弱性が報告されている。脆弱性とは、バグやセキュリティホールなどのことで、これを利用すると攻撃者はそのプログラムをフリーズさせたり、ホストコンピュータに侵入して権限を乗っ取ったりすることができる。こういった脆弱性は、広く普及しているLhacaやiTunes等にも発見されている。
 ゆえにプログラムの使用前にその脆弱性を調べることが推奨されるが、それは容易ではない。なぜなら公開されているプログラムの多くがバイナリ形式で配布されているからである。バイナリはソースコードと違い、その内容を把握することが難しい。  本研究では、バイナリコードの脅威度を容易に把握するシステムを提案する。バイナリを対象とすることで、多くのプログラムの脆弱性を検出でき、それらのプログラムの危険性を使用前に把握することが可能になった。バイナリコードはそのままでは解析しにくいので逆アセンブルしてから解析を行った。解析の方法として採用したのはパターンマッチングであり、脆弱性を含むライブラリ関数の使用とその使用法を検出・検証する。パターンマッチングを行う際使用される脆弱性データベースは既存のソースコード検査ツール、ITS4から取得した。また、本システムの脆弱性検出方法もITS4のものを応用している。
 検出対象となるのは脆弱性関数の使用とその使用法だが、具体的にいうと関数呼び出しとそのとき指定された引数の種類・内容を検証する。本システムでは関数呼び出し以前に行われたスタックへのデータの移動を検知し、引数と判断している。また、データの遷移を簡単にではあるが把握しておくことによってより正確にその使用法を検証することが可能になった。  また、本研究では作成されたシステムを既存のシステムや複数のパターンに対して適用し、その結果を評価した。引数の検出もある程度実現でき、また、引数の検証についてはITS4よりも精度が高いことを示した。また、536KBの旧バージョンのapacheに対して本システムを適用した場合の実行時間はおよそ6秒程度であり、充分実用に耐えうるということが確認できた。


[修論pdf][研究室内部向け情報]