(57)【要約】【課題】ソフトウェアの機能別に集中的にファジングを行うことができるソフトウェア脆弱点点検装置及び方法を提供する。【解決手段】ソフトウェア脆弱点点検装置は、脆弱点点検を行うソフトウェアの機能を選択するモジュールと、選択された機能を含む第１ファイル及び選択された機能を含まない第２ファイルを生成する比較し、ファイル生成モジュールと、第１ファイル及び第２ファイルのバイナリー値を比較、変更または追加されたバイナリーパターンを検索するモジュールと、検索されたバイナリーパターンに基づいて１つ以上のテストケースを生成するモジュールと、１つ以上のテストケースに基づいて脆弱点点検を行い、脆弱点点検結果を生成するモジュールとを備える。【選択図】図１
2009116847.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの脆弱点を点検するための装置において、
脆弱点点検を行う前記ソフトウェアの機能を選択する対象機能選択モジュールと、
前記選択された機能を含む第１ファイル及び前記選択された機能を含まない第２ファイルを生成する比較ファイル生成モジュールと、
前記第１ファイル及び前記第２ファイルのバイナリー値を比較し、変更または追加されたバイナリーパターンを検索するバイナリーパターン比較モジュールと、
前記検索されたバイナリーパターンに基づいて１つ以上のテストケースを生成するテストケース生成モジュールと、
前記１つ以上のテストケースに基づいて脆弱点点検を行い、脆弱点点検結果を生成する脆弱点検証モジュールと
を備えることを特徴とするソフトウェア脆弱点点検装置。
【請求項２】
前記バイナリーパターン比較モジュールは、前記変更または追加されたバイナリーパターンが位置するアドレスを含む位置情報を生成し、
前記テストケース生成モジュールは、前記位置情報に基づいて１つ以上のテストケースを生成することを特徴とする請求項１に記載のソフトウェア脆弱点点検装置。
【請求項３】
前記１つ以上のテストケースは、前記変更または追加されたバイナリーパターンが位置するアドレスに本来のバイナリー値を除いた残りのバイナリー値を順次に置換して生成されることを特徴とする請求項１に記載のソフトウェア脆弱点点検装置。
【請求項４】
前記脆弱点検証モジュールは、前記１つ以上のテストケースを入力データとして利用して前記ソフトウェアを行い、前記ソフトウェアの誤動作可否に基づいて前記脆弱点点検結果を生成することを特徴とする請求項１に記載のソフトウェア脆弱点点検装置。
【請求項５】
前記第２ファイルは、前記ソフトウェアによって生成される初期化ファイルであることを特徴とする請求項１乃至４のいずれか１項に記載のソフトウェア脆弱点点検装置。
【請求項６】
ソフトウェアの脆弱点を点検するための方法において、
（ａ）脆弱点点検を行う前記ソフトウェアの機能を選択する段階と、
（ｂ）前記選択された機能を含む第１ファイルを生成する段階と、
（ｃ）前記選択された機能を含まない第２ファイルを生成する段階と、
（ｄ）前記第１ファイル及び前記第２ファイルのバイナリー値を比較し、変更または追加されたバイナリーパターンを検索する段階と、
（ｅ）前記検索されたバイナリーパターンに基づいて１つ以上のテストケースを生成する段階と、
（ｆ）前記１つ以上のテストケースに基づいて脆弱点点検を行う段階と、
（ｅ）前記脆弱点点検の実行結果を生成する段階と
を含むことを特徴とするソフトウェア脆弱点点検方法。
【請求項７】
前記段階（ｄ）以後に、
前記変更または追加されたバイナリーパターンが位置するアドレスを含む位置情報を生成する段階をさらに含むことを特徴とする請求項６に記載のソフトウェア脆弱点点検方法。
【請求項８】
前記段階（ｅ）は、前記位置情報に基づいて前記１つ以上のテストケースを生成することを特徴とする請求項７に記載のソフトウェア脆弱点点検方法。
【請求項９】
前記１つ以上のテストケースは、前記変更または追加されたバイナリーパターンが位置するアドレスに本来のバイナリー値を除いた残りのバイナリー値を順次に置換して生成されることを特徴とする請求項６に記載のソフトウェア脆弱点点検方法。
【請求項１０】
前記段階（ｆ）は、前記１つ以上のテストケースを入力データとして利用して前記ソフトウェアを行い、前記ソフトウェアの誤動作可否に基づいて前記脆弱点点検を行うことを特徴とする請求項６に記載のソフトウェア脆弱点点検方法。
【請求項１１】
前記第２ファイルは、前記ソフトウェアによって生成される初期化ファイルであることを特徴とする請求項６乃至１０のいずれかに記載のソフトウェア脆弱点点検方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの脆弱点を点検するための装置及び方法に関し、より詳細には、ソフトウェアの機能別にファジングを行うソフトウェア脆弱点点検装置及び方法に関する。
【背景技術】
【０００２】
ソフトウェア開発過程で、ソフトウェアに対する分析は、一般的にデバッギングプログラムを利用してソースコードで脆弱点が発生する可能性がある部位にブレーキポイントを設定し、ソフトウェアの実行中にブレーキポイントによって実行が中止されれば、ソフトウェアの実行環境を観察して分析する方式で行われる。
【０００３】
これに対し、ソフトウェア脆弱点の分析は、大部分ソースコードを求めることができない環境で行われ、これにより、実行ファイルだけでも実行可能なブラックボックステスト形態の方式で行われる。ここで、ブラックボックステストとは、ソフトウェア自体を内部の動作を観察することができないブラックボックスとして仮定し、ソフトウェアの入出力値に基づいて分析を行うテスト方式である。
【０００４】
このようなブラックボックステストの１つであるファジング（Fuzzing）は、当該ソフトウェアに多様なランダムデータを入力し、入力値によって当該ソフトウェアで行われる非正常的な動作を探知し、ソフトウェアが処理できない欠陷を探し出す分析方法である。ファジングは、一般的にランダムデータを含むテストケースを生成し、生成されたテストケースを用いて当該ソフトウェアを順次に実行し、当該ソフトウェアの誤動作などを分析する過程で行われる。
【０００５】
このようなファジングを使用する従来のソフトウェア脆弱点点検方法は、ソフトウェアの機能と関係なく入力データの全体に対してランダムにデータを生成して分析を行うだけであり、これにより、ソフトウェアの特定機能によって発生し得る脆弱点に対する集中的な脆弱点点検を提供することが難しいという短所がある。
【０００６】
【特許文献１】米国特許登録ＵＳ７，０５１，３２２Ｂ２
【非特許文献１】Fuzzing：Breaking Software in an automated fashion Ilja van  Sprundel December 8,2005
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ソフトウェアの機能別に集中的にファジングを行うことができるソフトウェア脆弱点点検装置及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の一態様に係るソフトウェア脆弱点点検装置は、脆弱点点検を行う前記ソフトウェアの機能を選択する対象機能選択モジュールと、前記選択された機能を含む第１ファイル及び前記選択された機能を含まない第２ファイルを生成する比較ファイル生成モジュールと、前記第１ファイル及び前記第２ファイルのバイナリー値を比較し、変更または追加されたバイナリーパターンを検索するバイナリーパターン比較モジュールと、前記検索されたバイナリーパターンに基づいて１つ以上のテストケースを生成するテストケース生成モジュールと、前記１つ以上のテストケースに基づいて脆弱点点検を行い、脆弱点点検結果を生成する脆弱点検証モジュールとを含む。
【０００９】
また、本発明の他の態様に係るソフトウェア脆弱点点検方法は、（ａ）脆弱点点検を行う前記ソフトウェアの機能を選択する段階と、（ｂ）前記選択された機能を含む第１ファイルを生成する段階と、（ｃ）前記選択された機能を含まない第２ファイルを生成する段階と、（ｄ）前記第１ファイル及び前記第２ファイルのバイナリー値を比較し、変更または追加されたバイナリーパターンを検索する段階と、（ｅ）前記検索されたバイナリーパターンに基づいて１つ以上のテストケースを生成する段階と、（ｆ）前記１つ以上のテストケースに基づいて脆弱点点検を行う段階と、（ｅ）前記脆弱点点検の実行結果を生成する段階とを含む。
【発明の効果】
【００１０】
本発明は、ソフトウェアの機能によって変更または追加される部分に集中的にファジングを行うことによって、ソフトウェアの各々機能別脆弱点を探すことができるだけでなく、ファジングの効率性をも増加させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明を詳細に説明する。
【００１２】
図１は、本発明の一実施例に係るソフトウェア脆弱点点検装置の構成を示すブロック図である。
【００１３】
図１を参照すれば、ソフトウェア脆弱点点検装置１００は、点検対象機能選択モジュール１１０、比較ファイル生成モジュール１２０、バイナリーパターン比較モジュール１３０、テストケース生成モジュール１４０及び脆弱点検証モジュール１５０を含む。
【００１４】
点検対象機能選択モジュール１１０は、当該ソフトウェアの機能のうち集中的にファジングを行う機能を選択する。比較ファイル生成モジュール１２０は、選択された機能が含まれた第１ファイル及び選択された機能が含まれない第２ファイルを生成する。
【００１５】
バイナリーパターン比較モジュール１３０は、第１ファイルと第２ファイルのバイナリー値を比較し、互いに異なるバイナリーパターンを検索する。ここで、バイナリーパターンとは、一連のバイナリー値が形成するバイナリー値の集合を言う。第１ファイルと第２ファイルのバイナリーパターンの差異は、特定機能の包含可否なので、前記互いに異なるバイナリーパターンが位置するアドレスは、特定機能に対応するアドレスを意味する。テストケース生成モジュール１４０は、バイナリーパターン比較モジュール１３０を通じて検索された部分に基づいてファジングを行うためのテストケースを生成する。脆弱点検証モジュール１５０は、テストケース生成モジュール１４０で生成されたテストケースを利用して当該ソフトウェアを実行し、ソフトウェアの実行中に発生する誤動作などに基づいて脆弱点点検結果を生成して出力する。
【００１６】
図２は、本発明の一実施例に係るソフトウェア脆弱点点検方法の過程を示す流れ図である。
【００１７】
図２を参照すれば、点検対象機能選択モジュールは、脆弱点点検を行うソフトウェアの機能を選択する（２１０）。一実施例で、点検対象機能選択モジュールは、ユーザインターフェースを通じて入力されたユーザの選択によって点検対象機能を選択したり、所定の選択アルゴリズムによってユーザの入力なしに点検対象機能を選択することができる。
【００１８】
比較ファイル生成モジュールは、選択された点検対象機能を含む第１ファイル及び第１ファイルと比較するために点検対象機能を含まない第２ファイルを生成する（２２０）。一実施例で、第２ファイルは、ワープロの空き文書（Empty document）のように当該ソフトウェアによって生成される初期化ファイル（Initialized file）であることができる。
【００１９】
バイナリーパターン比較モジュールは、第１ファイル及び第２ファイルのバイナリー値を比較し、変更されるか、又は追加されたバイナリーパターンを検索する（２３０）。バイナリーパターン比較モジュールは、比較を通じて検索された部分のアドレスを含む位置情報をテストケース生成モジュールに伝達することができる。
【００２０】
テストケース生成モジュールは、前記検索された部分のアドレスにランダムデータを挿入し、ファジングを行うためのテストケースを生成する（２４０）。一般的に、１つのアドレスには、２桁の１６進数よりなるバイナリー値が入力されることができる。したがって、１つのアドレスには、１６ｘ１６、すなわち２５６から本来データ値を差し引いた２５５個のランダムデータが挿入されることができる。これにより、すべてＮ個のアドレスが不一致部分として検索された場合、Ｎｘ２５５個のテストケースを生成することができる。一実施例で、テストケース生成モジュールは、前記検索された部分のアドレスに本来バイナリー値を除いた残りのバイナリー値を順次に代入してテストケースを生成することができる。脆弱点検証モジュールは、生成されたテストケースを入力データとして利用して該当のソフトウェアを実行し（２５０）、実行中にソフトウェアの誤動作などに基づいて脆弱点点検結果を生成して出力する（２６０）。
【００２１】
図３ａ乃至図３ｃは、本発明の一実施例に係るソフトウェア脆弱点点検装置に含まれたモジュールの動作を説明するための図である。
【００２２】
図３ａを参照すれば、ユーザが点検対象機能選択モジュールを通じてマイクロソフトワープロの作表機能に対する脆弱点の点検実行を要請する場合、比較ファイル生成モジュールは、第１ファイル及び第２ファイルとして各々表が挿入された文書ファイル及び空き文書ファイルを生成することができる。
【００２３】
バイナリーパターン比較モジュール３１０は、空き文書ファイル及び表挿入文書ファイルのバイナリー値を順次に比較することによって、変更または追加されたバイナリー値を検索することができる。例えば、空き文書ファイルのバイナリー値が“Ｄ０ ＣＦ ＦＦ ＦＦ ＦＦ ＣＣ Ｄ１ Ｆ９ Ｄ３ ＧＧ ３３ ＤＳ ９１”であり、表挿入文書ファイルのバイナリー値が“Ｄ０ ＣＦ ２Ａ Ｂ０ ６７ ＣＣ Ｄ１ Ｆ９ Ｄ３ ＧＧ ３３ ＤＳ ９１ ＥＳ ＦＦ ＦＦ ＦＦ Ｂ１ Ｅ２”である場合、０ｘ０１及び０ｘ０２では、バイナリー値が互いに一致するが、０ｘ０３乃至０ｘ０５では、バイナリー値が一致しない。また、０ｘ０６乃至０ｘ１３では、２つのファイル間にバイナリー値が一致するが、０ｘ１４乃至０ｘ１９では、表挿入文書ファイルにだけバイナリー値が存在する。したがって、バイナリーパターン比較モジュールは、バイナリー値が不一致するアドレスである０ｘ０３乃至０ｘ０５及び０ｘ１４乃至０ｘ１９を含む位置情報を生成し、これをテストケース生成モジュール３２０に伝達することができる。
【００２４】
図３ｂを参照すれば、テストケース生成モジュール３２０は、バイナリーパターン比較モジュールからバイナリー値が不一致するアドレスに対する位置情報を受信し、受信した位置情報に基づいてランダムなデータを生成して挿入する。例えば、０ｘ０３乃至０ｘ０５及び０ｘ１４乃至０ｘ１９がバイナリー値が不一致する部分のアドレスとしてテストケース生成モジュール３２０に伝達される場合、テストケース生成モジュール３２０は、各々のアドレスに対して２５５個のランダムデータを挿入可能なので、９ｘ２５５＝２２９５個の文書ファイルをテストケースとして生成し、脆弱点検証モジュール３３０に伝達することができる。
【００２５】
図３ｃを参照すれば、脆弱点検証モジュール３３０は、テストケースとして生成された各々の文書ファイルをマイクロソフトワープロで実行することによって、実行中に発生し得るエラーに対する検証を行い、脆弱点点検結果を出力することができる。０ｘ０３のバイナリー値２ＡをＡＡに置換して生成された文書ファイルの実行中にバッファーオーバーフローが発生した場合、脆弱点検証モジュール３３０は、“マイクロソフトワープロの作表機能が追加された場合、０ｘ０３のバイナリー値がＡＡに変更されれば、バッファーオーバーフローの脆弱点が発見される”という脆弱点点検結果メッセージを出力することができる。
【００２６】
以上において説明した本発明は、本発明が属する技術の分野における通常の知識を有する者であれば、本発明の技術的思想を逸脱しない範囲内で、様々な置換、変形及び変更が可能であるので、上述した実施例及び添付された図面に限定されるものではない。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施例に係るソフトウェア脆弱点点検装置の構成を示すブロック図である。
【図２】本発明の一実施例に係るソフトウェア脆弱点点検方法の過程を示す流れ図である。
【図３ａ】本発明の一実施例に係るソフトウェア脆弱点点検装置に含まれたモジュールの動作を説明するための図である。
【図３ｂ】本発明の一実施例に係るソフトウェア脆弱点点検装置に含まれたモジュールの動作を説明するための図である。
【図３ｃ】本発明の一実施例に係るソフトウェア脆弱点点検装置に含まれたモジュールの動作を説明するための図である。
【符号の説明】
【００２８】
１００  ソフトウェア脆弱点点検装置
１１０  点検対象機能選択モジュール
１２０  比較ファイル生成モジュール
１３０  バイナリーパターン比較モジュール
１４０  テストケース生成モジュール
１５０  脆弱点検証モジュール
【図１】
2009116847.tif 000003
【図２】
2009116847.tif 000004
【図３ａ】
2009116847.tif 000005
【図３ｂ】
2009116847.tif 000006
【図３ｃ】
2009116847.tif 000007