JP5844809B2 - プログラミングルール違反に対するソースコードマイニング - Google Patents

プログラミングルール違反に対するソースコードマイニング Download PDF

Info

Publication number
JP5844809B2
JP5844809B2 JP2013525394A JP2013525394A JP5844809B2 JP 5844809 B2 JP5844809 B2 JP 5844809B2 JP 2013525394 A JP2013525394 A JP 2013525394A JP 2013525394 A JP2013525394 A JP 2013525394A JP 5844809 B2 JP5844809 B2 JP 5844809B2
Authority
JP
Japan
Prior art keywords
code
sequence
group
subsequence
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.)
Active
Application number
JP2013525394A
Other languages
English (en)
Other versions
JP2013536522A5 (ja
JP2013536522A (ja
Inventor
サイマン、マティ
Original Assignee
チェックマークス リミテッド
チェックマークス リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by チェックマークス リミテッド, チェックマークス リミテッド filed Critical チェックマークス リミテッド
Publication of JP2013536522A publication Critical patent/JP2013536522A/ja
Publication of JP2013536522A5 publication Critical patent/JP2013536522A5/ja
Application granted granted Critical
Publication of JP5844809B2 publication Critical patent/JP5844809B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Description

本発明は、一般的にコンピュータソフトウェアに関し、特にコンピュータソフトウェアにおけるセキュリティ侵害の自動検知に関するものである。
(関連出願の参照)
本出願は2010年8月24日に出願された米国暫定出願61/376,260(特許文献1)の恩恵を要求し、それはここに参照として採り入れられる。
アプリケーションレベルのソフトウェアコードはセキュリティが脆弱な傾向がある。コードの各区画は、実行されると外部入力を許容し、不適切又は不望の行動を引き起こし、それはデータの機密性やシステムの適切なオペレーションを損なう。脆弱性の例としては、バッファオーバーフロー、競合状態、特権エスカレーションを含む。これらの脆弱性はログラマーにより意図的に、又は不適切なプログラミング作業に起因して偶然に、導入される。
ソフトウェア脆弱性の検知方法は既存技術で公知である。例えばここに参照として採り入れられる特許文献2はアプリケーションレベルの脆弱性に対し自動的にソースコードを分析するツールを記載している。そのツールのオペレーションは統計分析に基づくが、しかし他の種々の技術、例えば難読化コードの取り扱い方法も利用している。
シークエンスマイニングは構造化データマイニングの一種であり、値がシークエンスに存在するデータ事例の中から統計的に関連性のあるパターンを発見することに関している。それはシンボルのストリング及びアイテム例えばワード、フレーズ、タグ又はイベント)の規則正しいシークエンスの両方に適用可能である。
様々なシークエンスマイニングのアルゴリズムが既存技術で知られている。例えば良く使用されるGSPアルゴリズムは非特許文献1に記載され、それはここに参照として採り入れられる。またSPADEとして知られる他のアルゴリズムは非特許文献2に記載され、それはここに参照として採り入れられる。さらに他の1つの検査プログラムはPrefixSpanであり、それは非特許文献3に記載され、それはここに参照として採り入れられる。更なるアルゴリズムは前述の特許文献1に記載されている。
米国暫定出願61/376,260 米国特許出願公報2010/0083240
Srikand氏及びAgrawal氏共著 「シークエンシャルパターンのマイニング:一般化とパフォーマンス向上」EDBT‘96第5回データベース拡張に関する国際会議会報:データベース技術の進歩(シュプリンガー出版、1996)3−17頁 Zaki氏著「SPADE:頻発シークエンスのマイニングのための効率的アルゴリズム」マシンラーニング42(2001)、31−60頁 Pei氏他著「パターン成長によるシークエンシャルパターンのマイニング:PrefixSpanアプローチ」IEEE知識及びデータエンジニアリングに関する報告書 16:10(2004)1424−1440頁
以下に記載される本発明の実施形態はシークエンスマイニング技術をソフトウェアソースコード内の脆弱性を示すパターンを発見するために適用する。
従って本発明の1実施形態によれば、ソフトウェアコード分析の方法であって、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体をコンピュータにより自動的に処理するステップと;共通パターンの基準からの偏移を含むグループ内のシークエンスを発見するステップと;そして偏移をソフトウェアソースコード内の潜在的脆弱性として報告するステップと;を有することを特徴とするソフトウェアコード分析の方法が提供される。
開示された実施形態ではソフトウェアソースコードの本体を処理するステップは、コードのドキュメントオブジェクトモデル(DOM)を生成するステップと、そしてDOMをシークエンスの識別に適用するステップを有する。
ある実施形態では、ソフトウェアソースコードの本体を処理するステップは、コードを正規化するステップと、そして正規化されたコード内でシークエンスを識別するステップを有する。典型的にコードを正規化するステップは、コード内に所定のタイプのエンティティのネームを発見するステップと、そしてコードに出現するネームをタイプのインジケータと置き換えるステップを有する。ネームがタイプのインジケータと置き換えられたエンティティは、変数及び/又は定数からなってよい。さらにあるいは、コードがオブジェクト指向言語で書かれている場合、ネームが置き換えられた前記エンティティは、クラス及び/又はメンバーからなる。
またさらにあるいは、コードを正規化するステップは、コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの制御ブロックはコードのラインを有し、そして、コードのラインを、制御ブロックのタイプに対し事前定義されたフォーマットの、コードのラインに対応する一連のタグと置き換えるステップを有する。
開示された実施形態では、ソフトウェアコードの本体を処理するステップは、コードを一連のタグに変換するステップと、そしてシークエンスマイニングアルゴリズムを適用して一連のタグ内に出現するグループ内のシークエンスを識別するステップを有する。
一般的に、シークエンスのグループは、基準と、基準からのシークエンスのそれぞれの距離の分布により特徴付けられる推計学的なグループであり、ここにおいて偏移を含むシークエンスを発見するステップは、基準からのそれぞれの距離が事前定義された閾値を超える1つ以上のシークエンスを発見するステップを有する。シークエンス内の偏移は例えば、ソフトウェアコード内の欠落したオペレーション、要注意オペレーションを実行する許可のチェック不履行、規定の呼び出しシークエンスの順守違反、コード内に残されたバックドア、又はコード内で実行されるビジネスロジックの誤りを含む。
本発明の1実施形態によれば、ソフトウェアソースコードの本体を記憶するように構成されたメモリと、そして共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードを自動的に処理し、共通パターンの基準からの偏移を含むグループ内のシークエンスを発見し、そして偏移をソフトウェアソースコード内の潜在的脆弱性として報告するように構成されるプロセッサと、を有することを特徴とするソフトウェアコード分析用の機器器がさらに提供される。
本発明の1実施形態によればさらに、コンピュータソフトウェア製品であって、プログラム命令が記憶されるコンピュータ読み取り可能媒体を有し、その命令はコンピュータに読み取られた時に、コンピュータに対し、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体を処理し、共通パターンの基準からの偏移を含むグループ内のシークエンスを発見し、そしてその偏移をそのソフトウェアソースコード内の潜在的脆弱性として報告するようにさせる、 ことを特徴とするコンピュータソフトウェア製品がさらに提供される。
本発明の実施形態による、ソースコード分析のシステムを概略示すブロック図である。 本発明の実施形態による、ソースコード分析の方法を概略示す流れ図である。 本発明の実施形態による、制御ステートメントをタグのシークエンスに変換する方法を概略示すブロック図である。 本発明の実施形態による、コードセグメントをタグのシークエンスに変換する方法を概略示すテーブルである。 本発明の実施形態による、コードセグメントを正規化されたメンバーネームを持つタグのシークエンスに変換する方法を概略示すテーブルである。
上記の特許文献で記載されるような従来技術で公知のソフトウェア分析ツールでは、ユーザがセキュリティ侵害を便利に探索し識別できるような方法で、ソフトウェアコードの構造と流れを抽出し、分析する。しかしこれらのツールは、ユーザが何を探すか知っている、即ち、構造と流れの問題のあるパターンが事前に定義可能であり、そしてその後に問題のあるパターンがコード構造内で探索可能であることを前提としている
以下で記述される本発明の実施形態は、コード内の潜在的に問題のあるパターンを、経験的定義を必要とせず、さらにそのパターンに関する知識すらなくても、自動的に発見することにより、この限界を克服する。開示される方法は、既存技術で公知のシークエンスマイニングツールを使用するが、しかしそれはコンピュータソフトウェアの分析にはいまだかつて使用されたことが無い。一般的には、シークエンスマイニングは、限定されたアルファベット又はコンステレーションから取り出され、そして一定のフォーマットに編成されたシンボル又はタグのシークエンスに対し最も効果を発揮する。従って以下に開示される実施形態では、シークエンスマイニングが適用される以前にソフトウェアコードは正規化されている−事前設定された形式の、対応するタグのシークエンスに変換されている。本特許出願及び請求項においては、「タグ」とはテキスト形式のラベルを意味する。
以下に記載される実施形態では、コンピュータはシークエンスマイニングを使用して自動的にソフトウェアソースコードの本体を処理し、それぞれの共通パターンにより特徴付けられる1つ以上の命令シークエンスのグループを識別する。パターンは事前に定義される必要はなく、むしろコード(又は具体的には、対応するタグシークエンス)の統計的特性に基づいて識別される。このシークエンスマイニングにより識別されたシークエンスグループは一般的に推計学的グループであり、それはそのグループ内のシークエンスは統計的に類似しているが同一ではないことを意味する。このようなグループは、通常、グループ内の平均的パターンに相当する1つの基準、及びそれぞれのシークエンスの基準からの距離の分布により特徴付けられる。ここで「距離」とは一般的にレーベンシュタイン距離のような編集距離を意味し、それは所定のシークエンス内のタグと基準の間の(挿入、削除及び置き換えのような)相違の数を示す。
可能性のある脆弱性を識別するため、コンピュータは基準から有意に偏移したグループ内シークエンス、即ち基準からの距離が一定の閾値(ユーザにより設定されてもよい)を超えるシークエンスを発見する。これらの偏移は場合によっては、要注意オペレーションの実行前の適切な許可チェックの不履行;規定された呼び出しシークエンスの順守違反;プログラマーがコード内に留置したバックドア;又はコード内に提供されたビジネスロジックの誤り;などの脆弱性を示す。コンピュータはグループの基準からの偏移をソフトウェアソースコード内の潜在的脆弱性として報告する。
本発明のある実施形態では、正規化プロセスは、コード内のシークエンス間のあるタイプの相違を「滑らかにする」ステップ、即ちコード内に存在する同じタイプの用語又は構造の多くの変化形を1つの共通の用語又は構造に置き換えるステップを含む。このプロセスはコードを一般化し、それにより類似のシークエンスがさらにほぼ同一となり、シークエンスマイニングにより識別可能になる。一般化のレベルは、脆弱性を示唆する可能性のある相違を隠すことなく、意味のあるシークエンスグループの発見を促進するように選択される。本願の発明者は、例えば、変数、定数、クラス及び/又はメンバーなどの所定のタイプのエンティティのネームを発見し、そしてコード内に現れているそのネームをそのタイプの1つのインジケータと置き換えることにより、効果的な正規化が実行可能であることを発見した。さらにあるいは、制御ブロック内のコードのラインが、その制御ブロックのタイプに対し事前定義された1つのフォーマットの一連のタグに置き換えられてもよい。
ここに記載される実施形態は、説明のため、ある特定の正規化技術を参照しているが、他の適用可能な正規化技術も本特許出願を読んだ当業者には自明であり、本発明の範囲内であると見做されるべきである。正規化技術およびシークエンスマッピングアルゴリズムの適切な選択は分析対象のコードの性質及び関係する脆弱性に依存し、その選択は本発明の開示に基づいて、それぞれのケースの当業者が決定可能である。
(システムと方法の記述)
本発明の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」参照)
・関係演算子は正規化される。例えば:
Figure 0005844809
付属AのリストIIIは上記の最初の2つの正規化オペレーション適用後のリストIIのDOMを示す。
正規化処理の他の部分として、コード内の制御ステートメントが1つのフォーマットに作り直され、それにより各制御ブロックが一貫したフォーマットのタグシークエンスとして表現される。例えばつぎの形の「if」ステートメント:
Figure 0005844809
は次のフォーマットのタグシークエンスとして作り直される:
Figure 0005844809
(図5のシークエンス72のタグシークエンス「IF..ELSE..END−IF」で示されるように)。
もう1つの事例として、図3は本発明の1実施形態による、「for」制御ステートメント48をタグ52のシークエンス50に変換する方法を概略示すブロック図である。図の例においてステートメント48:
Figure 0005844809
は対応するタグシークエンス50として作り直される:
Figure 0005844809
図4は本発明の1実施形態による、コードセグメント60をタグシークエンス62に変換する方法を概略示すテーブルである。図の矢印は、コードのラインと正規化後にそれらを置き換えるタグとの間の対応関係を示す。詳細には、コードセグメント60は「while(<cond>)<body>」という一般形の「while」ループ64を有する。ループ64は以下のフォームのタグのサブシークエンス66に作り直される:
Figure 0005844809
シークエンス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」により置換される。
・プライベート内部クラスのメンバーは(それらの可視性に関わらず)対応する外部クラスのメンバーとして取り扱われる。
メンバーネームに対する正規化ルールは以下を含む(この内幾つかは図5に示される):
・パブリックメンバーネームはそれぞれのタイプ情報に付随するネームにより置換される。(例えば、示されるようにタグ「Rect=Item.GetBounds():Rect」により)
・保護メンバーネームはそれぞれのタイプ情報に付随するネームにより置換されてもよい。
・プライベートメンバーのネームはそれぞれのタイプ情報が付随したタグ「CLASS」と「MEMBER」により置換される。
・所与のネームが多相性の場合は、全ての後継に亘って一般化するため基本タイプが使用されてもよい。
一度上記の正規化ステップがソフトウェアソースコード由来のDOMに実行されると、DOMは当初の階層的機能的構造に替わってタグシークエンスに実質的に平坦化される。付属AのリストVはこの種の完全に平坦化されたDOMを示す。
本願の発明者は、正規化されたDOMに対するシークエンスマイニングが以下の事例を含む(しかしそれに限定されないが)種々のコード脆弱性を検知するのに有効であることを発見した:
・オペレーションの喪失(例えばキャッチブロックのロギング)
キャッチブロック(通常Java(登録商標)における例外処理に使用される)は通常一定のロギングオペレーションを含む。開発者は時々ロギングオペレーションの使用を忘れる。シークエンスマイニングはタグの正常なシークエンス「Try−>SensitiveOperation−>Catch−>Log」を識別し、従ってこのルールを破るコード内のシークエンスを発見してもよい
・条件テストを必要とする関数(例えば、ユーザ認証)
多くの場合、要注意オペレーションはユーザが認証された又は特定の許可を与えられた後にのみ呼び出されるべきである。シークエンスマイニングは正常なシークエンス「IfUsersAuthenticated−>DoSensitiveOperation」を識別し、そしてそれによってユーザ許可の事前チェック無く「要注意オペレーション」が呼び出されたシークエンスを発見する。
・共通呼び出しシークエンス(時々破られる)
ウェブサイトのクロスサイトスクリプティング脆弱性は、悪意のクライアント側スクリプトを他のユーザが閲覧するウェブページに注入することを許す。この問題を軽減するためヘルパー関数(.NET環境におけるHTMLEncodeのような)を呼び出し、1人のユーザにより入力されたストリングをそのユーザに応答する前に「修正」することが一般的である。シークエンスマイニングはヘルパー関数を正しい順番で呼び出す正確なパターンを学習し、そしてこの順番からの偏移を識別するように使用可能である
・バックドア
プログラマーは多くの場合ユーザ許可がチェックされる場所にコード内バックドアを設置する。例えばステートメント:「If(UsersAdministrator or Username=‘MatySIMAN’)はプログラマーMaty Siman用のバックドアを作るのに使用可能である。シークエンスマイニングは、正確な許可シークエンスを学習し、そしてコード内にバックドアが残された場合に発生する偏移を識別するために使用可能である。
・ビジネスロジックの喪失
ビジネスプロセスは多くの場合、パラメータに対しアクションを起こす前に、そのパラメータが適切な領域にあるかの認証を必要とする。例えば、顧客にある商品をある価格で購入したことに対し請求を起こす前に、商品の価格と数量が正の値であることが認証されなくてはならない(そうでなければ顧客は請求されるのではなくクレジットを与えられてしまうからである)。シークエンスマイニングは、パラメータ認証関数を含む正常な販売オペレーションのパターンを学習し、そしてその後適切な認証が呼び出されなかったケースを識別する。
上記の実施形態は事例として引用され、そして本発明は上記で特に図示され記載されたものに限定されない。むしろ本発明の範囲は、上記の記載を読んだ当業者が想起するであろう、既存技術に開示されない、ここに記載された種々の特徴の組合せ及びサブ組合せの両方及び変化形や変更を含む。
(付属A−サンプルコードリスト)
(リストI−生のソースコード)
Figure 0005844809
(リストII−DOMに変換されたコード)
Figure 0005844809
Figure 0005844809
(リストIII−変数名がタイプに変換される)
Figure 0005844809
Figure 0005844809
(リストIV−制御ステートメントの平坦化)
Figure 0005844809
Figure 0005844809
Figure 0005844809
(リストV−DOMツリーが配列に平坦化される)
Figure 0005844809
Figure 0005844809
(付属B−シークエンスマイニングの詳細と実施例)
ソフトウェアコードから得られたタグシークエンスのシークエンスマイニングの準備として、システム20のオペレータは3つの「定数」(パラメータ値)を定義する:
A.「サポート」値−「共通」シークエンスとして見做されるための最小出現回数。
B.「最小長さ」―受容可能な最短シークエンス(これがないと、多くの単一アイテムのシークエンスが「共通」と見做される。)
C.「コンフィデンス」−(X−>Y)のコンフィデンスとは:我々がサブシークエンスXに出会う場合に、Yに出会う確立である。例えば、我々がストリング「abcdefg」に出会うと、それに「hij」が続く可能性が高い−従ってコンフィデンスが高い(例えば50%)。
以下の事例では我々はサポートレベル「60」、最小長さ「3」そしてコンフィデンス「50%」と設定する。
コードの本体が以下のテーブルに示されるシークエンスを含むとする:コードシークエンス「f1();f2();f3();」はコード内に80回現れ;シークエンス「f1();f4();f2();f3();」は20回現れ;以下同様:
Figure 0005844809
これらのシークエンスを処理するため、シークエンスマイニングモジュール28は最初にそれぞれの(サブ)シークエンスが出現する回数を発見する。モジュールは単一アイテムシークエンスから始めてもよい
Figure 0005844809
アプリオリ法則によれば、ある1つのシークエンスはそのサブシークエンスより多い回数出現することはできない。(例えば、F5()を含むあるシークエンスは、F5()自体より多い回数出現できない。)従って、モジュール28は我々の定義したサポートレベル(60)を満たない全てのサブシークエンスを除外することができ、以下が残る:
Figure 0005844809
ここでモジュール28は、上記のアイテムに基づいて可能な全ての2アイテムシークエンスを組み立てる。ここでは:
A.順番は重要である。
B.2つのアイテムは隣接する必要はない。
Figure 0005844809
回数「ゼロ」を除外すると以下が得られる:
Figure 0005844809
我々は最小長さを「3」と定義したが上記の表はまだ長さ「2」なので、モジュール28はシークエンス構築ステップを再び繰り返して以下の表を得る:
Figure 0005844809
従って、サポートレベルと最小長さの基準を満たす唯一の共通シークエンスはf1(),f2(),f3()である。
最初の表に戻って、モジュール28は事前設定のコンフィデンスより低い共通シークエンスf1(),f2(),f3()のインスタンスを取り除く:
Figure 0005844809
シークエンス(f1−f2−f3)の100回の出現の内、20%が最初の2つのアイテムの間にf4を含み、一方80%は含まない。従ってシークエンス(f1−f4−f2−f3)は共通シークエンスを含むが、我々が設定したコンフィデンスレベルを満たさない。結果としてモジュール28は、この後者のシークエンスをソフトウェアコード内の脆弱性を示唆する可能性がある偏移として識別する。

