JP2023537815A - プログラムレベルのコンテキスト情報のマイニングと低レベルのシステムの来歴グラフへの統合 - Google Patents

プログラムレベルのコンテキスト情報のマイニングと低レベルのシステムの来歴グラフへの統合 Download PDF

Info

Publication number
JP2023537815A
JP2023537815A JP2022578821A JP2022578821A JP2023537815A JP 2023537815 A JP2023537815 A JP 2023537815A JP 2022578821 A JP2022578821 A JP 2022578821A JP 2022578821 A JP2022578821 A JP 2022578821A JP 2023537815 A JP2023537815 A JP 2023537815A
Authority
JP
Japan
Prior art keywords
system call
level
computer
user
graph
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
JP2022578821A
Other languages
English (en)
Other versions
JP7489495B2 (ja
Inventor
シャオ ユ、
ハイフォン チェン、
フェイ ツオ、
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2023537815A publication Critical patent/JP2023537815A/ja
Application granted granted Critical
Publication of JP7489495B2 publication Critical patent/JP7489495B2/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

コンピュータ実施方法が、コンピュータ侵入検出のために提供される。この方法は、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立すること(1010)を含む。ユーザ関数は、オペレーティングシステムのユーザ空間で実行される。本方法は、マッピングを入力する検索アルゴリズムと実行時にキャプチャされたシステムコールトレースとを使用して、システムコールトレース内の低レベルのシステムコールをトリガするユーザ関数のいずれかを識別すること(1020)をさらに含む。本方法は、プロセッサ装置によって、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行すること(1030)をさらに含む。来歴グラフは、システムコールトレース内の低レベルのシステムコールをトリガするユーザ関数から形成されるノードを有する。来歴グラフ内のエッジは、低レベルのシステムコールから高レベルのシステム動作への相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルを有する。

Description

関連出願情報
本出願は、2021年8月10日に出願された米国特許出願第17/398,514号、および2020年8月14日に出願された米国特許仮出願第63/065,530号の優先権を主張し、いずれもその全体が参照により本明細書に組み込まれる。
本発明は、グラフ処理に関し、より詳細には、プログラムレベルのコンテキスト情報をマイニングし、低レベルの来歴(provenance)グラフに統合することに関する。
関連技術の説明
プログラムおよびシステムの挙動をキャプチャして理解することは、システムのセキュリティ、保守、監視、および管理の分野で多くの用途を有する一般的なタスクである。このタスクを実行する最先端の方法は、低レベルのシステムコールをキャプチャして理解することである。このようなシステムコールは、ユーザプログラムがディスク上のファイルの読み出しなどのオペレーティングシステムサービスを呼び出すことができる手段であり、それらは、オペレーティングシステムとの相互作用やプログラムが実行時に示す外部動作を直接的に反映する。モデムのオペレーティングシステムには、通常、システムコールのキャプチャリングのための組み込み機構(例えば、Linuxのaudit、およびWindows(登録商標)のETW(Event Tracing for Windows))を備えており、それによって、一般的かつプログラムに依存しない方法で簡単に実装できる。キャプチャされたシステムコールデータにより、一連のアプリケーションが有効になる。
長年にわたって、より高度なアプリケーションをサポートするために、システムコールデータのエンリッチメントが進歩してきた。特に、「水平」エンリッチメントは、低レベルのシステムコールデータから来歴グラフを作成して、プログラムとシステムの動作とそれらの相互作用の全体像を提供することである。来歴グラフでは、ノードは、プロセス(プログラムの実行時インスタンス)、ファイル、ネットワークエンドポイント、またはそのようなグラフの様々な実施形態において定義されたものであり、エッジは、そのノードに関連するシステムコールおよびタイムスタンプラベルであり、例えば、「プロセスがファイルを書き込む」では、プロセスノードとファイルノードがその書き込み動作のタイムスタンプを持つ書き込みエッジで接続され、同様に、「プロセスが別のプロセスを開始する」では、2つのプロセスノードと開始エッジで接続される。様々なノードとエッジを用いて、このようなグラフは、時間とプロセスにわたって一見関連の無いシステムコールデータを「水平」な方法で結合することを目的としている。来歴グラフに基づいて構築されたアプリケーションは、一部のシナリオでは、生(raw)のシステムコールデータを使用するアプリケーションよりもより効果的に機能する。たとえば、グラフを使用する侵入検出では、より多くのコンテキスト情報(すなわち、グラフ内の隣接ノードおよびエッジ)を利用して、単なる外れ値である異常なシステムコールと実際の脅威とを区別することができる。
グラフベースの「水平」エンリッチメントは、いくつかのシナリオでは有効であることが証明されているが、グラフの構築と高レベルのコンテキスト情報のさらなるエンリッチメントの両方で課題がある。グラフの構築において、適切なプルーニングを行わずにシステムコールデータをグラフ化すると、いわゆる「依存関係の爆発的な増加(dependency explosion)」の問題が生じる可能性があり、これは、関連するノードおよび関連のないノードとエッジとが一緒になって接続されてしまい、グラフのサイズが大きくなるとともに、構築したアプリケーションに干渉するノイズが発生することを意味する。ノードとエッジのプルーニングも、決定的なガイダンスとしての高レベル(プログラムレベル)のコンテキスト情報がないため、同様に困難であることが多い。プルーニングは、通常、タイムスタンプを用いた時間的近接性(time proximity)に基づく近似的な依存関係、または特定の反復グラフパターンを用いて行われる。高レベルのコンテキスト情報が組み込まれている場合、プログラム内の真の依存性の実質的な証拠により、プルーニングはより効果的になる。これは、当然、高レベルのコンテキスト情報を用いて来歴グラフをさらに充実させるという2つ目の課題につながる。現在のグラフ構築は、低レベルのシステムコールデータのみに基づいており、基本的には、構築されたグラフは低レベルの動作のみを示すように制限されている。低レベルのシステムコールから高レベルのプログラム論理への既存のマッピングがないので、このプロセスに高レベルの情報を組み込むことは簡単ではない。このマッピングを作成するには、実世界のシステム展開では強く嫌われる重いプログラム計測(instrumentation)が必要になるか、他の既存の方法で行われた場合には不確実性と不正確性が生じる。
本発明の態様によれば、コンピュータ侵入検出のためのコンピュータ実施方法が提供される。この方法は、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立することを含む。ユーザ関数は、オペレーティングシステムのユーザ空間で実行される。本方法は、マッピングを入力する検索アルゴリズムと、実行時にキャプチャされたシステムコールトレースとを使用して、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数のいずれかを識別することをさらに含む。本方法は、プロセッサ装置によって、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行することをさらに含む。来歴グラフは、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数から形成された複数のノードを有する。来歴グラフ内のエッジには、低レベルのシステムコールから高レベルのシステム動作の相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルがある。
本発明の他の態様によれば、コンピュータ侵入検出のためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、それと共に具現化されたプログラム命令を有する非一時的コンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータに方法を実行させるためにコンピュータによって実行可能である。前記方法は、コンピュータのプロセッサ装置によって、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立することを含む。ユーザ関数は、オペレーティングシステムのユーザ空間で実行される。前記方法は、マッピングを入力する検索アルゴリズムと、実行時にキャプチャされたシステムコールトレースとを使用して、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数のいずれかを識別することをさらに含む。前記方法はまた、プロセッサ装置によって、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行することをさらに含む。来歴グラフは、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数から形成された複数のノードを有する。来歴グラフ内のエッジには、低レベルのシステムコールから高レベルのシステム動作の相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルがある。
本発明のさらに他の態様によれば、コンピュータ侵入検出のためのコンピュータ処理システムが提供される。コンピュータ処理システムは、プログラムコードを格納するためのメモリ装置を含む。コンピュータ処理システムは、プログラムコードを実行して、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立するために、メモリ装置に動作可能に結合されたハードウェアプロセッサをさらに含む。ユーザ関数は、オペレーティングシステムのユーザ空間で実行される。ハードウェアプロセッサはさらに、プログラムコードを実行し、マッピングを入力する検索アルゴリズムと、実行時にキャプチャされたシステムコールトレースとを使用して、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数のいずれかを識別する。また、ハードウェアプロセッサは、プログラムコードを実行して、プログラムコンテキストを有する来歴グラフに応答して侵入検出を行う。来歴グラフは、システムコールトレース内の低レベルのシステムコールをトリガする複数のユーザ関数から形成された複数のノードを有する。来歴グラフ内のエッジには、低レベルのシステムコールから高レベルのシステム動作の相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルがある。
これらおよび他の特徴および利点は、添付の図面に関連して読まれるべき、その例示的な実施形態の以下の詳細な説明から明らかになるのであろう。
本開示は、以下の図面を参照して、好ましい実施形態の以下の説明において詳細を提供する
本発明の一実施形態による、例示的なコンピューティング装置を示すブロック図である。
本発明の実施形態による、例示的なシステムワークフローを示すフロー図である。
本発明の実施形態による、プログラムレベルの情報エンリッチメント388を有する例示的な来歴グラフを示すブロック図である。
本発明の実施形態による、後の検索ステップのためにプログラムバイナリから情報を抽出する方法のフロー図である。
本発明の実施形態による、制御フローグラフ(CFG)である。
図5に示したCFGから縮小された関数呼び出しグラフの一例を示すブロック図である。
本発明の実施形態による、システムコール-ユーザ関数検索のためのフロー図である。
本発明の実施形態による、図7の候補検索および選択ブロック750の一例を示すブロック図である。
本発明の実施形態による、図2のブロック250によって強化されたシステムコールトレースを用いた例示的な来歴グラフ構築プロセスを示すフロー図である。
本発明の実施形態による、例示的な高レベルの方法を示すフロー図である。
本発明の実施形態は、プログラムレベルのコンテキスト情報をマイニングし、低レベルの来歴グラフに統合することを対象とする。
本発明の実施形態は、プログラムレベルの情報を低レベルのシステムコールデータと統合して、来歴グラフの「垂直」エンリッチメントを達成するように構成される。異なるレベルの情報間の正確なマッピングを得るために重いプログラム計測または複雑なプログラム分析を行う代わりに、本発明の実施形態では、軽量のバイナリ分析およびデータ駆動技術を使用して問題を探索問題まで縮小する。
一実施形態では、本発明は、以下の2つのトップレベルの構成要素を含むことができる:(1)個々のプログラムにおいて、低レベルのシステムコールからユーザ関数(オペレーティングシステムのカーネル空間ではなく、ユーザ空間で実行される関数を指す)へのマッピングを確立する方法;および(2)確立されたマッピングと実行時にキャプチャされたシステムコールトレースとを使用して、トレースでキャプチャされた低レベルのシステムコールをトリガするユーザ関数を識別する検索アルゴリズム。
マッピングを確立するために、本発明は、(1)個々のユーザ関数から制御フローグラフ(CFG)を抽出し、システムコールをトリガするか、または他のユーザ関数への関数呼び出しを行うCFGノードを識別する、(2)各ユーザ関数CFGと関数呼び出しに関連するすべての関連CFGに対して、識別されたシステムコールトリガノードを介してグラフウォーク(graph walks)を実行し、関数がトリガする可能性があるシステムコールシーケンスを生成および収集する、(3)収集されたシーケンスを使用して、システムコールシーケンスをベクトル空間表現に変換することができるシステムコールシーケンス埋め込みモデルを訓練する、という3つのステップで、関心のあるユーザプログラムに対してバイナリ分析および機械学習を実行する。
本発明による探索アルゴリズムの実施形態は、以下の3つの主要な構成要素を含む:(1)ユーザ関数識別のための探索空間を縮小するために入力システムコールトレースをセグメント化するヒューリスティック方法;(2)埋め込みモデル、CFGから収集されたシステムコールシーケンス、および入力システムコールトレースのセグメント内の可能なユーザ関数の候補を列挙するためのヒューリスティックのセットを活用する探索方法;(3)異なる候補を比較し、探索出力として最も可能性の高い候補を選択する品質測定機能(quality measurement function)。
ソリューション空間では、本発明の実施形態は、同じ問題を解決するために適用され得るあらゆる可能な最先端技術と比較して、目標を達成するためのシステム展開およびサポート構成要素に関する仮定に依存することがはるかに少ない。特に、本発明は、正確な方法でクロスレベル情報を収集および統合するために適用され得る2つの一般的な技術を表す、重いランタイム計測または複雑なプログラム分析に依存しない。これらの一般的な技術は、ターゲットシステムに顧客が好まない変更を導入し、システム性能に悪影響を与えるランタイムオーバーヘッドを課し、調査対象の複雑なプログラムおよびシステムからのスケーラビリティの難題に陥る。
代わりに、本発明の実施形態は、問題を検索問題に縮小し、システムコールシーケンス埋め込みモデルと検索アルゴリズムを組み合わせて、ターゲットシステムに配備された単一のコンポーネントとしてのシステムコールトレーサを用いて問題を解決する。埋め込みモデルの作成では、最小限のバイナリ分析のみを使用して関数レベルのCFGを抽出し、次いで、複雑なプログラム論理を、類似性探索を実行するために探索アルゴリズムによって後で使用されるシステムコールシーケンスに抽象化する。その結果、埋め込みモデルは、複雑なプログラム分析(これは、パスの充足可能性を解決することによって正確な実現可能なシステムコールシーケンスを取得しようとするが、大規模なプログラムにはうまく拡張できない)を効果的に置き換える。
検索アルゴリズムを使用して、低レベルのシステムコールに対応する可能性の高いユーザ関数を「検索」することによって、本発明の実施形態はまた、ランタイム計測の必要性を効果的に除去する。ランタイム計測は、実行時にすべてのプログラムを計測し、システムコールがトリガされるたびに、完全なコールスタック(ユーザ関数名を含む)をキャプチャし、著しいパフォーマンスオーバーヘッドを引き起こす。
図1は、本発明の一実施形態による、例示的なコンピューティング装置100を示すブロック図である。コンピューティング装置100は、プログラムレベルのコンテキスト情報をマイニングし、低レベルのシステム来歴グラフに統合するように構成されている。
コンピューティング装置100は、本明細書で説明される機能を実行することが可能な任意のタイプの計算またはコンピュータ装置として具現化することことができ、これには、限定されないが、コンピュータ、サーバ、ラックベースサーバ、ブレードサーバ、ワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、ネットワーク機器、ウェブ機器、分散型コンピューティングシステム、プロセッサベースシステム、および/または消費者向け電子デバイスが含まれる。追加的または代替的に、コンピューティング装置100は、1つまたは複数のコンピューティングスレッド、メモリスレッド、または他のラック、スレッド、コンピューティングシャーシ、または物理的に分離されたコンピューティングデバイスの他の構成要素として具現化されてもよい。図1に示されるように、コンピューティング装置100は、例示的に、プロセッサ110、入力/出力サブシステム120、メモリ130、データ記憶装置140、および通信サブシステム150、および/またはサーバまたは同様のコンピューティング装置で一般に見られる他の構成要素および装置を含む。もちろん、コンピューティング装置100は、他の実施形態では、サーバコンピュータに一般的に見られるもの(例えば、様々な入力/出力デバイス)など、他の構成要素または追加の構成要素を含んでもよい。さらに、いくつかの実施形態では、例示的な構成要素のうちの1つまたは複数は、別の構成要素に組み込まれるか、またはそうでなければ、別の構成要素の一部を形成してもよい。例えば、メモリ130またはその一部は、いくつかの実施形態ではプロセッサ110に組み込まれてもよい。
プロセッサ110は、本明細書で説明される機能を実行することが可能な任意のタイプのプロセッサとして具現化することができる。プロセッサ110は、単一のプロセッサ、複数のプロセッサ、中央処理装置(CPU)、グラフィックス処理装置(GPU)、シングルまたはマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、またはその他のプロセッサまたは処理/制御回路として具現化されてもよい。
メモリ130は、本明細書に記載の機能を実行することができる任意のタイプの揮発性または不揮発性メモリまたはデータ記憶装置として具現化することができる。動作中、メモリ130は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、およびドライバなど、コンピューティング装置100の動作中に使用される様々なデータおよびソフトウェアを格納することができる。メモリ130は、I/Oサブシステム120を介してプロセッサ110に通信可能に結合される。I/Oサブシステム120は、プロセッサ110、メモリ130、およびコンピューティング装置100の他の構成要素との入力/出力動作を容易にする回路および/または構成要素として具現化することができる。例えば、I/Oサブシステム120は、メモリコントローラハブ、入力/出力制御ハブ、プラットフォームコントローラハブ、集積制御回路、ファームウェアデバイス、通信リンク(例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路基板トレースなど)、および/または入力/出力動作を容易にする他の構成要素およびサブシステムとして具現化されてもよく、またはそうでなければ、これらを含むことができる。いくつかの実施形態では、I/Oサブシステム120は、システムオンチップ(SOC)の一部を形成してもよく、また、プロセッサ110、メモリ130、およびコンピューティング装置100の他の構成要素とともに、単一の集積回路チップ上に組み込まれてもよい。
データ記憶装置140は、例えば、メモリ装置および回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶装置など、データの短期または長期記憶のために構成された任意のタイプの装置またはデバイスとして具現化することができる。データ記憶装置140は、プログラムレベルのコンテキスト情報をマイニングし、低レベルのシステムの来歴グラフに統合するためのプログラムコードを格納することができる。コンピューティング装置100の通信サブシステム150は、ネットワークを介してコンピューティング装置100と他の遠隔装置との間の通信を可能にすることができる、任意のネットワークインターフェース制御装置または他の通信回路、デバイス、またはそれらの集合として具現化することができる。通信サブシステム150は、任意の1つまたは複数の通信技術(例えば、有線通信または無線通信)および関連するプロトコル(例えば、イーサネット、InfiniBand(登録商標)、Bluetooth(登録商標)、Wi-Fi(登録商標)、WiMAXなど)を使用して、そのような通信を行うように構成され得る。
図示のように、コンピューティング装置100はまた、1つまたは複数の周辺デバイス160を含んでもよい。周辺デバイス160は、任意の数の追加の入力/出力装置、インターフェース装置、および/または他の周辺装置を含んでもよい。たとえば、いくつかの実施形態では、周辺機器160は、ディスプレイ、タッチスクリーン、グラフィックス回路、キーボード、マウス、スピーカシステム、マイクロフォン、ネットワークインターフェース、および/または他の入力/出力装置、インターフェース装置、および/または周辺装置を含み得る。
もちろん、コンピューティング装置100は、当業者が容易に思いつくように、他の要素(図示せず)を含むこともでき、また、特定の要素を省略することもできる。例えば、当業者によって容易に理解されるように、コンピューティング装置100には、様々な他の入力デバイスおよび/または出力デバイスが含まれ得る。例えば、様々なタイプの無線および/または有線の入力装置および/または出力装置を使用することができる。さらに、追加のプロセッサ、コントローラ、メモリなど、様々な構成で利用することもできる。処理システム100のこれらおよび他の変形例は、本明細書で提供される本発明の教示を考慮すれば、当業者によって容易に企図される。
本明細書で使用する場合、「ハードウェアプロセッササブシステム」または「ハードウェアプロセッサ」という用語は、1つまたは複数の特定のタスクを実行するために協働するプロセッサ、メモリ(RAM、キャッシュなどを含む)、ソフトウェア(メモリ管理ソフトウェアを含む)、またはそれらの組合せを指すことができる。有用な実施形態では、ハードウェアプロセッササブシステムは、1つまたは複数のデータ処理要素(たとえば、論理回路、処理回路、命令実行デバイスなど)を含むことができる。1つまたは複数のデータ処理要素は、中央処理装置、グラフィック処理装置、および/または別個のプロセッサベースまたはコンピューティング要素ベースのコントローラ(たとえば、論理ゲートなど)に含めることができる。ハードウェアプロセッササブシステムは、1つまたは複数のオンボードメモリ(たとえば、キャッシュ、専用メモリアレイ、読取り専用メモリなど)を含むことができる。いくつかの実施形態では、ハードウェアプロセッササブシステムは、オンボードまたはオフボードにすることができる、またはハードウェアプロセッササブシステムによる使用のために専用にすることができる1つまたは複数のメモリ(例えば、ROM、RAM、基本入出力システム(BIOS)など)を含むことができる。
いくつかの実施形態では、ハードウェアプロセッササブシステムは、1つまたは複数のソフトウェア要素を含み、実行することができる。1つまたは複数のソフトウェア要素は、オペレーティングシステムおよび/または1つまたは複数のアプリケーションおよび/または特定の結果を達成するための特定のコードを含むことができる。
他の実施形態では、ハードウェアプロセッササブシステムは、指定された結果を達成するために1つまたは複数の電子処理機能を実行する専用の専用回路を含むことができる。そのような回路は、1つまたは複数の特定用途向け集積回路(ASIC)、FPGA、および/またはPLAを含むことができる。
ハードウェアプロセッササブシステムのこれらおよび他の変形例も、本発明の実施形態に従って企図される。
図2は、本発明の一実施形態による例示的なシステムワークフロー200を示すフロー図である。
システムワークフロー200は、以下のブロック、すなわち、プログラムバイナリ210、バイナリ分析・システムコールマッピング学習220、システムコールシーケンスコーパス・埋め込みモデル230、システムコールトレース240、システムコール-ユーザ関数検索250、ユーザ関数情報によって強化されたシステムコールトレース260、来歴グラフの構築270、およびユーザ関数情報によって強化された来歴グラフを含む。
プログラムバイナリ210は、コンピュータシステムがプログラムを実行するために必要なメタデータおよび命令を含む物理ファイルである。プログラムバイナリは、本発明のシステムの必要な入力である。なぜなら、システムコールトレースを充実させるために1つまたは複数のプログラムバイナリから抽出された情報に依存するからである。プログラムバイナリがシステムによって分析されるプロセスからのランタイムシステムコールトレースのみを強化することができる。
バイナリ分析・システムコールマッピング学習220のブロックは、入力プログラムバイナリに対して分析を実行し、システムコールおよびユーザ関数情報を抽出する。具体的には、プログラムバイナリで識別されたユーザ関数ごとにシステムコールシーケンスコーパスを生成する。このようなコーパスは、各ユーザ関数の可能なシステムコールシーケンスパターンを表す。ブロック220では、分析されたすべてのユーザ関数からのコーパスを使用して、システムコールシーケンスをベクトル空間表現に変換することができる埋め込みモデルを訓練する。さらに、ブロック220では、下流のステップのためのユーザ関数間の呼び出し関係も収集する。
システムコールシーケンスコーパス・埋め込みモデル230は、バイナリ分析・システムコールマッピング学習220からの主要な出力である。プログラムバイナリで識別された各ユーザ関数について、220は、その関数を実行した結果である可能性があるいくつかの可能なシステムコールシーケンスを含むコーパスを生成する。コーパス内のシステムコールシーケンスは、異なる長さであってもよいが、所定の最大長を超えてはならない。システムコールの一例としては、自然言語の文に似た「getsockname sendto recvmsg recvmsg」があるが、文中の各単語は、基盤となるオペレーティングシステムによって事前定義されたシステムコールの名前である。埋め込みモデルは、そのようなシステムコールシーケンスを、異なるシーケンス間の距離を計算するための数学的空間でシーケンスを表す固定長ベクトルに変換することができる。
システムコールトレース240は、システムがプログラムレベルの情報を強化しようとする入力である。通常、このようなトレースは、モデムオペレーティングシステムの既存のメカニズムおよびsysdigなどのサードパーティサポートツールによって取得することができる。システムコールトレースでは、通常、各エントリは、呼び出されたシステムコール、呼び出し元のプロセスおよびスレッド、システムコールに渡される引数、およびシステムコールからの戻り値に関する情報を含む。本発明のシステムでは、入力トレースがプロセスおよびスレッドによって分離され、したがって、各トレースは、インターリービングなしに、単一のプロセスの単一のスレッドからのシステムコール情報のみを含むと仮定している。
システムコール-ユーザ関数検索250に関して、各システムコールトレースについて、ブロック250は、220によって抽出および生成された情報に対するクエリとしてトレースのいくつかのセグメントを使用する複数の反復検索を実行する。検索中、ブロック250は、ブロック220からの埋め込みモデルを利用して、システムコールクエリをベクトル表現に変換し、埋め込み空間において類似性検索を実行し、ブロック220で生成されたいくつかのコーパスで類似のシステムコールシーケンスを識別する。このような類似のシーケンスがいくつかのユーザ関数から収集されるので、システムは、これらの関数をトレース内のシステムコールのソースの可能性が高いとみなす。ブロック250はまた、より正確なユーザ関数を得るために、検索範囲を絞り込むいくつかのヒューリスティックを組み込んでいる。検索の後、ブロック250は、トレース内のシステムコールのいくつかのセグメントをトリガする、最も可能性の高いユーザ関数を識別する。
ユーザ関数情報によって強化されたシステムコールトレース260は、入力システムコールトレースをユーザ関数情報で強化するブロック250からの出力である。具体的には、元のシステムコールトレースは、セグメントに分割され、セグメントの各々は同じユーザ関数に由来する可能性があり、セグメントの各々は可能性の高いユーザ関数でラベル付けされる。例えば、前述のシステムコールシーケンスの例「getsockname sendto recvmsg recvmsg recvmsg」は、ブロック250によって、典型的なLinuxシステムのプログラムバイナリlibc.so.6の関数getaddrinfoから可能性が高いと識別される。場合によっては、ラベルは、複数の可能性の高いユーザ関数を含んでもよい。
来歴グラフ構築270は、いくつかのシステムコールトレースを入力とし、システムエンティティ(たとえば、プロセス、ファイル、ソケットなど)および特定のシステムコールによって反映されるエンティティ関係(たとえば、プロセスがファイルを読み取る)を表すノードおよびエッジを反復的に追加することによって来歴グラフを構築する。このプロセスは、関心のあるファイルなど、特定のユーザ指定のエンティティから開始し、システムコールを介して既にグラフに含まれているエンティティに関連付けることができる他のエンティティを反復的に識別する。このグラフ構築は、本発明の一部ではないが、本発明のオリジナルの方法によってシステムコールにラベル付けされたプログラムレベルの情報によって強化され、その結果、充実したグラフが得られる。
次に、本発明の一実施形態による、ユーザ関数情報によって強化された来歴グラフについて説明する。
図3は、本発明の一実施形態による、プログラムレベル情報のエンリッチメント388を有する例示的な来歴グラフ300を示すブロック図である。
本明細書で使用される「プログラムレベル情報」とは、収集および表示されたシステムコールをトリガしたユーザ関数およびライブラリ/バイナリオブジェクトの名前などの高レベル情報を指す。
グラフは、2つのソケットから読み書きするプロセスを表す。2つのソケットとそれらに関連する動作との間に何らかの差異があるかどうかを理解する場合、またはある来歴ベースのアプリケーションが、2つのソケットがすべて正常であるか、または一方が異常であるかどうかを判断する場合、ユーザ関数情報(「geiaddrinfo@libc.so.6のコンテキストにおいて」)388なしに来歴グラフだけに頼っていては、両者を区別する指標がないので、十分ではない。一方、ユーザ関数情報388は、ソケットとその関連動作のうちの1つが、「人間が読めるテキスト表現とオペレーティングシステムのネットワーキングAPIのための構造化バイナリフォーマットとの間で、ドメイン名、ホスト名、およびIPアドレスを変換する」ことが知られている関数getaddrinfoのコンテキスト中にあることを示す、強化されたシステムコールトレースから構築された追加のラベルを含む。この高レベル(プログラムレベル)情報により、低レベルのソケット動作の実際のプログラムセマンティクスを決定することができ、それによって、より多くのコンテキスト情報を、来歴グラフの理解および意思決定プロセスに効果的に組み込むことができる。さらに、この関数情報388を用いると、P1とソケット1の間の2つのエッジをマージしてグラフサイズを小さくすることで、グラフを圧縮することもできる。図3の例示的なグラフ300を考える。このような低レベルの来歴グラフは、システムコールによってラベル付けされたエッジを有する。プロセスが非常にアクティブであった場合、グラフは非常に大きくなり、そのそれぞれがシステムコールに対応する多くのエッジを含む。前述のように、複数のシステムコールは、単一のユーザ関数によってトリガされる場合がある。したがって、ユーザ関数は、それらのトリガされたシステムコール(すなわち、グラフエッジ)を効果的にグループ化して、来歴グラフ内のエッジおよびノードの数を低減することができる(別名、圧縮)。結果として得られるグループ内の圧縮されたエッジは、システムコールではなく、ユーザ関数によってラベル付けされる。このような圧縮は、グラフサイズが問題となり、来歴グラフに基づくアプリケーションを阻害する多くのシナリオにおいても有用である。
図4は、本発明の一実施形態による、後の検索ステップのためにプログラムバイナリから情報を抽出するための方法400のフロー図である。方法400は、入力としてプログラムバイナリを必要とし、個々のプログラムバイナリのシステムコールシーケンスコーパスおよび埋め込みモデルを出力する。
方法400は、以下のブロック、すなわち、プログラムバイナリ210、CFG抽出・削減410、グラフウォーキング420、システムコールシーケンスコーパス430、システムコールシーケンス埋め込み訓練440、およびシステムコールシーケンスコーパス・埋め込みモデル230を含む。
CFG抽出・削減410に関して、ブロック410は、バイナリ分析ツールを実行することから始まり、入力プログラムバイナリ内の各関数の制御フローグラフ(CFG)を抽出する。使用可能なツールには、angr、radare2、およびIDA逆アセンブラが含まれるが、これらに限定されない。図5は、本発明の一実施形態による制御フローグラフ(CFG)500である。図5に示されるようなツールの一般的なCFGでは、CFGの各ノードは、実行フローの変更で終了するプログラム命令のブロックを表し、2つのノード間の各エッジは異なる意味を持つ場合があるが、すべて、1つのノードから別のノードへの潜在的な実行フローを示す。可能なエッジには、関数呼び出し、関数戻り、条件付きジャンプ、および無条件ジャンプが含まれる場合がある。
抽出されたCFGごとに、ブロック410は、2つの追加の後処理動作を実行する。まず、ブロック410は、関数呼び出しで終了するノード(命令ブロック)を識別し、さらに、そのようなノードが別のユーザ関数への関数呼び出しであるか、またはシステムコールであるかを識別する。バイナリ分析ツールは、通常、このブロックが使用するコールターゲットを提供することができるが、呼び出し命令内の不定アドレス(non-constant address)のために、ツールが呼び出しターゲットを提供できない場合、ブロック410は、可能なアドレスを推測し、推測されたアドレスから始まる任意の関数を検索するヒューリスティックルールを適用する。すべての関数呼び出しノードを識別した後、ブロック410は、関数呼び出しノード間の関係を維持する本質的なグラフ構造を維持しながら、非関数呼び出しノードをできるだけ多く除去することによって、CFG削減を実行する。結果として得られるCFGは、関数呼び出しグラフになり、ノードは関数呼び出しを表すか、または空である。このようなグラフは、対応する完全なCFGと比較してノードとエッジが少なく、はるかに単純であり、プログラム実行中に関数呼び出し(ユーザ関数およびシステムコールの両方)がどのように行われるかを記述するものとする。図6は、図5に示すCFG500から縮小された関数呼び出しグラフ600の一例を示す。これは、元のCFG500の2つの関数呼び出し(呼び出しターゲットの名前によってラベル付けされている)が、それらのプログラム論理関係と同様に保持されることを示す。
グラフウォーキングステップ420は、410によって生成されたグラフを横断し、それらのグラフ内のシステムコールノードのみを含む経路に対応するシステムコールシーケンスを抽出する。ブロック420は、指定された長さまでのランダムウォークと、関数呼び出しによって関連付けることができるグラフを横断するためのnグラム列挙とを含む、異なるウォーキング戦略を採用する。システムコールは、通常、C標準ライブラリlibcなどの一部の一般的なプログラムライブラリにおいてトリガされ、システムコールをトリガするユーザ関数からlibc関数への複数のレベルの関数呼び出しが存在する可能性があるため、ブロック420は、システムコールを直接トリガしない高レベルのユーザ関数と、システムコールをトリガする低レベルのユーザ関数との境界に基づいて、2層のウォーキングを実行する。特に、高レベルのユーザ関数のグラフ上で、ブロック420は、システムコールをさらにトリガし得る低レベルのユーザ関数へのすべての関数呼び出しのnグラム列挙を実行する(そのような低レベルのユーザ関数は、典型的にはlibc関数である)。次いで、列挙された各低レベルのユーザ関数とそれによって呼び出される関連する関数のグラフ内で、ブロック420はさらに、ユーザ指定の長さまでの各システムコールノードから始まるランダムウォークを、ユーザ指定の回数まで実行して、システムコールシーケンスを収集する。nグラム列挙とランダムウォークの組み合わせは、組み合わせた全てのターゲットグラフが完全に横断するには大き過ぎて複雑になり過ぎるという経路爆発問題(path explosion problem)に対処する。
次に、システムコールシーケンスコーパス430について説明する。グラフウォーキング420の結果は、2つの部分、すなわち、各低レベルのユーザ関数に対するシステムコールシーケンスコーパス(420のランダムウォークによって抽出される)と、高レベルのユーザ関数のコンテキストを有する低レベルのユーザ関数のコールパターンのメタデータ(420のnグラム列挙によって抽出される)とを含む。各システムコールシーケンスコーパスには、420のランダムウォークで指定された長さまでのシステムコールの可変数の名前で構成される1つ以上のシステムコールシーケンスが含まれる。各コーパスは、関連する低レベルのユーザ関数からサンプリングされた可能なシステムコールパターンを表す。呼び出しパターンのメタデータは、nグラムの形式で低レベルのユーザ関数呼び出しパターンを表す。たとえば、ユーザプログラムで、低レベルのlibc関数getaddrinfoの呼び出しがtzsetの呼び出しに先行する場合、呼び出しパターンgetaddrinfoとtzsetは、それらの呼び出し元の高レベルのユーザ関数とともにメタデータに含まれる。
システムコールシーケンス埋め込みトレーニング440に関して、分析されたプログラムバイナリについて、ブロック440は、異なるユーザ関数からサンプリングされたシステムコールシーケンスコーパスを使用して埋め込みモデルを訓練グする。結果として得られる埋め込みモデルは、システムコールのシーケンス(より具体的にはシステムコールの名前)を固定長のベクトル(埋め込み)に変換することができ、同様のシーケンスは互いに近接しているという特性を有する。この埋め込み特性により、下流のステップで類似のシステムコールシーケンスの不正確な検索を実行できる。ブロック440の埋め込み技術は、自然言語処理における文書埋め込みとして一般に知られている。前述の特性を満たすことができるそのような文書埋め込み技術のいずれも、例えば、sent2vecおよびdoc2vecとして使用可能である。
図7は、本発明の一実施形態による、システムコール-ユーザ関数検索700のフロー図である。特に、図7は、複数のクエリとして入力システムコールトレースをモデル化し、事前訓練された埋め込みモデルを使用してシステムコールシーケンスコーパス上でクエリ検索を実行して、入力システムコールのユーザ関数を識別するフロー図を示す。本発明のシステムは、入力トレースがプロセスおよびスレッドによって分離されることを前提としているため、各トレースは、インターリービングなしに、単一のプロセスの単一のスレッドからのシステムコール情報のみを含む。以下のステップのすべての説明は、トレース内のプロセス名によって知られている単一のプログラムからの単一のトレース(すなわち、システムコールの単一のシーケンス)に基づいている。
システムコール-ユーザ関数検索700は、以下のブロック、すなわち、システムコールトレース240、第1のトレースセグメンテーション710、長いグトレースセグメント720、短いトレースセグメント730、第2のトレースセグメンテーション740、システムコールシーケンスコーパス・埋め込みモデル230、候補検索・選択750、候補品質評価760、およびユーザ関数情報によって強化されたシステムコールトレース260を含む。
第1のトレースセグメンテーション710に関して、240からの入力システムコールトレースは任意に長くすることができるので、ブロック710は、長いトレースを、後のステップで扱いやすい短いセグメントにセグメント化しようとする。セグメント化を実行するために、ブロック710は、入力トレース内の特定のランドマークシステムコールを検索し、それらのランドマークポイントでトレースをセグメント化する。このコンテキストでのランドマークシステムコールとは、一部の低レベルのユーザ関数によって一意的かつ排他的にトリガされるシステムコールを指す。このような低レベルのユーザ関数は、ユーザプログラム内のブロック120によって識別される。ブロック710の結果は、可変長の複数のトレースセグメントを含む。ブロック420で定義されたグラフウォーキング長に応じて、これらのセグメントは、2つのタイプ、すなわち、長いトレースセグメント(ブロック720)および短いトレースセグメント(ブロック730)に分類され得る。
長いトレースセグメント720は、グラフウォーキング長を超えるシステムコールトレースのセグメントである。
短いトレースセグメント730は、グラフウォーキング長の範囲内にあるシステムコールトレースのセグメントである。
第2のトレースセグメンテーション740は、ブロック710によって生成された長いトレースセグメント(ブロック720)に対してさらなるセグメンテーションを実行する。なぜなら、トレース長がグラフウォーキング長よりも長い場合、ブロック750によって実行された検索が有効でない可能性があるからである。この第2のセグメンテーションは、低レベルのユーザ関数から別のユーザ関数に遷移する可能性が高い任意のポイント、すなわち、そのポイントの前後のシステムコールが2つの異なるより低レベルのユーザ関数から来る可能性が高い任意のポイントで、長いトレースセグメントをさらに分割することを試みる。そうするために、ブロック740は、2つのサブステップ、すなわち、(1)長いトレースセグメントにわたって増加するウィンドウを使用して、異なる長さのサブシーケンスに対する可能性のある低レベルのユーザ関数の候補を識別する類似性検索と、(2)適切なカッティングポイントを識別するために、異なるウィンドウサイズの検索からの識別された候補間のJaccard類似性指数
Figure 2023537815000002
の測定とを実行する。重要な洞察は、ある時点で測定されたJaccard類似性指数が大幅に低下した場合、その時点は先行するすべてのシステムコールが異なる低レベルのユーザ関数から来る可能性のある遷移点となる可能性が高いということである。
ブロック740のトイ例として、システムコールセグメント「getsockname sendto recvmsg recvmsg recvmsg」が与えられると、ブロック740は、まず、検索クエリとして、システムコールサブシーケンスの所定の最小長、例えば「getsockname sendto recvmsg」から始まる類似性検索を実行する。類似性検索を行う際に、ブロック740は、ブロック230からの埋め込みモデルを用いてサブシーケンスをベクトル表現に変換し、次いで、埋め込み空間内の(ブロック230からのコーパス内の)上位k個の最も近いシステムコールシーケンスを検索する。検索結果を用いて、ブロック740は、それらの識別された最も近いシーケンスが由来する低レベルのユーザ関数の候補セットC1を作成する。最初の反復後、ブロック740は、より多くのシステムコールを含むようにウィンドウを増加させ、例えば、ウィンドウを1増やして新しい検索クエリ「getsockname sendto recvmsg recvmsg」を作成し、検索を繰り返して別の候補セットC2を取得する。ブロック740は、検索クエリが所定の長さに達するまで、またはセグメント全体の長さのいずれか小さい方に達するまで、より多くの候補集合C3、C4、…、Cnを得るために、そのような類似性検索を繰り返す。すべての候補セットを用いて、ブロック740は、隣接する反復からの候補セット間、すなわち、C1とC2との間、C2とC3との間などから、Jaccard類似性指数を計算する。n回の反復について、ブロック740は、n-1個のJaccard類似性指標を計算し、ユーザ指定の閾値を下回る最小値は、最も可能性の高いカッティングポイントが2つの対応する検索クエリの増分部分にあることを示す。したがって、ブロック740は、これらのシステムコールで長いトレースセグメントをさらにセグメント化し、最後のカッティングポイントから始まるプロセス全体を繰り返して、残りのすべての長いトレースセグメントを短いトレースセグメントにセグメント化する。
各短いトレースセグメント730について、候補検索・選択ブロック750は、セグメント内のシステムコールの各々をトリガする可能性が最も高い低レベルのユーザ関数を識別する。また、ブロック230からのメタデータを用いて、ブロック750は、それらの識別された低レベルのユーザ関数を呼び出す高レベルのユーザ関数を列挙する。ブロック750は、セグメント内のシステムコールが異なる低レベルのユーザ関数から来る可能性があると仮定する。したがって、まず、セグメント内のシステムコールのすべての可能なセグメンテーションを列挙する。n個のシステムコールの場合、2n-1個の異なるセグメンテーションがある。例えば、「getsockname sendto recvmsg」のセグメントでは、異なる関数から来る可能性があると仮定し、このステップでは、4つの異なるステップ、すなわち、(1)「getsockname」、「sendto」、「recvmsg」、(2)「getsockname sendto」と「recvmsg」、(3)「getsockname」と「sendto recvmsg」、(4)「getsockname sendto recvmsg」を列挙する。このような場合のそれぞれについて、ブロック750は、次に、すべてのシステムコールサブシーケンスに対して類似性検索(ブロック540にも記載されている)を実行して、可能性のある関数の候補セットを取得する。その結果、それぞれの場合にシステムコールのサブシーケンスに対応する候補セットのリストがあり、合計で2n-1個のそのようなリストが、n個のシステムコールを持つセグメントのユーザ関数の異なる選択肢を表す。それらすべてのリスト(選択肢)の中で、ブロック750は、次に、ブロック760を呼び出して、個々の選択肢の各々の尤度を評価し、その出力として、最も可能性の高いユーザ関数の候補を有する最も可能性の高い選択肢を選択する。図8は、本発明の一実施形態による、図7の候補検索・選択ブロック750の一例を示すブロック図である。
候補品質評価ブロック760は、選択肢に相対スコアを割り当てることによって、ブロック750からの選択肢の尤度(すなわち、セグメンテーションからの各サブシーケンスに対する候補関数を有するn個のシステムコールに関する特定のセグメンテーション)を評価する。対応するスコアを割り当てられた選択肢を用いて、ブロック750は、最も重要なスコアを有する選択肢を選択することができる。このステップでは、ブロック750からの選択に関連する複数の測定可能な要因によってスコアを決定する。まず、低レベルのユーザ関数の呼パターンと、高レベルのユーザ関数のコンテキストを利用する。この情報は、本質的に、隣接するサブシーケンスについて識別された候補関数のうち、ユーザプログラムに呼び出しパターンを持っている可能性が高いものを見分けるフィルタリング能力を提供するものである。したがって、このようなパターンに現れる候補関数はアップウェイトされ、その他の候補関数はダウンウェイトされる。次に、このステップでは、距離が良好な選択と不良な選択とを区別する特定の分布に従うことが予想されるので、類似性検索において識別された上位k個の最も近いシステムコールシーケンスの埋め込み空間距離も活用する。特に、良好な選択のためには、全てのサブシーケンスの検索からのそのような距離の平均および分散は、不良な選択のものよりも低いままであるべきである。
図9は、本発明の一実施形態による、図2のブロック250によって強化されたシステムコールトレースを用いた例示的な来歴グラフ構築プロセス900を示すフロー図である。強化されたシステムコールトレースにより、結果として得られるグラフは、他のダウンストリームタスクに有用なプログラムレベルの情報を提示する。このグラフ構築プロセスは、基本的に、特定のシステムエンティティ(プロセス、ファイル、およびソケット)のシステムコールトレースの検索および追跡と、特定のシステムコール(読み取り、書き込みなど)に関するそれらの関連操作を実行する。
来歴グラフ構築プロセス900は、以下のブロック、すなわち、ユーザ関数情報によって強化されたシステムコールトレース260と、開始点を選択するための基準910と、反復追跡・グラフ構築920と、追跡を停止するための基準930と、ユーザ情報ラベル付けによる後処理940と、ユーザ関数情報によって強化された来歴グラフ280を含む。
開始点を選択するための基準910に関して、グラフ構築の開始点は、通常、指定された開始タイムスタンプを有する、ユーザ指定の関心のあるシステムエンティティである。このようなシステムエンティティは、特定のプログラムのプロセスであってもよく、特定の名前パターンに一致するファイルであってもよい。
反復追跡・グラフ構築920に関して、初期点から開始して、追跡プロセスは、システムエンティティの相互作用および時間を通して前方追跡および後方追跡を反復的に実行する。例えば、開始点がファイルである場合、前方追跡では、トレースにおいて、指定されたタイムスタンプの後にファイルを読み取るすべてのプロセスを識別し、後方追跡では、指定されたタイムスタンプの前にファイルに書き込むすべてのプロセスを識別する。識別されたエンティティおよび動作は、それぞれ、来歴グラフのノードおよびエッジになる。
追跡を停止する基準930に関して、システムは動作を継続し、任意の数の関連するシステムエンティティおよび動作を生成することができるので、グラフが無限に成長することを防止するために、ある時点で追跡を停止する必要がある。そのような基準は、時間範囲、すなわち、開始タイムスタンプからの特定の時間範囲のみを追跡すること、または開始点からのホップ数に基づくことができるが、これらに限定されない。
ユーザ関数情報ラベル付けによる後処理940に関して、グラフ構築プロセスがシステムコールトレースを検索し、関心のあるエンティティおよび動作を識別する際、トレースにユーザレベルのプログラム情報が添付されていると、当然、来歴グラフ内のノード/エッジラベルに組み込むことができる情報の別の層を提供することになる。したがって、このステップでは、前のステップで構築されたグラフに、さらにプログラムレベルのラベルを追加する。さらに、このステップでは、プログラムレベルのラベルに基づいてノードとエッジを圧縮し、より簡潔なグラフを作成する。例えば、一連の連続する動作(エッジ)とサブジェクトエンティティ(ノード)がすべて同じプログラムレベルのラベルでラベル付けされる場合、これらの対応するエッジは、全体としてプログラム論理の単位全体を表すので、一緒にマージされる場合がある。
次に、本発明の一実施形態による侵入の検出および調査について説明する。
一実施形態では、本発明を適用する侵入検出システムは、入力としてシステムコールシーケンスを受信し、潜在的な侵入信号について不規則なシステムコールを検出する。説明の便宜上、本発明は、侵入検出および/または侵入調査を改善するために、2つの異なる方法で適用することができる。
侵入検出を改善する設定において、本発明の実施形態は、システムコールシーケンスの前処理モジュールとしてインストールすることができる。この前処理により、低レベルで冗長なシステムコールシーケンスは、高レベルのシステム動作を記述するエッジラベルを有する来歴グラフに変換される。そして、この来歴グラフは、グラフベースの侵入検出アルゴリズムに供給することができる。従来の来歴グラフに対して本発明の実施形態によって導入される主な改善点は、結果として得られるグラフが非常にコンパクトで冗長性が低くなり、スケーラビリティが向上し、効果的な検出のためにいくつかの複雑な攻撃が及ぶ可能性のあるはるかに大きな実行コンテキストを符号化することである。
侵入調査を改善する設定では、本発明の実施形態は、検出されたシステムコール異常をより高いシステムレベルで説明するための後処理モジュールとしてインストールすることができる。本発明の実施形態は、異常が検出されたシステムコールシーケンスを取り入れ、セキュリティアナリストが何が起こったかを理解するのに役立つように、低レベルのシステムコールをプログラムコンテキストを有する高レベルの来歴グラフにマッピングする。結果として得られる高レベルのグラフは、低レベルのシステムコールシーケンスよりも調査および理解を容易にする。
図10は、本発明の実施形態による、侵入検出のための例示的な方法1000を示すフロー図である。
ブロック1010で、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立する。
ブロック1020で、マッピングを入力する検索アルゴリズムと、実行時にキャプチャされたシステムコールトレースとを使用して、システムコールトレース内の低レベルのシステムコールをトリガするユーザ関数のいずれかを識別する。
ブロック1030で、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行し、来歴グラフは、システムコールトレース内の低レベルのシステムコールをトリガするユーザ関数から形成されたノードを有し、来歴グラフ内のエッジは、低レベルのシステムコールから高レベルのシステム動作への相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルを有する。
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(またはメディア)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持および格納することができる有形の装置であり得る。コンピュータ可読記憶媒体は、たとえば、電子記憶装置、磁気記憶装置、光記憶装、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードなどの機械的に符号化された装置、または命令が記録された溝内の隆起構造、および前述の任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(たとえば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して送信される電気信号など、それ自体が一時的な信号であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置にダウンロードすることができ、また、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークなどのネットワークを介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを含むことができる。各コンピューティング/処理装置内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、SMALLTALK、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行してもよいし、ユーザのコンピュータ上で部分的に実行してもよいし、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、および、リモートコンピュータ上で部分的に、または、モートコンピュータもしくはサーバ上で完全に実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(たとえば、インターネットサービスプロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して、本明細書で説明される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることを理解されたい。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フロー図および/またはブロック図のブロックまたは複数のブロックで指定された機能/動作を実施するための手段を作成するように、機械を生成することができる。これらのコンピュータ可読プログラム命令はまた、、コンピュータ、プログラマブルデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよく、その結果、その中に格納された命令を有するコンピュータ可読記憶媒体は、フロー図および/またはブロック図のブロックまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含む。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他の装置にロードされ、コンピュータ、他のプログラマブルデータ処理装置、または他の装置上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上で実行される命令が、フロー図および/またはブロック図のブロックまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを生成する。
図中のフロー図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実施形態のアーキテクチャ、機能、および動作を示す。この点に関して、フロー図またはブロック図中の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を有する、モジュール、セグメント、または命令の一部を表すことができる。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序とは無関係に発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよいし、ブロックが関与する機能に応じて逆の順序で実行されてもよい。ブロック図および/またはフロー図の各ブロック、ならびにブロック図および/またはフロー図のブロックの組合せは、指定された機能または動作を実行する、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースのシステムによって実行できることにも留意されたい。
本明細書において、本発明の「一実施形態(one embodiment)」または「一実施形態(an embodiment)」への言及、およびその他の変形例への言及は、実施形態に関連して説明される特定の特徴、構成、特徴などが、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、明細書中のさまざまな場所に現れる「一実施形態において(in one embodiment)」または「一実施形態において(in an embodiment)」という語句、および任意の他の変形形態の出現は、必ずしもすべてが同じ実施形態を指すわけではない。
以下の「/」、「および/または」、および「少なくとも1つの」のいずれかの使用は、例えば、「A/B」、「Aおよび/またはB」、および「AおよびBの少なくとも1つ」の場合には、最初に列挙された選択肢(A)のみの選択、または2番目に列挙された選択肢(B)のみの選択、または両方の選択肢(AおよびB)の選択を包含することが意図されることを理解されたい。さらなる例として、「A、B、および/またはC」および「A、B、およびCの少なくとも1つ」の場合は、かかる表現は、1番目に列挙された選択肢(A)のみの選択、または2番目に列挙された選択肢(B)のみの選択、または3番目に列挙された選択肢(C)のみの選択、または1番目および2番目に列挙された選択肢(AおよびB)のみの選択、1番目と3番目に列挙された選択肢(AとC)のみの選択、または2番目と3番目に列挙された選択肢(BとC)のみの選択、または3つすべての選択肢(AとBとC)の選択を意図する。これは、本技術および関連技術分野の通常の知識を有する者が容易に理解できるように、列挙された項目の数だけ拡張することができる。
上記は、あらゆる点で例示的(illustrative)かつ典型的(exemplary)であり、限定的ではないと理解されるべきであり、本明細書に開示される本発明の範囲は、詳細な説明から決定されるべきではなく、むしろ特許法によって許容される全範囲に従って解釈される特許請求の範囲から決定されるべきである。本明細書に示され、説明された実施形態は、本発明の例示にすぎず、当業者は、本発明の範囲および趣旨から逸脱することなく、様々な変更を実施できることを理解されたい。当業者は、本発明の範囲および精神から逸脱することなく、様々な他の特徴の組み合わせを実施することができる。このように、特許法によって要求される詳細および特殊性とともに、本発明の態様を説明してきたが、特許証によって請求され、保護されることを望まれるものは、添付の特許請求の範囲に記載されている。

Claims (20)

  1. コンピュータ侵入検出のためのコンピュータ実施方法であって、
    低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立すること(1010)であって、前記ユーザ関数がオペレーティングシステムのユーザ空間で実行されることと、
    前記マッピングを入力する検索アルゴリズムと実行時にキャプチャされたシステムコールトレースとを使用して、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数のいずれかを識別すること(1020)と、
    プロセッサ装置によって、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行すること(1030)と、を含み、前記来歴グラフは、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数から形成されるノードを有し、前記来歴グラフ内のエッジは、低レベルのシステムコールから高レベルのシステム動作への相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルを有する、コンピュータ実施方法。
  2. 前記マッピングを確立することは、前記コンピュータプログラムに対してバイナリ分析および機械学習を実行して、前記ユーザ関数から制御フローグラフ(CFG)を抽出し、システムコールをトリガするか、または他のユーザ関数に関数呼び出しを行うCFGノードを識別することと、前記CFGを介してグラフウォークを実行して、前記関数呼び出しがトリガする可能性があるシステムコールシーケンスを収集することと、前記システムコールシーケンスを使用して、前記システムコールシーケンスの中から、システムコールシーケンスをベクトル空間表現に変換することができるシステムコールシーケンスの埋め込みモデルを訓練することと、を含む、請求項1に記載のコンピュータ実施方法。
  3. 前記システムコールシーケンスを使用して、システムコールシーケンスの埋め込みモデルを訓練することは、前記ユーザ関数の各々の可能なシステムコールシーケンスのパターンを表す前記ユーザ関数の各々のシステムコールシーケンスのコーパスを生成することと、前記ユーザ関数の各々について生成された前記コーパスを用いて前記システムコールシーケンスの埋め込みモデルを訓練することと、を含む、請求項2に記載のコンピュータ実施方法。
  4. 前記埋め込みモデルは、可変長のシステムコールシーケンスを、前記ベクトル空間表現として固定長のベクトルに変換する、請求項2に記載のコンピュータ実施方法。
  5. 前記検索アルゴリズムは、ユーザ関数識別のための検索空間を低減するために、前記システムコールトレースをセグメント化するヒューリスティック方法と、前記システムコールシーケンスの埋め込みモデルと、前記CFGから収集された前記システムコールシーケンスと、ヒューリスティックのセットとを利用して、前記システムコールトレースのセグメント内の前記ユーザ関数の可能なものの候補を列挙する検索方法と、前記候補のうちの異なるものを比較し、検索出力として最も可能性の高い候補のセットを選択する品質測定機能とを備える、請求項1に記載のコンピュータ実施方法。
  6. 前記システムコールトレースで前記低レベルのシステムコールをトリガする前記ユーザ関数の前記いずれかが、埋め込み空間内で識別される、請求項1に記載のコンピュータ実施方法。
  7. 前記システムコールトレースをユーザ関数情報で強化することをさらに含む、請求項1に記載のコンピュータ実施方法。
  8. ユーザ関数情報に基づいて、前記来歴グラフの前記エッジのうちの2つをマージすることをさらに含む、請求項1に記載のコンピュータ実施方法。
  9. 関数呼び出しグラフを形成するために、前記CFGのうちの少なくとも1つに対して、そこから非関数呼び出しノードを除去することによってCFG削減を実行することをさらに含む、請求項1に記載のコンピュータ実施方法。
  10. システムコールシーケンスを抽出するために2層グラフウォーキングを実行することをさらに含み、前記2層グラフウォーキングの第1の層は、システムコールを直接トリガしない高レベルのユーザ関数と、システムコールをトリガする低レベルのユーザ関数との境界に基づいている、請求項1に記載のコンピュータ実施方法。
  11. コンピュータ侵入検出のためのコンピュータプログラム製品であって、該コンピュータプログラム製品は、プログラム命令を具現化した非一時的コンピュータ可読記録媒体を含み、該プログラム命令は、コンピュータによって実行可能であり、前記コンピュータに、
    前記コンピュータのプロセッサ装置によって、低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立すること(1010)であって、前記ユーザ関数がオペレーティングシステムのユーザ空間で実行されることと、
    前記プロセッサ装置によって、前記マッピングを入力する検索アルゴリズムと実行時にキャプチャされたシステムコールトレースとを使用して、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数のいずれかを識別すること(1020)と、
    前記プロセッサ装置によって、プログラムコンテキストを有する来歴グラフに応答して侵入検出を実行すること(1030)と、を含む方法を実行させ、前記来歴グラフは、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数から形成されるノードを有し、前記来歴グラフ内のエッジは、低レベルのシステムコールから高レベルのシステム動作への相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルを有する、コンピュータプログラム製品。
  12. 前記マッピングを確立することは、前記コンピュータプログラムに対してバイナリ分析および機械学習を実行して、前記ユーザ関数から制御フローグラフ(CFG)を抽出し、システムコールをトリガするか、または他のユーザ関数に関数コールを行うCFGノードを識別することと、前記CFGを介してグラフウォークを実行して、前記関数コールがトリガする可能性があるシステムコールシーケンスを収集することと、前記システムコールシーケンスを使用して、前記システムコールシーケンスの中から、システムコールシーケンスをベクトル空間表現に変換することができるシステムコールシーケンスの埋め込みモデルを訓練することと、を含む、請求項11に記載のコンピュータプログラム製品。
  13. 前記システムコールシーケンスを使用して、システムコールシーケンスの埋め込みモデルを訓練することは、前記ユーザ関数の各々の可能なシステムコールシーケンスのパターンを表す前記ユーザ関数の各々のシステムコールシーケンスのコーパスを生成することと、前記ユーザ関数の各々について生成された前記コーパスを用いて前記システムコールシーケンスの埋め込みモデルを訓練することと、を含む、請求項12に記載のコンピュータプログラム製品。
  14. 前記埋め込みモデルは、可変長のシステムコールシーケンスを、前記ベクトル空間表現として固定長のベクトルに変換する、請求項12に記載のコンピュータプログラム製品。
  15. 前記検索アルゴリズムは、ユーザ関数識別のための検索空間を低減するために、前記システムコールトレースをセグメント化するヒューリスティック方法と、前記システムコールシーケンスの埋め込みモデルと、前記CFGから収集された前記システムコールシーケンスと、ヒューリスティックのセットとを利用して、前記システムコールトレースのセグメント内の前記ユーザ関数の可能なものの候補を列挙する検索方法と、前記候補のうちの異なるものを比較し、検索出力として最も可能性の高い候補のセットを選択する品質測定機能とを備える、請求項11に記載のコンピュータプログラム製品。
  16. 前記システムコールトレースで前記低レベルのシステムコールをトリガする前記ユーザ関数の前記いずれかが、埋め込み空間内で識別される、請求項11に記載のコンピュータプログラム製品。
  17. 前記方法は、前記システムコールトレースをユーザ関数情報で強化することをさらに含む、請求項11に記載のコンピュータプログラム製品。
  18. 前記方法は、ユーザ関数情報に基づいて、前記来歴グラフの前記エッジのうちの2つをマージすることをさらに含む、請求項11に記載のコンピュータプログラム製品。
  19. 前記方法は、関数呼び出しグラフを形成するために、前記CFGのうちの少なくとも1つに対して、そこから非関数呼び出しノードを除去することによってCFG削減を実行することをさらに含む、請求項11に記載のコンピュータプログラム製品。
  20. コンピュータ侵入検出のためのコンピュータ処理システムであって、
    プログラムコードを格納するメモリ装置(140)と、
    前記メモリ装置に動作可能に結合されてハードウェアプロセッサ(110)と、を有し、
    前記ハードウェアプロセッサ(110)は、前記プログラムコードを実行し、
    低レベルのシステムコールからコンピュータプログラム内のユーザ関数へのマッピングを確立し、前記ユーザ関数は、オペレーティングシステムのユーザ空間で実行され、
    前記マッピングを入力する検索アルゴリズムと、実行時にキャプチャされたシステムコールトレースとを使用して、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数のいずれかを識別し、
    プログラムコンテキストを有する来歴グラフに応答して侵入検出を行い、前記来歴グラフは、前記システムコールトレース内の前記低レベルのシステムコールをトリガする前記ユーザ関数から形成されたノードを有し、前記来歴グラフ内のエッジには、低レベルのシステムコールから高レベルのシステム動作の相関に基づく侵入検出のための高レベルのシステム動作を記述するエッジラベルが設けられている、コンピュータ処理システム。
JP2022578821A 2020-08-14 2021-08-11 プログラムレベルのコンテキスト情報のマイニングと低レベルのシステムの来歴グラフへの統合 Active JP7489495B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063065530P 2020-08-14 2020-08-14
US63/065,530 2020-08-14
US17/398,514 2021-08-10
US17/398,514 US11741220B2 (en) 2020-08-14 2021-08-10 Mining and integrating program-level context information into low-level system provenance graphs
PCT/US2021/045530 WO2022035954A1 (en) 2020-08-14 2021-08-11 Mining and integrating program-level context information into low-level system provenance graphs

Publications (2)

Publication Number Publication Date
JP2023537815A true JP2023537815A (ja) 2023-09-06
JP7489495B2 JP7489495B2 (ja) 2024-05-23

Family

ID=80223612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022578821A Active JP7489495B2 (ja) 2020-08-14 2021-08-11 プログラムレベルのコンテキスト情報のマイニングと低レベルのシステムの来歴グラフへの統合

Country Status (4)

Country Link
US (1) US11741220B2 (ja)
JP (1) JP7489495B2 (ja)
DE (1) DE112021004293T5 (ja)
WO (1) WO2022035954A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966323B2 (en) * 2021-01-05 2024-04-23 Red Hat, Inc. Troubleshooting software services based on system calls
WO2023168302A2 (en) * 2022-03-02 2023-09-07 Sentinel Labs Israel Ltd. Systems, methods, and devices for executable file classification

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006053788A (ja) 2004-08-12 2006-02-23 Ntt Docomo Inc ソフトウェア動作監視装置及びソフトウェア動作監視方法
JP2006106939A (ja) 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
JP4256897B2 (ja) * 2006-06-16 2009-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション マッチング・サービスを提供するための装置、方法及びプログラム
US10313365B2 (en) * 2016-08-15 2019-06-04 International Business Machines Corporation Cognitive offense analysis using enriched graphs
US10664501B2 (en) * 2016-10-11 2020-05-26 International Business Machines Corporation Deriving and interpreting users collective data asset use across analytic software systems
US11194906B2 (en) * 2018-07-31 2021-12-07 Nec Corporation Automated threat alert triage via data provenance
EP3828708B1 (en) * 2019-11-29 2024-04-24 Johannes Gutenberg-Universität Mainz Method and system for controlling a switch in the execution mode of a processor
US11818145B2 (en) * 2019-12-09 2023-11-14 International Business Machines Corporation Characterizing user behavior in a computer system by automated learning of intention embedded in a system-generated event graph

Also Published As

Publication number Publication date
JP7489495B2 (ja) 2024-05-23
US20220050895A1 (en) 2022-02-17
US11741220B2 (en) 2023-08-29
DE112021004293T5 (de) 2023-07-06
WO2022035954A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
US11269965B2 (en) Extractive query-focused multi-document summarization
Sambasivan et al. Principled workflow-centric tracing of distributed systems
US20150242306A1 (en) System and method for creating change-resilient scripts
US20130325829A1 (en) Matching transactions in multi-level records
JP7489495B2 (ja) プログラムレベルのコンテキスト情報のマイニングと低レベルのシステムの来歴グラフへの統合
JP5318190B2 (ja) 情報処理装置及び情報処理方法及びプログラム
EP2707808A2 (en) Exploiting query click logs for domain detection in spoken language understanding
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
US20170161335A1 (en) Analyzing Tickets Using Discourse Cues in Communication Logs
WO2016130542A1 (en) Code relatives detection
JP2022037955A (ja) 学習モデルを選択するシステム
US9558462B2 (en) Identifying and amalgamating conditional actions in business processes
Soltani et al. Event reconstruction using temporal pattern of file system modification
CA3025233C (en) Systems and methods for segmenting interactive session text
US10250705B2 (en) Interaction trajectory retrieval
CN103971191A (zh) 工作线程管理方法和设备
US20170103128A1 (en) Search for a ticket relevant to a current ticket
CN111597224B (zh) 结构化信息的生成方法、装置、电子设备和存储介质
US11281475B2 (en) Reusable asset performance estimation
US11995105B2 (en) Merging totally ordered sets
Loyola et al. Learning graph representations for defect prediction
US11500940B2 (en) Expanding or abridging content based on user device activity
US11681865B2 (en) Annotating a log based on log documentation
US20220138434A1 (en) Generation apparatus, generation method and program
CN116401632A (zh) 用于创建受保护计算机代码的系统、方法和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240313

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: 20240507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240513

R150 Certificate of patent or registration of utility model

Ref document number: 7489495

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150