【手続補正書】
【提出日】平成22年8月13日(2010.8.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータプログラムのセキュリティ脆弱性を検出するためのコンピュータにより実行される方法であって、  
分析対象のソースコード（１６）を記憶装置で受け取るステップと、
ここに前記ソースコードはコード要素と文からなり、前記文の少なくとも一部は変数を参照し、  
演算処理装置（１２）上で動作するソースコード分析器（２２）を使用して、前記ソースコードのオブジェクト指向モデルを生成するステップと、
ここに前記コード要素は夫々オブジェクトを表し、
前記モデルを使用して、前記コンピュータプログラムのフロー図を表わすグラフ（１４４，１８４，２１８）を生成するステップと、
セキュリティ脆弱性に関する問合せを既定のコードグラフ問合せ言語で受け取るステップと、
前記問合せに応答して前記グラフを分析し、セキュリティ脆弱性を有する前記ソースコードの部位を同定するステップと、
前記セキュリティ脆弱性を報告するステップと、
を有することを特徴とする方法。
【請求項２】
前記変数は要素変数を有するデータ構造からなり、
前記要素変数は要素名を有し、
ここにおいて前記モデルを生成するステップは前記要素変数に夫々識別子を割当るステップを有し、
前記グラフを分析するステップは、前記夫々の識別子を使用して、既定の要素変数に対する参照を同定するステップを有し、
前記既定の要素変数の前記要素名は、もう１つの要素変数の前記要素名と同一である、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記グラフを生成するステップは、
制御フロー図を生成するステップと、
前記制御フロー図からデータフロー図を導出するステップと、
ここに前記データフロー図はデータフローノードおよび前記データフローノードを接続するデータフローエッジを有し、
前記制御フロー図より制御依存ノードを有する制御依存図を導出するステップと、
を有し、
前記グラフを分析するステップは、１つ以上の前記制御フロー図、前記データフロー図及び前記制御依存図を分析するステップを有する、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記ソースコードはオブジェクト指向言語で記述され、前記オブジェクト指向言語は、現在活性化している１つのオブジェクトから成り、
前記データフロー図は呼び出されるメソッド群から成り、
データフロー図を導出するステップは、前記現在活性化している１つのオブジェクトを、前記呼び出されるメソッド群への１つのパラメータとして使用するステップを有する、
ことを特徴とする請求項３に記載の方法。
【請求項５】
前記分析するステップは、前記制御依存図をコード切削し、前記ソースコードの、単一アクションのみが行われる原子要素を表わす前記制御依存図のブロックを定義するステップを有する、
ことを特徴とする請求項３に記載の方法。
【請求項６】
前記分析をするステップは、入力データが有効とされる前記データフロー図のデータフローノードを同定するステップと、前記入力データが前記同定されたデータフローノードにおいて既定の仕様に従って有効とされたことを証明するステップと、を有することを特徴とする請求項３に記載の方法。
【請求項７】
前記セキュリティ脆弱性は、
前記ソースコードの一部が仕様に従っていないという論理的誤りと、
ユーザのアクセスに対する非強制制限と、
ユーザがウェブページの隠し分野を表示する能力と、そして、
仮想ディレクトリ上で入出力操作が可能であることと、
を有するセキュリティ脆弱性の群から選択される、
ことを特徴とする請求項１−６のいずれかに記載の方法。
【請求項８】
前記分析のステップは、データアクセス層の方法論を新しく開示するステップと、前記ソースコードに対しソフトウェア故障の木解析を適用するステップと、の内の少なくとも１つのステップを有する、ことを特徴とする請求項１−６のいずれかに記載の方法。
【請求項９】
前記コンピュータプログラムのオブジェクトに対する、アクセス特権を特定する構成ファイルを自動的に準備するステップと、
前記アクセス特権が前記オブジェクトの既定のオブジェクトに対し存在するか否かを判定するため、前記構成ファイルに問い合わせるステップと、
前記オブジェクトの既定のオブジェクトに対する前記アクセス特権を取り消すステップと、
を更に有することを特徴とする、請求項１に記載の方法。
【請求項１０】
前記グラフを生成するステップは、
制御フロー図を生成するステップと、
前記制御フロー図より制御依存ノードを有する制御依存図を導出するステップと、を有し、
前記分析するステップは、
前記制御依存図の第１部位を１回目に横断処理するステップと、
前記制御依存図の処理済部分に標識を付けるステップと、
その後２回目に前記標識の付いた部分を含む前記制御依存図の第２部位を、前記標識の付いた部分を飛ばして横断処理するステップと、
を有する、ことを特徴とする、請求項１に記載の方法。
【請求項１１】
前記グラフを生成するステップは、
制御フロー図を生成するステップと、
前記制御フロー図からデータフロー図を導出する工程と、
を有し、
ここに前記データフロー図は、データフローノードと、前記データフローノードを繋ぐデータフローエッジと、からなり、
前記分析するステップは、
前記データフロー図内に、入力が受入れられた第１データフローノード、データが有効とされた第２データフローノード、およびデータが使用された第３データフローノードを同定するステップと、
前記データフロー図から前記第２データフローノードを削除するステップと、
その後前記第３データフローノードの１つと前記第１データフローノードの１つが前記データフローエッジの１つにより繋がっていることを判定するステップと、
前記第３データフローノードが未評価の入力の脆弱性を有することを報告するステップと、
を有する、
ことを特徴とする請求項１に記載の方法。
【請求項１２】
前記グラフを生成するステップは、
ノードから構成される制御フロー図を生成するステップと、
前記制御フロー図からデータフロー図を導出するステップと、
を有し、
ここに前記データフロー図は、データフローノードと、前記データフローノードを繋ぐデータフローエッジと、からなり、
ここに前記データフロー図を導出するステップは、
第１配列と第２配列を前記データフローノードの夫々に随伴させるステップと、
ここに前記第１配列は、随伴されたデータフローノードが依存する前記変数に関する静的情報を有し、
前記第２配列は、前記随伴されたデータフローノードに影響を与える他の変数を同定する情報を有し、
前記他の変数は前記データフローノードのその他のノードに随伴されており、
前記制御フロー図を横断処理し、前記ノードの夫々において、前記情報に応じて、前記データフロー図の対応するデータフローノードの前記第２配列内に前記情報を設定するステップと、
前記情報を設定する前記ステップに応答して、前記データフローノードと前記他のデータフローノードと夫々繋ぐ前記データフローエッジを生成するステップと、
を有する、
ことを特徴とする請求項１に記載の方法。
【請求項１３】
前記変数は要素変数からなり、  前記要素変数は要素名を有し、
ここにおいて前記グラフを生成するステップは、
ノードから構成される制御フロー図を生成するステップと、
ここに前記各ノードは前記制御フロー図上で位相順序を有し、
前記ノードの一部は少なくとも１つの子ノードを有し、
前記制御フロー図より制御依存ノードを有する制御依存図を導出するステップと、
を有し、
ここにおいて前記制御依存図を導出するステップは、
前記制御フロー図の前記ノードに対し先天性値を与えるステップと、
ここに前記先天性値は、前記少なくとも１つの子ノードによって平等に継承値として継承され、
前記各ノードで継承値の合計が前記先天性値に等しい時は前記継承値を削除するステップと、
前記ノードの前記継承値の各継承記録を維持するステップと、
ここに前記継承記録は前記各継承値の継承元を示す前記ノードの同定番号を含み、
前記制御フロー図の入口ノードを同定するステップと、
前記ノードの最初の１組のノード群を同定するステップと、
ここに前記最初の１組のノード群の構成ノードは前記継承値を持たず、
夫々第１エッジを最初の１組のノード群と前記入口ノードとの間に確立するステップと、
前記ノードの第２組のノード群を同定するステップと、
ここに前記第２組のノード群の構成ノードは前記継承値を有し、
前記継承記録において、前記第２組のノード群の中で継承元ノードの近接位相順序を設定するステップと、
第２のエッジを前記第２組のノード群の前記構成ノードと前記最接位相順序の前記継承元ノードとの間に夫々生成するステップと、
を有する、
ことを特徴とする請求項１に記載の方法。
【請求項１４】
コンピュータプログラムのセキュリティ脆弱性を検出するためのデータ処理システムであって、
前記コンピュータプログラムの命令を内蔵する記憶装置と、
入出力装置と、
前記記憶装置にアクセスし前記命令を読む演算処理装置（１２）と、
からなり、
前記命令は、前記演算処理装置に対し、
分析対象の前記コンピュータプログラムのソースコード（１６）を前記入出力装置経由で受け取るようにさせ、
ここに前記ソースコードはコード要素と文からなり、
前記文の少なくとも一部は変数を参照し、    
前記ソースコードのオブジェクト指向モデルを生成するようにさせ、
ここに前記コード要素は夫々オブジェクトを表し、  
前記モデルを使用して、前記コンピュータプログラムを表わす１つのグラフ（１４４，１８４，２１８）を生成させ、
既定のコードグラフ問合せ言語で、セキュリティ脆弱性に関する１つの問合せを受け取らせ、
前記問合せに反応して前記グラフを分析し、前記セキュリティ脆弱性を有する前記ソースコードの１つの部分を同定させ、そして
前記セキュリティ脆弱性を報告させる、
ことを特徴とするシステム。
【請求項１５】
コンピュータプログラムのセキュリティ脆弱性を検出するためのコンピュータソフトウエァ製品であって、
コンピュータプログラム命令を保管する接触可能なコンピュータ読込み可能媒体を有し、
前記命令は、コンピュータに読込まれた場合、コンピュータに対し、
分析対象の前記コンピュータプログラムのソースコード（１６）を前記入出力装置経由で受け取るようにさせ、
ここに前記ソースコードはコード要素と文からなり、
前記文の少なくとも一部は変数を参照し、
前記ソースコードのオブジェクト指向モデルを生成するようにさせ、
ここに前記コード要素は夫々オブジェクトを表し、  
前記モデルを使用して、前記コンピュータプログラムを表わす１つのグラフ（１４４，１８４，２１８）を生成させ、
既定のコードグラフ問合せ言語で、セキュリティ脆弱性に関する１つの問合せを受け取らせ、
前記問合せに反応して前記グラフを分析し、前記セキュリティ脆弱性を有する前記ソースコードの１つの部分を同定させ、そして
前記セキュリティ脆弱性を報告させる、
ことを特徴とする製品。