Claims (35)

  1. コンピュータによるソフトウェアコード分析の方法であって、
    前記コードの流れ図を生成するため、ソフトウェアソースコードの本体をコンピュータにより自動的に正規化するステップと、
    ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
    前記流れ図の前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記流れ図にシークエンスマイニング手法を適用するステップと、
    ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
    前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと;
    前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスをプロセッサにより発見するステップと;そして
    前記閾値を超えて偏移するサブシークエンスを前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
    を有し、
    ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
    ことを特徴とするソフトウェアコード分析の方法。
  2. 前記ソフトウェアソースコードの本体を正規化するステップは、前記コードのドキュメントオブジェクトモデル(DOM)を生成するステップを有する、ことを特徴とする請求項1に記載の方法。
  3. 前記シークエンスマイニング手法を適用するステップは、ユーザ設定の半径より大きくない最大差異を有する、命令のサブシークエンスの1つの推計学的グループを識別するステップを有する、ことを特徴とする請求項1に記載の方法。
  4. 前記コードを正規化するステップは、前記コード内で所定のタイプのエンティティのネームを発見するステップと、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項1に記載の方法。
  5. ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
  6. 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプの前記インジケータと置き換えられる前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
  7. 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項1に記載の方法。
  8. 前記シークエンスマイニング手法を適用するステップは、GSP、SPADEまたはPrefixSpanを適用するステップを有する、
    ことを特徴とする請求項1に記載の方法。
  9. 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落したオペレーションを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  10. 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  11. 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守違反を含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  12. 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項1−7のいずれかに記載の方法。
  13. 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  14. ソフトウェアコード分析用の機器であって、
    ソフトウェアソースコードの本体を記憶するように構成されたメモリと、そして
    プロセッサと、を有し、
    前記プロセッサは、
    前記コードの流れ図を生成するため、前記ソフトウェアソースコードを自動的に正規化するステップと、ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
    前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記ソースコードの前記流れ図にシークエンスマイニング手法を適用するステップと、ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
    前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと;
    前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスを発見するステップと;そして
    前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
    を実行するように構成され、
    ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
    ことを特徴とするソフトウェアコード分析用の機器。
  15. 前記プロセッサは、前記ソフトウェアソースコードの正規化において、前記コードのドキュメントオブジェクトモデル(DOM)を生成するように構成される、ことを特徴とする請求項14に記載の機器。
  16. 前記プロセッサは、前記コード内に所定のタイプのエンティティのネームを発見し、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるように構成される、ことを特徴とする請求項14に記載の機器。
  17. ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項16に記載の機器。
  18. 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプのインジケータと置き換えられる前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項16に記載の機器。
  19. 前記プロセッサは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップとにより、前記コードを正規化するように構成される、ことを特徴とする請求項14に記載の機器。
  20. 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
  21. 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
  22. 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守違反を含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
  23. 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項14−19のいずれかに記載の機器。
  24. 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項14−19のいずれかに記載の機器。
  25. プログラム命令が記憶されるコンピュータ読み取り可能媒体であって、
    前記命令はコンピュータに読み取られた時に、コンピュータに対し、
    ソフトウェアコードの流れ図を生成するため、ソフトウェアソースコードの本体を正規化するステップと、ここにおいて前記流れ図は前記ソフトウェアコード内の命令を示すタグのシークエンスを含み;
    前記タグのシークエンス内の複数のサブシークエンスの1つのグループを識別するため、前記ソースコードの前記流れ図にシークエンスマイニング手法を適用するステップと、ここにおいて前記グループ内の前記サブシークエンスは互いに類似しており;
    前記識別されたサブシークエンスの1つのグループに対し、1つの共通基準パターンを決定するステップと、
    前記共通基準パターンから閾値を超えて偏移する、前記グループ内の1つのサブシークエンスを発見するステップと;そして
    前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
    を実行するようにさせ、
    ここにおいて前記サブシークエンス内の前記タグは、前記シークエンス内と同じ順序を有し、しかし前記サブシークエンス内の隣接するタグは前記シークエンス内では必ずしも隣接しない、
    ことを特徴とするコンピュータ読み取り可能媒体。
  26. 前記命令は前記コンピュータに対し、前記ソフトウェアソースコードを正規化するステップにおいて、前記コードのドキュメントオブジェクトモデル(DOM)を生成するようにさせる、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
  27. 前記コードを基準化するステップは、前記コード内に所定のタイプのエンティティのネームを発見するステップと、そして前記コードに出現する前記ネームを前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
  28. ネームが前記タイプのインジケータと置き換えられる前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項27に記載のコンピュータ読み取り可能媒体。
  29. 前記コードはオブジェクト指向言語で書かれ、そしてネームが前記タイプのインジケータと置き換えられた前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項27に記載のコンピュータ読み取り可能媒体。
  30. 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックの前記タイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項25に記載のコンピュータ読み取り可能媒体。
  31. 前記サブシークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
  32. 前記サブシークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック不履行を含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
  33. 前記サブシークエンスにおける偏移は、規定の呼び出しシークエンスの順守怠慢を含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
  34. 前記サブシークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
  35. 前記サブシークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項25−30のいずれかに記載のコンピュータ読み取り可能媒体。
