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

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

Info

Publication number
JP2013536522A
JP2013536522A JP2013525394A JP2013525394A JP2013536522A JP 2013536522 A JP2013536522 A JP 2013536522A JP 2013525394 A JP2013525394 A JP 2013525394A JP 2013525394 A JP2013525394 A JP 2013525394A JP 2013536522 A JP2013536522 A JP 2013536522A
Authority
JP
Japan
Prior art keywords
code
sequence
group
software
shift
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
Application number
JP2013525394A
Other languages
English (en)
Other versions
JP2013536522A5 (ja
JP5844809B2 (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Virology (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Bioethics (AREA)
  • Stored Programmes (AREA)

Abstract

ソフトウェアコード分析の方法であって、1つの共通パターンにより特徴付けられる1つの命令シークエンスグループを識別するために、1つのソフトウェアソースコード(23)の本体をコンピュータ(22)により自動的に処理するステップを有する。その後その共通パターンの1つの基準からの偏移を含むそのグループ内の1つのシークエンスが発見され、そしてそのシークエンスがそのソフトウェアソースコード(23)の潜在的脆弱性として報告される。
【選択図】図1

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つのフォーマットの一連のタグに置き換えられてもよい。
ここに記載される実施形態は、説明のため、ある特定の基準化技術を参照しているが、他の適用可能な基準化技術も本特許出願を読んだ当業者には自明であり、本発明の範囲内であると見做されるべきである。基準化技術およびシークエンスマッピングアルゴリズムの適切な選択は分析対象のコードの性質及び対象の脆弱性に依存し、その選択は本発明の開示に基づいてそれぞれのケースの当業者が決定可能である。
(システムと方法の記述)
本発明の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 2013536522
付属AのリストIIIは上記の最初の2つの基準化オペレーション適用後のリストIIのDOMを示す。
基準化処理の他の部分として、コード内の制御ステートメントが1つのフォーマットに作り直され、それにより各制御ブロックが一貫したフォーマットのタグシークエンスとして表現される。例えばつぎの形の「if」ステートメント:
Figure 2013536522
は次のフォーマットのタグシークエンスとして作り直される:
Figure 2013536522
(図5のシークエンス72のタグシークエンス「IF..ELSE..END−IF」で示されるように)。
もう1つの事例として、図3は本発明の1実施形態による、「for」制御ステートメント48をタグ52のシークエンス50に変換する方法を概略示すブロック図である。図の例においてステートメント48:
Figure 2013536522
は対応するタグシークエンス50として作り直される:
Figure 2013536522
図4は本発明の1実施形態による、コードセグメント60をタグシークエンス62に変換する方法を概略示すデーブルである。図の矢印は、コードのラインと基準化後にそれらを置き換えるタグとの間の対応関係を示す。詳細には、コードセグメント60は「while(<cond>)<body>」という一般形の「while」ループ64を有する。ループ64は以下のフォームのタグのサブシークエンス66に作り直される:
Figure 2013536522
シークエンス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 2013536522
(リストII−DOMに変換されたコード)
Figure 2013536522
Figure 2013536522
(リストIII−変数名がタイプに変換される)
Figure 2013536522
Figure 2013536522
(リストIV−制御ステートメントの平坦化)
Figure 2013536522
Figure 2013536522
Figure 2013536522
(リストV−DOMツリーが配列に平坦化される)
Figure 2013536522
Figure 2013536522
(付属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 2013536522
これらのシークエンスを処理するため、シークエンスマイニングモジュール28は最初にそれぞれの(サブ)シークエンスが出現する回数を発見する。モジュールは単一アイテムシークエンスから始める:
Figure 2013536522
アプリオリ法則によれば、ある1つのシークエンスはそのサブシークエンスより多い回数出現することはできない。(例えば、F5()を含むあるシークエンスは、F5()自体より多い回数出現できない。)従って、モジュール28は我々の定義したサポートレベル(60)を満たない全てのサブシークエンスを除外することができ、以下が残る:
Figure 2013536522
ここでモジュール28は、上記のアイテムに基づいて可能な全ての2アイテムシークエンスを組み立てる。ここでは:
A.順番は重要である。
B.2つのアイテムは隣接する必要はない。
Figure 2013536522
回数「ゼロ」を除外すると以下が得られる:
Figure 2013536522
我々は最小長さを「3」と定義したが上記の表はまだ長さ「2」なので、モジュール28はシークエンス構築ステップを再び繰り返して以下の表を得る:
Figure 2013536522
従って、サポートレベルと最小長さの基準を満たす唯一の共通シークエンスはf1(),f2(),f3()である。
最初の表に戻って、モジュール28は事前設定のコンフィデンスより低い共通シークエンスf1(),f2(),f3()のインスタンスを取り除く:
Figure 2013536522
シークエンス(f1−f2−f3)の100回の出現の内、20%が最初の2つのアイテムの間にf4を含み、一方80%は含まない。従ってシークエンス(f1−f4−f2−f3)は共通シークエンスを含むが、我々が設定したコンフィデンスレベルを満たさない。結果としてモジュール28は、この後者のシークエンスをソフトウェアコード内の脆弱性を示唆する可能性がある偏移として識別する。

Claims (42)

  1. ソフトウェアコード分析の方法であって、
    共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体をコンピュータにより自動的に処理するステップと;
    前記共通パターンの基準からの偏移を含む前記グループ内のシークエンスを発見するステップと;そして
    前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するステップと;
    を有することを特徴とするソフトウェアコード分析の方法。
  2. 前記ソフトウェアソースコードの本体を処理するステップは、前記コードのドキュメントオブジェクトモデル(DOM)を生成するステップと、そして前記DOMを前記シークエンスの識別に適用するステップを有する、ことを特徴とする請求項1に記載の方法。
  3. 前記ソフトウェアソースコードの本体を処理するステップは、前記コードを基準化するステップと、そして前記基準化されたコード内で前記シークエンスを識別するステップを有する、ことを特徴とする請求項1に記載の方法。
  4. 前記コードを基準化するステップは、前記コード内に所定のタイプのエンティティの名前を発見するステップと、そして前記コードに出現する前記名前を前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項3に記載の方法。
  5. 名前が前記タイプのインジケータと置き換えられた前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
  6. 前記コードはオブジェクト指向言語で書かれ、そして名前が前記タイプのインジケータと置き換えられた前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項4に記載の方法。
  7. 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックのタイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項3に記載の方法。
  8. 前記ソフトウェアコードの本体を処理するステップは、前記コードを一連のタグに変換するステップと、そしてシークエンスマイニングアルゴリズムを適用して前記一連のタグ内に出現する前記グループ内の前記シークエンスを識別するステップを有する、ことを特徴とする請求項1−7のいずれかに記載の方法。
  9. 前記シークエンスのグループは、前記基準と、前記基準からの前記シークエンスのそれぞれの距離の分布により特徴付けられる推計学的なグループであり、ここにおいて前記偏移を含むシークエンスを発見するステップは、前記基準からのそれぞれの距離が事前定義された閾値を超える1つ以上の前記シークエンスを発見するステップを有する、ことを特徴とする請求項1−7のいずれかに記載の方法。
  10. 前記シークエンスにおける偏移は前記ソフトウェアコード内の欠落したオペレーションを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  11. 前記シークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック漏れを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  12. 前記シークエンスにおける偏移は、規定の呼び出しシークエンスの順守違反を含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  13. 前記シークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項1−7のいずれかに記載の方法。
  14. 前記シークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項1−7のいずれかに記載の方法。
  15. ソフトウェアソースコードの本体を記憶するように構成されたメモリと、そして
    共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、前記ソフトウェアソースコードを自動的に処理し、前記共通パターンの基準からの偏移を含む前記グループ内のシークエンスを発見し、そして前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するように構成されるプロセッサと、
    を有することを特徴とするソフトウェアコード分析用の機器。
  16. 前記プロセッサは、前記コードのドキュメントオブジェクトモデル(DOM)を生成し、そして前記DOMを前記シークエンスの識別に適用するように構成される、ことを特徴とする請求項15に記載の機器。
  17. 前記プロセッサは、前記コードを基準化し、そして前記基準化されたコード内で前記シークエンスを識別するように構成される、ことを特徴とする請求項15に記載の機器。
  18. 前記プロセッサは、前記コード内に所定のタイプのエンティティの名前を発見し、そして前記コードに出現する前記名前を前記タイプのインジケータと置き換えるように構成される、ことを特徴とする請求項17に記載の機器。
  19. 名前が前記タイプのインジケータと置き換えられた前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項18に記載の機器。
  20. 前記コードはオブジェクト指向言語で書かれ、そして名前が前記タイプのインジケータと置き換えられた前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項18に記載の機器。
  21. 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックのタイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項17に記載の機器。
  22. 前記プロセッサは、前記コードを一連のタグに変換し、そしてシークエンスマイニングアルゴリズムを適用して前記一連のタグ内に出現する前記グループ内の前記シークエンスを識別するように構成される、ことを特徴とする請求項15−21のいずれかに記載の機器。
  23. 前記シークエンスのグループは、前記基準と、前記基準からの前記シークエンスのそれぞれの距離の分布により特徴付けられる推計学的なグループであり、ここにおいて前記偏移を含む前記シークエンスを発見するステップは、前記基準からのそれぞれの距離が事前定義された閾値を超える1つ以上の前記シークエンスを発見するステップを有する、ことを特徴とする請求項15−21のいずれかに記載の機器。
  24. 前記シークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項15−21のいずれかに記載の機器。
  25. 前記シークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック漏れを含む、ことを特徴とする請求項15−21のいずれかに記載の機器。
  26. 前記シークエンスにおける偏移は、規定の呼び出しシークエンスの順守の失敗を含む、ことを特徴とする請求項15−21のいずれかに記載の機器。
  27. 前記シークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項15−21のいずれかに記載の機器。
  28. 前記シークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項15−21のいずれかに記載の機器。
  29. コンピュータソフトウェア製品であって、
    プログラム命令が記憶されるコンピュータ読み取り可能媒体を有し、
    前記命令はコンピュータに読み取られた時に、コンピュータに対し、共通パターンにより特徴付けられる命令シークエンスのグループを識別するために、ソフトウェアソースコードの本体を処理し、前記共通パターンの基準からの偏移を含む前記グループ内のシークエンスを発見し、そして前記偏移を前記ソフトウェアソースコード内の潜在的脆弱性として報告するようにさせる、
    ことを特徴とするコンピュータソフトウェア製品。
  30. 前記命令は前記コンピュータに対し、前記コードのドキュメントオブジェクトモデル(DOM)を生成し、そして前記DOMを前記シークエンスの識別に適用するようにさせる、ことを特徴とする請求項29に記載の製品。
  31. 前記命令は前記コンピュータに対し、前記コードを基準化し、そして前記基準化されたコード内で前記シークエンスを識別するようにさせる、ことを特徴とする請求項29に記載の製品。
  32. 前記コードを基準化するステップは、前記コード内に所定のタイプのエンティティの名前を発見するステップと、そして前記コードに出現する前記名前を前記タイプのインジケータと置き換えるステップを有する、ことを特徴とする請求項31に記載の製品。
  33. 名前が前記タイプのインジケータと置き換えられた前記エンティティは、変数及び定数からなるエンティティのグループから選択される、ことを特徴とする請求項32に記載の製品。
  34. 前記コードはオブジェクト指向言語で書かれ、そして名前が前記タイプのインジケータと置き換えられた前記エンティティは、クラスとメンバーからなるエンティティのグループから選択される、ことを特徴とする請求項32に記載の製品。
  35. 前記コードを基準化するステップは、前記コード内に所定のタイプの制御ブロックを発見するステップと、ここにそれぞれの前記制御ブロックは前記コードのラインを有し、そして、前記コードのラインを、前記制御ブロックのタイプに対し事前定義されたフォーマットの、前記コードのラインに対応する一連のタグと置き換えるステップを有する、ことを特徴とする請求項31に記載の製品。
  36. 前記命令は前記コンピュータに対し、前記コードを一連のタグに変換し、そしてシークエンスマイニングアルゴリズムを適用して前記一連のタグ内に出現する前記グループ内の前記シークエンスを識別するようにさせる、ことを特徴とする請求項29−35のいずれかに記載の製品。
  37. 前記シークエンスのグループは、前記基準と、前記基準からの前記シークエンスのそれぞれの距離の分布により特徴付けられる推計学的なグループであり、ここにおいて前記偏移を含む前記シークエンスを発見するステップは、前記基準からのそれぞれの距離が事前定義された閾値を超える1つ以上の前記シークエンスを発見するステップを有する、ことを特徴とする請求項29−35のいずれかに記載の製品。
  38. 前記シークエンスにおける偏移は前記ソフトウェアコード内の欠落オペレーションを含む、ことを特徴とする請求項29−35のいずれかに記載の製品。
  39. 前記シークエンスにおける偏移は、要注意オペレーションを実行する許可のチェック漏れを含む、ことを特徴とする請求項29−35のいずれかに記載の製品。
  40. 前記シークエンスにおける偏移は、規定の呼び出しシークエンスの順守の失敗を含む、ことを特徴とする請求項29−35のいずれかに記載の製品。
  41. 前記シークエンスにおける偏移は、前記コード内に残されたバックドアに関連する、ことを特徴とする請求項29−35のいずれかに記載の製品。
  42. 前記シークエンスにおける偏移は、前記コード内で実行されるビジネスロジックの誤りを含む、ことを特徴とする請求項29−35のいずれかに記載の製品。
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 true JP2013536522A (ja) 2013-09-19
JP2013536522A5 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021028989A1 (ja) * 2019-08-09 2021-02-18

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
US9824214B2 (en) 2014-08-15 2017-11-21 Securisea, Inc. High performance software vulnerabilities detection system and methods
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
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
US10133649B2 (en) * 2016-05-12 2018-11-20 Synopsys, Inc. System and methods for model-based analysis of 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 佛山市微风科技有限公司 一种识别过权应用程序的方法
US11836258B2 (en) 2020-07-28 2023-12-05 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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69033203T2 (de) 1989-09-01 1999-11-04 Amdahl Corp Programmierbarer Rechner mit automatischer Übersetzung zwischen Quell - und Zielkode mit Versionüberwachung
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
WO2000022521A1 (en) 1998-10-10 2000-04-20 The Victoria University Of Manchester Program code conversion
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
US7418734B2 (en) 2003-04-18 2008-08-26 Ounce Labs, Inc. Method and system for detecting privilege escalation 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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015021078; 山田吾郎他: 'シーケンシャルパターンマイニングに基づくオブジェクト指向プログラムのための欠陥検出手法' 情報処理学会研究報告 コンピュータセキュリティ(CSEC) Vol.2009-CSEC-45, 20090615, p.1-p.8 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021028989A1 (ja) * 2019-08-09 2021-02-18
WO2021028989A1 (ja) * 2019-08-09 2021-02-18 日本電気株式会社 バックドア検査装置、方法及び非一時的なコンピュータ可読媒体
JP7238996B2 (ja) 2019-08-09 2023-03-14 日本電気株式会社 バックドア検査装置、方法及びプログラム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5844809B2 (ja) プログラミングルール違反に対するソースコードマイニング
JP2013536522A5 (ja)
CN109426722B (zh) Sql注入缺陷检测方法、系统、设备及存储介质
US9715593B2 (en) Software vulnerabilities detection system and methods
JP5940160B2 (ja) アプリケーション・コード内のダウングレーダ・コードを評価するための方法、コンピュータ・プログラム製品、および装置(情報フロー・ダウングレーダにおける欠陥および非互換性問題の自動検出)
Wang et al. Who changed you? Obfuscator identification for Android
CN114077741B (zh) 软件供应链安全检测方法和装置、电子设备及存储介质
Saccente et al. Project achilles: A prototype tool for static method-level vulnerability detection of Java source code using a recurrent neural network
US10043004B2 (en) Method of correlating static and dynamic application security testing results for a web and mobile application
KR101640479B1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
CN115022026A (zh) 一种区块链智能合约威胁检测装置及方法
Homaei et al. Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour
Wei et al. DroidExec: Root exploit malware recognition against wide variability via folding redundant function-relation graph
Piskachev et al. Secucheck: Engineering configurable taint analysis for software developers
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN109299610B (zh) 安卓系统中不安全敏感输入验证识别方法
US11157611B2 (en) Binary image stack cookie protection
Thompson et al. Polymorphic malware detection and identification via context-free grammar homomorphism
Sas et al. Automatic detection of sources and sinks in arbitrary java libraries
CN108416194B (zh) 符号混淆方法及装置
Simic et al. Eliminating SQL injection and cross site scripting using aspect oriented programming
Zhang et al. DAISY: Dynamic-Analysis-Induced Source Discovery for Sensitive Data
TWI715647B (zh) 用於智慧財產(ip)指紋法與ip dna分析之系統及方法
Seraj et al. A novel dataset for fake android anti-malware detection
Alalfi An automated approach for privacy leakage identification in iot apps

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