JP2013536522A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2013536522A5 JP2013536522A5 JP2013525394A JP2013525394A JP2013536522A5 JP 2013536522 A5 JP2013536522 A5 JP 2013536522A5 JP 2013525394 A JP2013525394 A JP 2013525394A JP 2013525394 A JP2013525394 A JP 2013525394A JP 2013536522 A5 JP2013536522 A5 JP 2013536522A5
- Authority
- JP
- Japan
- Prior art keywords
- code
- sequence
- sub
- group
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000005065 mining Methods 0.000 claims description 36
- 238000010606 normalization Methods 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 23
- 238000010586 diagram Methods 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 15
- 230000000875 corresponding Effects 0.000 claims description 9
- 238000010276 construction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000001131 transforming Effects 0.000 description 1
- 230000037303 wrinkles Effects 0.000 description 1
Images
Description
本発明は、一般的にコンピュータソフトウェアに関し、特にコンピュータソフトウェアにおけるセキュリティ侵害の自動検知に関するものである。
(関連出願の参照)
本出願は2010年8月24日に出願された米国暫定出願61/376,260(特許文献1)の恩恵を要求し、それはここに参照として採り入れられる。
本出願は2010年8月24日に出願された米国暫定出願61/376,260(特許文献1)の恩恵を要求し、それはここに参照として採り入れられる。
アプリケーションレベルのソフトウェアコードはセキュリティが脆弱な傾向がある。コードの各区画は、実行されると外部入力を許容し、不適切又は不望の行動を引き起こし、それはデータの機密性やシステムの適切なオペレーションを損なう。脆弱性の例としては、バッファオーバーフロー、競合状態、特権エスカレーションを含む。これらの脆弱性はプログラマーにより意図的に、又は不適切なプログラミング作業に起因して偶然に、導入される。
ソフトウェア脆弱性の検知方法は既存技術で公知である。例えばここに参照として採り入れられる特許文献2はアプリケーションレベルの脆弱性に対し自動的にソースコードを分析するツールを記載している。そのツールのオペレーションは統計分析に基づくが、しかし他の種々の技術、例えば難読化コードの取り扱い方法も利用している。
シークエンスマイニングは構造化データマイニングの一種であり、値がシークエンスに存在するデータ事例の中から統計的に関連性のあるパターンを発見することに関している。それはシンボルのストリング及びアイテム(例えばワード、フレーズ、タグ又はイベント)の規則正しいシークエンスの両方に適用可能である。
様々なシークエンスマイニングのアルゴリズムが既存技術で知られている。例えば良く使用されるGSPアルゴリズムは非特許文献1に記載され、それはここに参照として採り入れられる。またSPADEとして知られる他のアルゴリズムは非特許文献2に記載され、それはここに参照として採り入れられる。さらに他の1つの検査プログラムはPrefixSpanであり、それは非特許文献3に記載され、それはここに参照として採り入れられる。更なるアルゴリズムは前述の特許文献1に記載されている。
Srikand氏及びAgrawal氏共著 「シークエンシャルパターンのマイニング:一般化とパフォーマンス向上」EDBT‘96第5回データベース拡張に関する国際会議会報:データベース技術の進歩(シュプリンガー出版、1996)3−17頁
Zaki氏著「SPADE:頻発シークエンスのマイニングのための効率的アルゴリズム」マシンラーニング42(2001)、31−60頁
Pei氏他著「パターン成長によるシークエンシャルパターンのマイニング:PrefixSpanアプローチ」IEEE知識及びデータエンジニアリングに関する報告書 16:10(2004)1424−1440頁
以下に記載される本発明の実施形態はシークエンスマイニング技術をソフトウェアソースコード内の脆弱性を示すパターンを発見するために適用する。
従って本発明の1実施形態によれば、ソフトウェアコード分析の方法であって、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体をコンピュータにより自動的に処理するステップと;共通パターンの基準からの偏移を含むグループ内のシークエンスを発見するステップと;そして偏移をソフトウェアソースコード内の潜在的脆弱性として報告するステップと;を有することを特徴とするソフトウェアコード分析の方法が提供される。
従って本発明の1実施形態によれば、ソフトウェアコード分析の方法であって、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体をコンピュータにより自動的に処理するステップと;共通パターンの基準からの偏移を含むグループ内のシークエンスを発見するステップと;そして偏移をソフトウェアソースコード内の潜在的脆弱性として報告するステップと;を有することを特徴とするソフトウェアコード分析の方法が提供される。
開示された実施形態ではソフトウェアソースコードの本体を処理するステップは、コードのドキュメントオブジェクトモデル(DOM)を生成するステップと、そしてDOMをシークエンスの識別に適用するステップを有する。
ある実施形態では、ソフトウェアソースコードの本体を処理するステップは、コードを正規化するステップと、そして正規化されたコード内でシークエンスを識別するステップを有する。典型的にコードを正規化するステップは、コード内に所定のタイプのエンティティのネームを発見するステップと、そしてコードに出現するネームをタイプのインジケータと置き換えるステップを有する。ネームがタイプのインジケータと置き換えられたエンティティは、変数及び/又は定数からなってよい。さらにあるいは、コードがオブジェクト指向言語で書かれている場合、ネームが置き換えられた前記エンティティは、クラス及び/又はメンバーからなる。
ある実施形態では、ソフトウェアソースコードの本体を処理するステップは、コードを正規化するステップと、そして正規化されたコード内でシークエンスを識別するステップを有する。典型的にコードを正規化するステップは、コード内に所定のタイプのエンティティのネームを発見するステップと、そしてコードに出現するネームをタイプのインジケータと置き換えるステップを有する。ネームがタイプのインジケータと置き換えられたエンティティは、変数及び/又は定数からなってよい。さらにあるいは、コードがオブジェクト指向言語で書かれている場合、ネームが置き換えられた前記エンティティは、クラス及び/又はメンバーからなる。
またさらにあるいは、コードを正規化するステップは、コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの制御ブロックはコードのラインを有し、そして、コードのラインを、制御ブロックのタイプに対し事前定義されたフォーマットの、コードのラインに対応する一連のタグと置き換えるステップを有する。
開示された実施形態では、ソフトウェアコードの本体を処理するステップは、コードを一連のタグに変換するステップと、そしてシークエンスマイニングアルゴリズムを適用して一連のタグ内に出現するグループ内のシークエンスを識別するステップを有する。
開示された実施形態では、ソフトウェアコードの本体を処理するステップは、コードを一連のタグに変換するステップと、そしてシークエンスマイニングアルゴリズムを適用して一連のタグ内に出現するグループ内のシークエンスを識別するステップを有する。
一般的に、シークエンスのグループは、基準と、基準からのシークエンスのそれぞれの距離の分布により特徴付けられる推計学的なグループであり、ここにおいて偏移を含むシークエンスを発見するステップは、基準からのそれぞれの距離が事前定義された閾値を超える1つ以上のシークエンスを発見するステップを有する。シークエンス内の偏移は例えば、ソフトウェアコード内の欠落したオペレーション、要注意オペレーションを実行する許可のチェック不履行、規定の呼び出しシークエンスの順守違反、コード内に残されたバックドア、又はコード内で実行されるビジネスロジックの誤りを含む。
本発明の1実施形態によれば、ソフトウェアソースコードの本体を記憶するように構成されたメモリと、そして共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードを自動的に処理し、共通パターンの基準からの偏移を含むグループ内のシークエンスを発見し、そして偏移をソフトウェアソースコード内の潜在的脆弱性として報告するように構成されるプロセッサと、を有することを特徴とするソフトウェアコード分析用の機器器がさらに提供される。
本発明の1実施形態によればさらに、コンピュータソフトウェア製品であって、プログラム命令が記憶されるコンピュータ読み取り可能媒体を有し、その命令はコンピュータに読み取られた時に、コンピュータに対し、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体を処理し、共通パターンの基準からの偏移を含むグループ内のシークエンスを発見し、そしてその偏移をそのソフトウェアソースコード内の潜在的脆弱性として報告するようにさせる、 ことを特徴とするコンピュータソフトウェア製品がさらに提供される。
上記の特許文献2で記載されるような従来技術で公知のソフトウェア分析ツールでは、ユーザがセキュリティ侵害を便利に探索し識別できるような方法で、ソフトウェアコードの構造と流れを抽出し、分析する。しかしこれらのツールは、ユーザが何を探すか知っている、即ち、構造と流れの問題のあるパターンが事前に定義可能であり、そしてその後に問題のあるパターンがコード構造内で探索可能であることを前提としている。
以下で記述される本発明の実施形態は、コード内の潜在的に問題のあるパターンを、経験的定義を必要とせず、さらにそのパターンに関する知識すらなくても、自動的に発見することにより、この限界を克服する。開示される方法は、既存技術で公知のシークエンスマイニングツールを使用するが、しかしそれはコンピュータソフトウェアの分析にはいまだかつて使用されたことが無い。一般的には、シークエンスマイニングは、限定されたアルファベット又はコンステレーションから取り出され、そして一定のフォーマットに編成されたシンボル又はタグのシークエンスに対し最も効果を発揮する。従って以下に開示される実施形態では、シークエンスマイニングが適用される以前にソフトウェアコードは正規化されている−事前設定された形式の、対応するタグのシークエンスに変換されている。本特許出願及び請求項においては、「タグ」とはテキスト形式のラベルを意味する。
以下に記載される実施形態では、コンピュータはシークエンスマイニングを使用して自動的にソフトウェアソースコードの本体を処理し、それぞれの共通パターンにより特徴付けられる1つ以上の命令シークエンスのグループを識別する。パターンは事前に定義される必要はなく、むしろコード(又は具体的には、対応するタグシークエンス)の統計的特性に基づいて識別される。このシークエンスマイニングにより識別されたシークエンスグループは一般的に推計学的グループであり、それはそのグループ内のシークエンスは統計的に類似しているが同一ではないことを意味する。このようなグループは、通常、グループ内の平均的パターンに相当する1つの基準、及びそれぞれのシークエンスの基準からの距離の分布により特徴付けられる。ここで「距離」とは一般的にレーベンシュタイン距離のような編集距離を意味し、それは所定のシークエンス内のタグと基準の間の(挿入、削除及び置き換えのような)相違の数を示す。
可能性のある脆弱性を識別するため、コンピュータは基準から有意に偏移したグループ内シークエンス、即ち基準からの距離が一定の閾値(ユーザにより設定されてもよい)を超えるシークエンスを発見する。これらの偏移は場合によっては、要注意オペレーションの実行前の適切な許可チェックの不履行;規定された呼び出しシークエンスの順守違反;プログラマーがコード内に留置したバックドア;又はコード内に提供されたビジネスロジックの誤り;などの脆弱性を示す。コンピュータはグループの基準からの偏移をソフトウェアソースコード内の潜在的脆弱性として報告する。
本発明のある実施形態では、正規化プロセスは、コード内のシークエンス間のあるタイプの相違を「滑らかにする」ステップ、即ちコード内に存在する同じタイプの用語又は構造の多くの変化形を1つの共通の用語又は構造に置き換えるステップを含む。このプロセスはコードを一般化し、それにより類似のシークエンスがさらにほぼ同一となり、シークエンスマイニングにより識別可能になる。一般化のレベルは、脆弱性を示唆する可能性のある相違を隠すことなく、意味のあるシークエンスグループの発見を促進するように選択される。本願の発明者は、例えば、変数、定数、クラス及び/又はメンバーなどの所定のタイプのエンティティのネームを発見し、そしてコード内に現れているそのネームをそのタイプの1つのインジケータと置き換えることにより、効果的な正規化が実行可能であることを発見した。さらにあるいは、制御ブロック内のコードのラインが、その制御ブロックのタイプに対し事前定義された1つのフォーマットの一連のタグに置き換えられてもよい。
ここに記載される実施形態は、説明のため、ある特定の正規化技術を参照しているが、他の適用可能な正規化技術も本特許出願を読んだ当業者には自明であり、本発明の範囲内であると見做されるべきである。正規化技術およびシークエンスマッピングアルゴリズムの適切な選択は分析対象のコードの性質及び関係する脆弱性に依存し、その選択は本発明の開示に基づいて、それぞれのケースの当業者が決定可能である。
(システムと方法の記述)
本発明の1実施形態による、ソースコード分析のシステム20及び方法を概略示す図1及び図2を参照する。図1はシステムのブロック図であり、一方図2は方法の主要ステップを示す流れ図である。システム20の構成要素は上記の特許文献2で記載されるソースコード分析システムのそれと類似しており、それに本特許出願で記載されるシークエンスマイニング関連の特性が追加されている。簡略化のため、ここではこれらの追加された特性についてのみ記載する。
本発明の1実施形態による、ソースコード分析のシステム20及び方法を概略示す図1及び図2を参照する。図1はシステムのブロック図であり、一方図2は方法の主要ステップを示す流れ図である。システム20の構成要素は上記の特許文献2で記載されるソースコード分析システムのそれと類似しており、それに本特許出願で記載されるシークエンスマイニング関連の特性が追加されている。簡略化のため、ここではこれらの追加された特性についてのみ記載する。
システム20はプロセッサ22を有し、それは一般的に汎用または特殊用途のコンピュータ内に配置され、以下に記載される機能を実行するためソフトウェアでプログラムされる。ソフトウェアはプロセッサ22に電子形態で、例えばネットワーク経由でダウンロードされてもよい。さらにあるいは、磁気、光学又は電子メモリのような接触可能な非一過性コンピュータ読み取り可能媒体の上に提供され及び/又は記憶されてもよい。またさらにあるいは、プロセッサ22の機能の少なくとも幾つかは適切なプログラム可能ロジック回路により実行されてもよい。
プロセッサ22はソースコード23の本体を分析のために受け取る。プロセッサはコード分析及び正規化モジュール24(通常ソフトウェアモジュールとして実現される)を起動し、シークエンスマイニングの準備としてコードを事前処理する。モジュール24はコード分析ステップ40において、ドキュメントオブジェクトモデル(DOM)及びコードの流れ図を獲得する。流れ図はデータ流れ図(DFG)、制御流れ図(CFG)及び制御依存図(CDG)を含んでもよい。DOMおよびこれらの図の派生物は、例えば特許文献2に記載されている。プロセッサ22は以降のデータへのアクセスを容易にするため、通常はデータベースの形態でメモリ26内に分析結果を記憶する。
下記の付属AのリストIは、単純な関数のソースコードリストを示し、それは本発明の1実施形態によるDOM構築とその後の正規化を示すのに使用される。結果として得られるDOMが付属AのリストIIに示される。残りのリストは以下に記述するようにDOMの正規化における後続の段階を示す。
モジュール24は正規化ステップ42でソースコードを正規化する。正規化はコード自体又はDOM(又は両方)に適用されてよい。そして単純化と完全性のためこれら全ての正規化の形式はここではコードの正規化と呼ばれる。「正規化されたコード」とはソースコード自体又はDOMを含むソースコード派生物の正規化された形式を言う。あるいは、流れ図の要素もシークエンスマイニング用に正規化されてもよい。
シークエンスマイニングモジュール28は、シークエンスマイニングステップ44において、正規化されたコードをスキャンし推計学的シークエンスパターンを発見する。モジュール28は従来技術で公知のいかなる適合するシークエンスマイニングアルゴリズム又はアルゴリズムの組合せを使用してもよい。このようなアルゴリズムの例には、SPAM,LAPIN,CloSpanおよびBIDEのほか、上記(背景技術)の項で述べたGSP,SPADE及びPrefixSpanを含む。(これらアルゴリズムの多くを実行するJava(登録商標)コードがSPMFウェブサイトwww.philippe−fournier−viger.com/spmf.からダウンロード可能である。)一般的にステップ44においてモジュール28はステップ40とステップ42で生成された正規化されたDOMを処理する。さらにあるいは、モジュール28はソースコード及び/又は1つ以上の流れ図を処理してもよい。
シークエンスマイニングモジュール28は共通のパターンで特徴付けられる命令シークエンスグループを識別する。システム20のユーザは一般的にモジュールが発見すべきグループの半径、即ち1つの所与のグループ内のメンバー間の最大距離(適切な距離尺度を使用して)を設定する。このようなそれぞれのグループの中で、モジュール28は、グループの共通パターンの基準から所定の閾値、これも同様にユーザにより設定されてもよいが、を超えて偏移している1つ以上のシークエンスを発見してもよい。下記の付属Bはここで使用可能なシークエンスマイニング技術のさらなる詳細と事例を示す。
モジュール28は、報告ステップ46において、これらの偏移をデータディスプレイなどの出力デバイス30経由で報告する。レポートは、脆弱性を理解し補修するという仕事をシステム20のユーザに任せて、単にソースコード内で潜在的脆弱性が疑われるコードセグメントの識別からなってもよい。さらにあるいは、モジュール28は、偏移シークエンス内の特定の瑕疵を指摘するため、偏移パターンをさらに分析してもよい。
(実施の詳細と事例)
正規化ステップ42はコードに対する多くの異なるオペレーションを通常含む。例えば、コードのネーム、値、アサインメント及び条件は以下のように正規化されてもよい:
・ローカル変数名はそれらのタイプに置き換えられる。
・定数は一般的にタイプ情報付きのCONSTとラベル付けされる。
・アサインメントは関数呼び出しから除外される。
・メソッド呼び出しは、アサインメント、条件、及び他の制御コマンドから除外される。(例えば、図5のシークエンス72の「Rect=Item.GetBounds():Rect」参照)
・関係演算子は正規化される。例えば:
付属AのリストIIIは上記の最初の2つの正規化オペレーション適用後のリストIIのDOMを示す。
正規化ステップ42はコードに対する多くの異なるオペレーションを通常含む。例えば、コードのネーム、値、アサインメント及び条件は以下のように正規化されてもよい:
・ローカル変数名はそれらのタイプに置き換えられる。
・定数は一般的にタイプ情報付きのCONSTとラベル付けされる。
・アサインメントは関数呼び出しから除外される。
・メソッド呼び出しは、アサインメント、条件、及び他の制御コマンドから除外される。(例えば、図5のシークエンス72の「Rect=Item.GetBounds():Rect」参照)
・関係演算子は正規化される。例えば:
正規化処理の他の部分として、コード内の制御ステートメントが1つのフォーマットに作り直され、それにより各制御ブロックが一貫したフォーマットのタグシークエンスとして表現される。例えばつぎの形の「if」ステートメント:
は次のフォーマットのタグシークエンスとして作り直される:
(図5のシークエンス72のタグシークエンス「IF..ELSE..END−IF」で示されるように)。
もう1つの事例として、図3は本発明の1実施形態による、「for」制御ステートメント48をタグ52のシークエンス50に変換する方法を概略示すブロック図である。図の例においてステートメント48:
は対応するタグシークエンス50として作り直される:
図4は本発明の1実施形態による、コードセグメント60をタグシークエンス62に変換する方法を概略示すテーブルである。図の矢印は、コードのラインと正規化後にそれらを置き換えるタグとの間の対応関係を示す。詳細には、コードセグメント60は「while(<cond>)<body>」という一般形の「while」ループ64を有する。ループ64は以下のフォームのタグのサブシークエンス66に作り直される:
シークエンス62はまた「if」ステートメントの正規化及び前述のネームと定数のタイプへの変換を示している。例えば、セグメント60の変数表現「int d=0」はシークエンス62のタグ「int=ZERO」に変換される。
図に示される事例は実際のソースコードの正規化を示すが、実務的にはこれらの正規化技術は通常、ソースコードから生成されるDOMに適用される。制御ブロックをタグシークエンスに変換することは、当初のDOMの階層構造を平坦にする効果が有る。リストIVはリストII,IIIのDOMの制御ステートメントにこの種の平坦化を適用する効果を示す。
図5は本発明の1実施形態による、コードセグメント70を正規化されたクラスとメンバーネームを有するタグシークエンス72に変換する方法を概略示すテーブルである。この種の正規化は特にオブジェクト指向プログラミング言語で書かれたコードの正規化に適用可能である。このリストはたまたま「if」ステートメントの平坦化を示している。
クラスネームに対する正規化ルールは以下を含む(この内幾つかは図5に示される):
・グローバルに定義された(パブリック)クラスはネームで使用される。(例えば、シークエンス72の「Item.Getbound...」)
・パブリック及び保護内部クラスはネームで使用される。プライベート内部クラスのネームは通常タグ「CLASS」と「MEMBER」により置換される。
・メソッド−ローカルクラスのネームはタグ「CLASS」と「MEMBER」により置換される。
・プライベート内部クラスのメンバーは(それらの可視性に関わらず)対応する外部クラスのメンバーとして取り扱われる。
・グローバルに定義された(パブリック)クラスはネームで使用される。(例えば、シークエンス72の「Item.Getbound...」)
・パブリック及び保護内部クラスはネームで使用される。プライベート内部クラスのネームは通常タグ「CLASS」と「MEMBER」により置換される。
・メソッド−ローカルクラスのネームはタグ「CLASS」と「MEMBER」により置換される。
・プライベート内部クラスのメンバーは(それらの可視性に関わらず)対応する外部クラスのメンバーとして取り扱われる。
メンバーネームに対する正規化ルールは以下を含む(この内幾つかは図5に示される):
・パブリックメンバーネームはそれぞれのタイプ情報に付随するネームにより置換される。(例えば、示されるようにタグ「Rect=Item.GetBounds():Rect」により)
・保護メンバーネームはそれぞれのタイプ情報に付随するネームにより置換されてもよい。
・プライベートメンバーのネームはそれぞれのタイプ情報が付随したタグ「CLASS」と「MEMBER」により置換される。
・所与のネームが多相性の場合は、全ての後継に亘って一般化するため基本タイプが使用されてもよい。
・パブリックメンバーネームはそれぞれのタイプ情報に付随するネームにより置換される。(例えば、示されるようにタグ「Rect=Item.GetBounds():Rect」により)
・保護メンバーネームはそれぞれのタイプ情報に付随するネームにより置換されてもよい。
・プライベートメンバーのネームはそれぞれのタイプ情報が付随したタグ「CLASS」と「MEMBER」により置換される。
・所与のネームが多相性の場合は、全ての後継に亘って一般化するため基本タイプが使用されてもよい。
一度上記の正規化ステップがソフトウェアソースコード由来のDOMに実行されると、DOMは当初の階層的機能的構造に替わってタグシークエンスに実質的に平坦化される。付属AのリストVはこの種の完全に平坦化されたDOMを示す。
本願の発明者は、正規化されたDOMに対するシークエンスマイニングが以下の事例を含む(しかしそれに限定されないが)種々のコード脆弱性を検知するのに有効であることを発見した:
・オペレーションの喪失(例えばキャッチブロックのロギング)
キャッチブロック(通常Java(登録商標)における例外処理に使用される)は通常一定のロギングオペレーションを含む。開発者は時々ロギングオペレーションの使用を忘れる。シークエンスマイニングはタグの正常なシークエンス「Try−>SensitiveOperation−>Catch−>Log」を識別し、従ってこのルールを破るコード内のシークエンスを発見してもよい。
・オペレーションの喪失(例えばキャッチブロックのロギング)
キャッチブロック(通常Java(登録商標)における例外処理に使用される)は通常一定のロギングオペレーションを含む。開発者は時々ロギングオペレーションの使用を忘れる。シークエンスマイニングはタグの正常なシークエンス「Try−>SensitiveOperation−>Catch−>Log」を識別し、従ってこのルールを破るコード内のシークエンスを発見してもよい。
・条件テストを必要とする関数(例えば、ユーザ認証)
多くの場合、要注意オペレーションはユーザが認証された又は特定の許可を与えられた後にのみ呼び出されるべきである。シークエンスマイニングは正常なシークエンス「IfUsersAuthenticated−>DoSensitiveOperation」を識別し、そしてそれによってユーザ許可の事前チェック無く「要注意オペレーション」が呼び出されたシークエンスを発見する。
多くの場合、要注意オペレーションはユーザが認証された又は特定の許可を与えられた後にのみ呼び出されるべきである。シークエンスマイニングは正常なシークエンス「IfUsersAuthenticated−>DoSensitiveOperation」を識別し、そしてそれによってユーザ許可の事前チェック無く「要注意オペレーション」が呼び出されたシークエンスを発見する。
・共通呼び出しシークエンス(時々破られる)
ウェブサイトのクロスサイトスクリプティング脆弱性は、悪意のクライアント側スクリプトを他のユーザが閲覧するウェブページに注入することを許す。この問題を軽減するためヘルパー関数(.NET環境におけるHTMLEncodeのような)を呼び出し、1人のユーザにより入力されたストリングをそのユーザに応答する前に「修正」することが一般的である。シークエンスマイニングはヘルパー関数を正しい順番で呼び出す正確なパターンを学習し、そしてこの順番からの偏移を識別するように使用可能である。
ウェブサイトのクロスサイトスクリプティング脆弱性は、悪意のクライアント側スクリプトを他のユーザが閲覧するウェブページに注入することを許す。この問題を軽減するためヘルパー関数(.NET環境におけるHTMLEncodeのような)を呼び出し、1人のユーザにより入力されたストリングをそのユーザに応答する前に「修正」することが一般的である。シークエンスマイニングはヘルパー関数を正しい順番で呼び出す正確なパターンを学習し、そしてこの順番からの偏移を識別するように使用可能である。
・バックドア
プログラマーは多くの場合ユーザ許可がチェックされる場所にコード内バックドアを設置する。例えばステートメント:「If(UserIsAdministrator or Username=‘MatySIMAN’)はプログラマーMaty Siman用のバックドアを作るのに使用可能である。シークエンスマイニングは、正確な許可シークエンスを学習し、そしてコード内にバックドアが残された場合に発生する偏移を識別するために使用可能である。
プログラマーは多くの場合ユーザ許可がチェックされる場所にコード内バックドアを設置する。例えばステートメント:「If(UserIsAdministrator or Username=‘MatySIMAN’)はプログラマーMaty Siman用のバックドアを作るのに使用可能である。シークエンスマイニングは、正確な許可シークエンスを学習し、そしてコード内にバックドアが残された場合に発生する偏移を識別するために使用可能である。
・ビジネスロジックの喪失
ビジネスプロセスは多くの場合、パラメータに対しアクションを起こす前に、そのパラメータが適切な領域にあるかの認証を必要とする。例えば、顧客にある商品をある価格で購入したことに対し請求を起こす前に、商品の価格と数量が正の値であることが認証されなくてはならない(そうでなければ顧客は請求されるのではなくクレジットを与えられてしまうからである)。シークエンスマイニングは、パラメータ認証関数を含む正常な販売オペレーションのパターンを学習し、そしてその後適切な認証が呼び出されなかったケースを識別する。
ビジネスプロセスは多くの場合、パラメータに対しアクションを起こす前に、そのパラメータが適切な領域にあるかの認証を必要とする。例えば、顧客にある商品をある価格で購入したことに対し請求を起こす前に、商品の価格と数量が正の値であることが認証されなくてはならない(そうでなければ顧客は請求されるのではなくクレジットを与えられてしまうからである)。シークエンスマイニングは、パラメータ認証関数を含む正常な販売オペレーションのパターンを学習し、そしてその後適切な認証が呼び出されなかったケースを識別する。
上記の実施形態は事例として引用され、そして本発明は上記で特に図示され記載されたものに限定されない。むしろ本発明の範囲は、上記の記載を読んだ当業者が想起するであろう、既存技術に開示されない、ここに記載された種々の特徴の組合せ及びサブ組合せの両方及び変化形や変更を含む。
(付属B−シークエンスマイニングの詳細と実施例)
ソフトウェアコードから得られたタグシークエンスのシークエンスマイニングの準備として、システム20のオペレータは3つの「定数」(パラメータ値)を定義する:
A.「サポート」値−「共通」シークエンスとして見做されるための最小出現回数。
B.「最小長さ」―受容可能な最短シークエンス(これがないと、多くの単一アイテムのシークエンスが「共通」と見做される。)
C.「コンフィデンス」−(X−>Y)のコンフィデンスとは:我々がサブシークエンスXに出会う場合に、Yに出会う確立である。例えば、我々がストリング「abcdefg」に出会うと、それに「hij」が続く可能性が高い−従ってコンフィデンスが高い(例えば50%)。
以下の事例では我々はサポートレベル「60」、最小長さ「3」そしてコンフィデンス「50%」と設定する。
ソフトウェアコードから得られたタグシークエンスのシークエンスマイニングの準備として、システム20のオペレータは3つの「定数」(パラメータ値)を定義する:
A.「サポート」値−「共通」シークエンスとして見做されるための最小出現回数。
B.「最小長さ」―受容可能な最短シークエンス(これがないと、多くの単一アイテムのシークエンスが「共通」と見做される。)
C.「コンフィデンス」−(X−>Y)のコンフィデンスとは:我々がサブシークエンスXに出会う場合に、Yに出会う確立である。例えば、我々がストリング「abcdefg」に出会うと、それに「hij」が続く可能性が高い−従ってコンフィデンスが高い(例えば50%)。
以下の事例では我々はサポートレベル「60」、最小長さ「3」そしてコンフィデンス「50%」と設定する。
コードの本体が以下のテーブルに示されるシークエンスを含むとする:コードシークエンス「f1();f2();f3();」はコード内に80回現れ;シークエンス「f1();f4();f2();f3();」は20回現れ;以下同様:
これらのシークエンスを処理するため、シークエンスマイニングモジュール28は最初にそれぞれの(サブ)シークエンスが出現する回数を発見する。モジュールは単一アイテムシークエンスから始めてもよい:
アプリオリ法則によれば、ある1つのシークエンスはそのサブシークエンスより多い回数出現することはできない。(例えば、F5()を含むあるシークエンスは、F5()自体より多い回数出現できない。)従って、モジュール28は我々の定義したサポートレベル(60)を満たない全てのサブシークエンスを除外することができ、以下が残る:
ここでモジュール28は、上記のアイテムに基づいて可能な全ての2アイテムシークエンスを組み立てる。ここでは:
A.順番は重要である。
B.2つのアイテムは隣接する必要はない。
回数「ゼロ」を除外すると以下が得られる:
A.順番は重要である。
B.2つのアイテムは隣接する必要はない。
我々は最小長さを「3」と定義したが上記の表はまだ長さ「2」なので、モジュール28はシークエンス構築ステップを再び繰り返して以下の表を得る:
従って、サポートレベルと最小長さの基準を満たす唯一の共通シークエンスはf1(),f2(),f3()である。
Claims (35)
- コンピュータによるソフトウェアコード分析の方法であって、
前記コードの流れ図を生成するため、ソフトウェアソースコードの本体をコンピュータにより自動的に正規化するステップと、
ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
前記流れ図の前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記流れ図にシークエンスマイニング手法を適用するステップと、
ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと;
前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスをプロセッサにより発見するステップと;そして
前記閾値を超えて偏移するサブシークエンスを前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
を有し、
ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
ことを特徴とするソフトウェアコード分析の方法。 - 前記ソフトウェアソースコードの本体を正規化するステップは、前記コードのドキュメントオブジェクトモデル(DOM)を生成するステップを有する、ことを特徴とする請求項1に記載の方法。
- 前記シークエンスマイニング手法を適用するステップは、ユーザ設定の半径より大きくない最大差異を有する、命令のサブシークエンスの1つの推計学的グループを識別するステップを有する、ことを特徴とする請求項1に記載の方法。
- 前記コードを正規化するステップは、前記コード内で所定のタイプのエンティティのネームを発見するステップと、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項1に記載の方法。
- ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
- 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプの前記インジケータと置き換えられる前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
- 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項1に記載の方法。
- 前記シークエンスマイニング手法を適用するステップは、GSP、SPADEまたはPrefixSpanを適用するステップを有する、
ことを特徴とする請求項1に記載の方法。 - 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落したオペレーションを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
- 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
- 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守違反を含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
- 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項1−7のいずれかに記載の方法。
- 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
- ソフトウェアコード分析用の機器であって、
ソフトウェアソースコードの本体を記憶するように構成されたメモリと、そして
プロセッサと、を有し、
前記プロセッサは、
前記コードの流れ図を生成するため、前記ソフトウェアソースコードを自動的に正規化するステップと、ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記ソースコードの前記流れ図にシークエンスマイニング手法を適用するステップと、ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと;
前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスを発見するステップと;そして
前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
を実行するように構成され、
ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
ことを特徴とするソフトウェアコード分析用の機器。 - 前記プロセッサは、前記ソフトウェアソースコードの正規化において、前記コードのドキュメントオブジェクトモデル(DOM)を生成するように構成される、ことを特徴とする請求項14に記載の機器。
- 前記プロセッサは、前記コード内に所定のタイプのエンティティのネームを発見し、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるように構成される、ことを特徴とする請求項14に記載の機器。
- ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項16に記載の機器。
- 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプのインジケータと置き換えられる前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項16に記載の機器。
- 前記プロセッサは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップとにより、前記コードを正規化するように構成される、ことを特徴とする請求項14に記載の機器。
- 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
- 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
- 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守違反を含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
- 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項14−19のいずれかに記載の機器。
- 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
- プログラム命令が記憶されるコンピュータ読み取り可能媒体であって、
前記命令はコンピュータに読み取られた時に、コンピュータに対し、
前記コードの流れ図を生成するため、前記ソフトウェアソースコードの本体を正規化するステップと、ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記ソースコードの前記流れ図にシークエンスマイニング手法を適用するステップと、ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと、
前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスを発見するステップと;そして
前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
を実行するようにさせ、
ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
ことを特徴とするコンピュータ読み取り可能媒体。 - 前記命令は前記コンピュータに対し、前記ソフトウェアソースコードを正規化するステップにおいて、前記コードのドキュメントオブジェクトモデル(DOM)を生成するようにさせる、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
- 前記コードを基準化するステップは、前記コード内に所定のタイプのエンティティのネームを発見するステップと、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
- ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項27に記載のコンピュータ読み取り可能媒体。
- 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプのインジケータと置き換えられた前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項27に記載のコンピュータ読み取り可能媒体。
- 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
- 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
- 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
- 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守怠慢を含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
- 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
- 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37626010P | 2010-08-24 | 2010-08-24 | |
US61/376,260 | 2010-08-24 | ||
PCT/IB2011/053671 WO2012025865A1 (en) | 2010-08-24 | 2011-08-22 | Mining source code for violations of programming rules |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2013536522A JP2013536522A (ja) | 2013-09-19 |
JP2013536522A5 true JP2013536522A5 (ja) | 2015-10-15 |
JP5844809B2 JP5844809B2 (ja) | 2016-01-20 |
Family
ID=45722971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013525394A Active JP5844809B2 (ja) | 2010-08-24 | 2011-08-22 | プログラミングルール違反に対するソースコードマイニング |
Country Status (5)
Country | Link |
---|---|
US (1) | US9141806B2 (ja) |
EP (1) | EP2609506B1 (ja) |
JP (1) | JP5844809B2 (ja) |
IL (1) | IL224090A (ja) |
WO (1) | WO2012025865A1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2092424B1 (en) | 2006-10-19 | 2015-12-30 | Checkmarx Ltd. | Locating security vulnerabilities in source code |
US8869287B2 (en) * | 2012-12-31 | 2014-10-21 | International Business Machines Corporation | Hybrid analysis of vulnerable information flows |
US9569617B1 (en) * | 2014-03-05 | 2017-02-14 | Symantec Corporation | Systems and methods for preventing false positive malware identification |
US9361635B2 (en) * | 2014-04-14 | 2016-06-07 | Yahoo! Inc. | Frequent markup techniques for use in native advertisement placement |
US9454659B1 (en) | 2014-08-15 | 2016-09-27 | Securisea, Inc. | Software vulnerabilities detection system and methods |
US10599852B2 (en) | 2014-08-15 | 2020-03-24 | Securisea, Inc. | High performance software vulnerabilities detection system and methods |
US9824214B2 (en) | 2014-08-15 | 2017-11-21 | Securisea, Inc. | High performance software vulnerabilities detection system and methods |
CN106575337A (zh) * | 2014-08-20 | 2017-04-19 | 日本电信电话株式会社 | 漏洞发现装置、漏洞发现方法以及漏洞发现程序 |
CN104615542B (zh) * | 2015-02-11 | 2017-12-01 | 中国科学院软件研究所 | 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法 |
US9749345B2 (en) | 2015-04-22 | 2017-08-29 | International Business Machines Corporation | Reporting security vulnerability warnings |
US20170329691A1 (en) * | 2016-05-12 | 2017-11-16 | Synopsys, Inc. | Systems and methods for using semantic queries to analyze software |
US10339320B2 (en) | 2016-11-18 | 2019-07-02 | International Business Machines Corporation | Applying machine learning techniques to discover security impacts of application programming interfaces |
EP3401827A1 (en) | 2017-05-10 | 2018-11-14 | Checkmarx Ltd. | Method and system of static and dynamic data flow analysis |
EP3432563A1 (en) * | 2017-07-21 | 2019-01-23 | CL Schutzrechtsverwaltungs GmbH | Method for producing a machine-readable controlling and/or operating means |
US11036866B2 (en) | 2018-10-18 | 2021-06-15 | Denso Corporation | Systems and methods for optimizing control flow graphs for functional safety using fault tree analysis |
US11741196B2 (en) | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
CN110162963B (zh) * | 2019-04-26 | 2021-07-06 | 佛山市微风科技有限公司 | 一种识别过权应用程序的方法 |
JP7238996B2 (ja) * | 2019-08-09 | 2023-03-14 | 日本電気株式会社 | バックドア検査装置、方法及びプログラム |
EP3945441B1 (en) | 2020-07-28 | 2024-09-04 | Checkmarx Ltd. | Detecting exploitable paths in application software that uses third-party libraries |
US11934531B2 (en) | 2021-02-25 | 2024-03-19 | Bank Of America Corporation | System and method for automatically identifying software vulnerabilities using named entity recognition |
US12008364B1 (en) * | 2021-06-24 | 2024-06-11 | Amazon Technologies Inc. | Inconsistency-based bug detection |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2284250C (en) | 1989-09-01 | 2001-12-04 | Amdahl Corporation | Computer method for implementing a get instruction |
US5107418A (en) | 1990-06-11 | 1992-04-21 | Supercomputer Systems Limited Partnership | Method for representing scalar data dependences for an optimizing compiler |
US5485616A (en) | 1993-10-12 | 1996-01-16 | International Business Machines Corporation | Using program call graphs to determine the maximum fixed point solution of interprocedural bidirectional data flow problems in a compiler |
US5790858A (en) | 1994-06-30 | 1998-08-04 | Microsoft Corporation | Method and system for selecting instrumentation points in a computer program |
US5586328A (en) | 1994-10-21 | 1996-12-17 | Microsoft Corporation | Module dependency based incremental compiler and method |
US5701489A (en) | 1995-06-06 | 1997-12-23 | International Business Machines Corporation | System for partial in-line expansion of procedure calls during program compilation |
US5742811A (en) * | 1995-10-10 | 1998-04-21 | International Business Machines Corporation | Method and system for mining generalized sequential patterns in a large database |
US5875334A (en) | 1995-10-27 | 1999-02-23 | International Business Machines Corporation | System, method, and program for extending a SQL compiler for handling control statements packaged with SQL query statements |
US5778233A (en) | 1996-10-11 | 1998-07-07 | International Business Machines Corporation | Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program |
US5881290A (en) | 1996-12-09 | 1999-03-09 | Allen-Bradley Company, Llc | Industrial controller decompiler accommodating an expandable instruction set |
CA2200812A1 (en) | 1997-03-24 | 1998-09-24 | Archambault, Roch George | Optimizing compilation of pointer variables |
US5978588A (en) | 1997-06-30 | 1999-11-02 | Sun Microsystems, Inc. | Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
ES2340370T3 (es) | 1998-10-10 | 2010-06-02 | International Business Machines Corporation | Conversion de codigo de programa con traduccion reducida. |
US6442748B1 (en) | 1999-08-31 | 2002-08-27 | Accenture Llp | System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment |
US9525696B2 (en) * | 2000-09-25 | 2016-12-20 | Blue Coat Systems, Inc. | Systems and methods for processing data flows |
US7284274B1 (en) | 2001-01-18 | 2007-10-16 | Cigital, Inc. | System and method for identifying and eliminating vulnerabilities in computer software applications |
US7137103B2 (en) | 2001-03-08 | 2006-11-14 | International Business Machines Corporation | Coverage analysis of message flows |
US20030056192A1 (en) | 2001-05-24 | 2003-03-20 | Burgess Allen G. | Source code analysis system and method |
JP2003050722A (ja) | 2001-08-03 | 2003-02-21 | Sony Corp | プログラム解析システムとプログラム解析方法 |
US7392545B1 (en) | 2002-01-18 | 2008-06-24 | Cigital, Inc. | Systems and methods for detecting software security vulnerabilities |
US7051322B2 (en) | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US7398516B2 (en) | 2003-04-18 | 2008-07-08 | Ounce Labs, Inc. | Method and system for detecting race condition vulnerabilities in source code |
US20050015752A1 (en) | 2003-07-15 | 2005-01-20 | International Business Machines Corporation | Static analysis based error reduction for software applications |
CA2453714A1 (en) | 2003-12-19 | 2005-06-19 | Ibm Canada Limited - Ibm Canada Limitee | Method, system and product for indentifying and executing locked read regions and locked write regions in programming languages that offer synchronization without explicit means to distinguish between such regions |
JP3966518B2 (ja) | 2004-03-12 | 2007-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム解析装置、その解析方法及びプログラム |
US7447666B2 (en) * | 2004-04-09 | 2008-11-04 | The Boeing Company | System and method for analyzing a pattern in a time-stamped event sequence |
US7975306B2 (en) | 2004-06-04 | 2011-07-05 | Hewlett-Packard Development Company, L.P. | Apparatus and method for monitoring secure software |
EP1756708A4 (en) * | 2004-06-04 | 2010-04-07 | Fortify Software Inc | DEVICE AND METHOD FOR DEVELOPING, CHECKING AND MONITORING SAFE SOFTWARE |
US7565631B1 (en) | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
US7363616B2 (en) * | 2004-09-15 | 2008-04-22 | Microsoft Corporation | Systems and methods for prioritized data-driven software testing |
US8108826B2 (en) | 2004-09-29 | 2012-01-31 | Avaya Inc. | Code-coverage guided prioritized test generation |
US7555778B2 (en) | 2004-10-19 | 2009-06-30 | George Mason Intellectual Properties, Inc. | Minimum-cost network hardening |
EP1684151A1 (en) * | 2005-01-20 | 2006-07-26 | Grant Rothwell William | Computer protection against malware affection |
US7860842B2 (en) * | 2005-03-16 | 2010-12-28 | Oracle International Corporation | Mechanism to detect and analyze SQL injection threats |
US7698694B2 (en) | 2005-06-08 | 2010-04-13 | Cisco Technology, Inc. | Methods and systems for transforming an AND/OR command tree into a command data model |
US7526758B2 (en) | 2005-06-30 | 2009-04-28 | Microsoft Corporation | Execution failure investigation using static analysis |
US7849509B2 (en) | 2005-10-07 | 2010-12-07 | Microsoft Corporation | Detection of security vulnerabilities in computer programs |
US20070143759A1 (en) * | 2005-12-15 | 2007-06-21 | Aysel Ozgur | Scheduling and partitioning tasks via architecture-aware feedback information |
US7720835B2 (en) * | 2006-05-05 | 2010-05-18 | Visible Technologies Llc | Systems and methods for consumer-generated media reputation management |
US8365286B2 (en) * | 2006-06-30 | 2013-01-29 | Sophos Plc | Method and system for classification of software using characteristics and combinations of such characteristics |
US7971193B2 (en) | 2006-07-14 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | Methods for performining cross module context-sensitive security analysis |
EP2092424B1 (en) | 2006-10-19 | 2015-12-30 | Checkmarx Ltd. | Locating security vulnerabilities in source code |
US8468244B2 (en) * | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US20100011441A1 (en) * | 2007-05-01 | 2010-01-14 | Mihai Christodorescu | System for malware normalization and detection |
JP2009205269A (ja) * | 2008-02-26 | 2009-09-10 | Osaka Univ | 頻出変化パターン抽出装置 |
JP5011234B2 (ja) * | 2008-08-25 | 2012-08-29 | 株式会社日立情報システムズ | 攻撃ノード群判定装置およびその方法、ならびに情報処理装置および攻撃対処方法、およびプログラム |
US20100088770A1 (en) * | 2008-10-08 | 2010-04-08 | Raz Yerushalmi | Device and method for disjointed computing |
US8881288B1 (en) * | 2008-10-28 | 2014-11-04 | Intelligent Automation, Inc. | Graphical models for cyber security analysis in enterprise networks |
IL197477A0 (en) * | 2009-03-08 | 2009-12-24 | Univ Ben Gurion | System and method for detecting new malicious executables, based on discovering and monitoring of characteristic system call sequences |
US8689172B2 (en) * | 2009-03-24 | 2014-04-01 | International Business Machines Corporation | Mining sequential patterns in weighted directed graphs |
WO2010126412A1 (en) * | 2009-04-28 | 2010-11-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Predicting presence of a mobile user equipment |
US8510237B2 (en) * | 2011-03-15 | 2013-08-13 | Qualcomm Incorporated | Machine learning method to identify independent tasks for parallel layout in web browsers |
US8949271B2 (en) * | 2012-10-23 | 2015-02-03 | Liebherr-Werk Nenzing Gmbh | Method for monitoring a number of machines and monitoring system |
US9305168B2 (en) * | 2013-07-01 | 2016-04-05 | Sap Se | Modular static application security testing |
-
2011
- 2011-08-22 JP JP2013525394A patent/JP5844809B2/ja active Active
- 2011-08-22 EP EP11819494.3A patent/EP2609506B1/en active Active
- 2011-08-22 US US13/811,271 patent/US9141806B2/en active Active
- 2011-08-22 WO PCT/IB2011/053671 patent/WO2012025865A1/en active Application Filing
-
2012
- 2012-12-31 IL IL224090A patent/IL224090A/en active IP Right Grant
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5844809B2 (ja) | プログラミングルール違反に対するソースコードマイニング | |
JP2013536522A5 (ja) | ||
US11899818B2 (en) | System and method for code-based protection of sensitive data | |
US9715593B2 (en) | Software vulnerabilities detection system and methods | |
US20200394313A1 (en) | System and method for application security profiling | |
Feng et al. | Apposcopy: Semantics-based detection of android malware through static analysis | |
US8769696B2 (en) | Automated detection of flaws and incompatibility problems in information flow downgraders | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
US20240129323A1 (en) | Multitenant sharing anomaly cyberattack campaign detection | |
Jiang et al. | Feature-based software customization: Preliminary analysis, formalization, and methods | |
US8667584B2 (en) | Formal analysis of the quality and conformance of information flow downgraders | |
EP3234851B1 (en) | A system and method for facilitating static analysis of software applications | |
Chandrashekhar et al. | SQL injection attack mechanisms and prevention techniques | |
US20220060501A1 (en) | Method, system, and computer program product for automatically mitigating vulnerabilities in source code | |
Homaei et al. | Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour | |
EP3945441B1 (en) | Detecting exploitable paths in application software that uses third-party libraries | |
Piskachev et al. | Secucheck: Engineering configurable taint analysis for software developers | |
US11157611B2 (en) | Binary image stack cookie protection | |
Simic et al. | Eliminating SQL injection and cross site scripting using aspect oriented programming | |
Kaur et al. | Modeling a SQL injection attack | |
Abawajy et al. | Policy-based SQLIA detection and prevention approach for RFID systems | |
Gauthier et al. | Semantic smells and errors in access control models: A case study in PHP | |
Alalfi | An automated approach for privacy leakage identification in iot apps | |
Jeya Mala et al. | Intelligent Vulnerability Analyzer–A Novel Dynamic Vulnerability Analysis Framework for Mobile Based Online Applications | |
Musyoka | Analysis of Static Code Techniques for Vulnerability Detection: A reviewed Literature |