JP2013525394A 2010-08-24 2011-08-22 プログラミングルール違反に対するソースコードマイニング Active JP5844809B2 (ja)

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 JP2013536522A5 (ja) 2015-10-15
JP5844809B2 true 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 (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008047351A2 (en) 2006-10-19 2008-04-24 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
US10599852B2 (en) 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9454659B1 (en) 2014-08-15 2016-09-27 Securisea, Inc. 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
US11087002B2 (en) 2017-05-10 2021-08-10 Checkmarx Ltd. Using the same query language for static and dynamic application security testing tools
EP3573321A1 (en) * 2017-07-21 2019-11-27 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 佛山市微风科技有限公司 一种识别过权应用程序的方法
WO2021028989A1 (ja) * 2019-08-09 2021-02-18 日本電気株式会社 バックドア検査装置、方法及び非一時的なコンピュータ可読媒体
EP3945441A1 (en) 2020-07-28 2022-02-02 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

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991003791A1 (en) 1989-09-01 1991-03-21 Amdahl Corporation Operating system and data base
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
ATE293808T1 (de) 1998-10-10 2005-05-15 Transitive Ltd Programm-kode-umwandlung
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
WO2005121953A1 (en) * 2004-06-04 2005-12-22 Fortify Software, Inc. Apparatus and method for developing, testing and monitoring secure 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
WO2008047351A2 (en) 2006-10-19 2008-04-24 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

Also Published As

Publication number Publication date
US9141806B2 (en) 2015-09-22
IL224090A (en) 2017-11-30
US20130239219A1 (en) 2013-09-12
EP2609506B1 (en) 2019-01-16
EP2609506A4 (en) 2014-05-07
JP2013536522A (ja) 2013-09-19
WO2012025865A1 (en) 2012-03-01
EP2609506A1 (en) 2013-07-03

Similar Documents

Publication Publication Date Title
JP5844809B2 (ja) プログラミングルール違反に対するソースコードマイニング
JP2013536522A5 (ja)
US11436337B2 (en) System and method for application security profiling
US9715593B2 (en) Software vulnerabilities detection system and methods
US11514172B2 (en) System and method for information flow analysis of application code
US8769696B2 (en) Automated detection of flaws and incompatibility problems in information flow downgraders
Livshits Dynamic taint tracking in managed runtimes
CN114077741B (zh) 软件供应链安全检测方法和装置、电子设备及存储介质
Chan et al. A method to evaluate CFG comparison algorithms
EP3234851B1 (en) A system and method for facilitating static analysis of software applications
Chandrashekhar et al. SQL injection attack mechanisms and prevention techniques
Homaei et al. Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour
US20220060501A1 (en) Method, system, and computer program product for automatically mitigating vulnerabilities in source code
Piskachev et al. Secucheck: Engineering configurable taint analysis for software developers
US11157611B2 (en) Binary image stack cookie protection
Sas et al. Automatic detection of sources and sinks in arbitrary java libraries
Simic et al. Eliminating SQL injection and cross site scripting using aspect oriented programming
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
JP7452691B2 (ja) 解析機能付与装置、解析機能付与方法および解析機能付与プログラム
Alalfi et al. A mutation framework for evaluating security analysis tools in IoT applications
Jeya Mala et al. Intelligent Vulnerability Analyzer–A Novel Dynamic Vulnerability Analysis Framework for Mobile Based Online Applications
Shezan et al. CHKPLUG: Checking GDPR Compliance of WordPress Plugins via Cross-language Code Property Graph
Kober et al. Towards Automatically Generating Security Analyses from Machine-Learned Library Models
Sanders et al. Developing a Zen Click Fraud Detection Framework Using Smart Contracts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150603

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20150824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151009

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151119

R150 Certificate of patent or registration of utility model

Ref document number: 5844809

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250