JP7046111B2 - マルウェアのランタイム中の自動検出 - Google Patents

マルウェアのランタイム中の自動検出 Download PDF

Info

Publication number
JP7046111B2
JP7046111B2 JP2020048093A JP2020048093A JP7046111B2 JP 7046111 B2 JP7046111 B2 JP 7046111B2 JP 2020048093 A JP2020048093 A JP 2020048093A JP 2020048093 A JP2020048093 A JP 2020048093A JP 7046111 B2 JP7046111 B2 JP 7046111B2
Authority
JP
Japan
Prior art keywords
computer application
data
application
model
transition
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
JP2020048093A
Other languages
English (en)
Other versions
JP2020095753A (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.)
Virsec Systems Inc
Original Assignee
Virsec Systems 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 Virsec Systems Inc filed Critical Virsec Systems Inc
Publication of JP2020095753A publication Critical patent/JP2020095753A/ja
Application granted granted Critical
Publication of JP7046111B2 publication Critical patent/JP7046111B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Description

関連出願
本出願は、2013年9月12日に出願された米国仮出願第61/960,209号の利益を主張する。この米国仮特許出願の全教示内容は、参照をもって本明細書に取り入れたものとする。
サイバー攻撃は日々ますます高度化している。大量の攻撃が特定のアプリケーションにおける特定の脆弱性に付け込むことを対象としている。これらの攻撃は、明らかに不正にみえるネットワーク動作を引き起こさないので、ネットワーク層では識別不可能である。これらの標的型攻撃に対処するために、ベンダの多くは製品を開発している。このような製品としては、例えば、アプリケーションの挙動の追跡を試みる次世代ファイアウォールや、サンドボックスで不審なコードの実行を試みてその不審なコードが不正動作を起こすのを待つというサンドボックス技術などがある。しかし、これらの場合、マルウェアは、単にその挙動にわずかに変更するか、あるいはその悪意ある目的を実行するために長時間待機する。このような挙動の変化によって、製品は攻撃の挙動を認識しにくくなるため、製品のマルウェア検出能力が著しく低下する。
単一および複数アプリケーション、閉鎖および分散型アプリケーション、独立型アプリケーション、ウェブ上のアプリケーション、およびクラウド上のアプリケーションを含むコンピュータアプリケーションであるが、これらに限定はされるわけではないコンピュータアプリケーションは、マルウェア攻撃に対して脆弱である。今日、コンピュータアプリケーションに対するマルウェア攻撃の大多数は、コンピュータアプリケーションの実行プロセスに不正コンテンツを挿入してその後に実行するという悪意ある行為者の才能に帰結する。そのような不正コンテンツを挿入する工程では、不適当な入力検証を行う不十分に設計されたコードを識別しこれに付け込む。現時点のサイバーセキュリティー技術では、サンドボックスにおいて、アプリケーションにおける不正コンテンツを観察すること、アプリケーションの挙動を追跡すること、または不審なコードの挙動を選別することを試みている。これら技術には、悪質なコンテンツの挿入を示すイベントを確実に検出するために、十分に小さい粒度でリアルタイムにコンピュータアプリケーションを調べる能力は無い。また、これら技術には、マルウェアがその悪質な目的を成功裏に実行する前にマルウェア攻撃を正確に識別するために、そのようなイベントを長い時間かけて追跡し相関させる能力は無い。
ある例示的な方法およびその装置は、ロードタイム中(読込み時)にコンピュータアプリケーションのモデルを抽出して格納する。この例示的な方法およびその装置はまた、ランタイムにデータを収集するように、ロードタイムにコンピュータアプリケーションに指示を挿入する。ランタイムに収集されたデータは、コンピュータアプリケーションの格納されたモデルと照合して解析されて、1つまたは複数のセキュリティイベントが検出される。この方法およびその装置は、状態マシンを用いて、攻撃者によって引き起こされた1つ以上のセキュリティイベントを追跡する。
いくつかの実施形態において、上記方法およびその装置は、コンピュータアプリケーションデータのモデルの一部として、以下のうちの1つ以上を抽出してもよい:遷移マッピングデータ、メモリマッピングデータ、ソフトスポット(脆弱箇所)データ、および/またはコンピュータアプリケーションが呼び出す、アクセス許可および権限に影響するOS関数またはシステムコール。これら情報はモデルデータベースに格納されてもよい。さらに、上記方法およびその装置は、少なくとも一部においてコード逆アセンブラを用いてコンピュータアプリケーションのモデルを抽出してもよい。抽出されたコンピュータアプリケーションはバイナリ形式やインタプリタ形式を含む種々の形式であってもよい。
例示的な実施形態において、上記方法およびその装置は、ロードタイム中に保全性のためにコンピュータアプリケーションをチェックしてもよい。上記方法およびその装置は、コードのMD5ハッシュなどのチェックサムを計算することにより、または信頼できるチェックサム検査サービスを用いて、保全性のために前記コンピュータアプリケーションをチェックしてもよい。
いくつかの実施形態において、モデルデータベースは、コンピュータアプリケーションをモデル化する1つ以上のテーブルを含む。さらに、モデルデータベースはローカルまたはリモートシステム上にあってもよい。モデルデータベースがリモートシステム上にある場合、上記方法およびその装置は、コンピュータアプリケーションのモデルを、リモートシステムへ伝送してデータベースに格納するために、パッケージ化してもよい。データベースのパッケージ化されたモデルは、TCP/IPまたはUDPなどの標準ベースのトランスポートプロトコルを用いて送信されてもよい。
例示的な実施形態において、上記方法およびその装置は、ダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジン(バイトコードデータ・データ記録手段装備・エンジン)を用いて、ロードタイムにおいてコンピュータアプリケーションにインストルメンテーション(データ記録手段装備)の指示を挿入する。データ記録手段が装備されたアプリケーションを実行すると、ランタイムに収集されたデータを、解析用に他のプロセスへの伝送のために、パッケージ化してもよい。この解析用の他のプロセスは、ローカルまたはリモートシステム上にあってもよい。さらに、ランタイムに収集されたデータは、コンピュータアプリケーションの1つ以上のスレッドのデータを含んでもよい。
いくつかの実施形態において、ランタイムに収集されたデータをコンピュータアプリケーションの格納されたモデルと照合して解析する時、上記方法およびその装置は、以下のうちの1つ以上を解析してもよい:遷移データ、アクセス許可および権限に影響する重要なOS関数およびシステムコール、メモリ書込み、ヒープ割当てまたは割当て解除、および/またはソフトスポットデータ。
例示的な実施形態において、状態マシンを用いて1つ以上のセキュリティイベントを追跡することは、定義済みのシーケンスに基づいてイベントを相関させることを含む。1つ以上のセキュリティイベントを追跡することは、そのイベントのためのフォレンジックデータを入手することも含んでよい。ある実施形態では、1つ以上のセキュリティイベントを、重大度レベルを用いて追跡してもよい。さらに、1つ以上の措置を、1つ以上のセキュリティイベントの発生に応じてとってもよい。ある例示的な実施形態では、イベントに応じた1つ以上の措置を、システムにより自動的にとってもよい。他の例示的な実施形態では、1つ以上の措置を、ユーザによる手動介入の後にとることもできる。いくつかの実施形態では、1つ以上の措置は、以下のうちの1つ以上を含んでもよい:コンピュータアプリケーションの1つ以上のスレッドを終了すること、コンピュータアプリケーションの1つ以上のスレッド上の通信ソケットを閉じること、アプリケーションを終了すること、イベントを記録すること、および/または1つ以上のセキュリティイベントに応答して警報を発すること。
前述の内容は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図をとおして、同一の構成要素は同一の符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
高度な持続的マルウェア脅威の構成の一例を示す図である。 コード実行型攻撃を示す一連の不変イベントを示す図である。 クライアントにより実行されるロードタイム動作のフローチャートである。 クライアントと解析エンジンとの間でデータを送信するために使用されるプロトコルデータユニット(PDU)を示す図である。 ランタイムに収集したデータに基づくイベントを生成するために解析エンジンが用いるプロセスのフローチャートである。 生成されたイベントを追跡するために使用されるイベントチェーン状態マシンを示す図である。 クライアントおよび解析エンジンのブロック図である。 本発明の各実施形態が実装されるコンピュータネットワークまたは同様のデジタルプロセス環境を示す図である。 図8に示すコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置、またはサーバコンピュータ)の内部構造を示す図である。
発明の例示的な実施形態を以下に説明する。
本願明細書で参照する、全ての特許、全ての公開された出願、および全ての引例の教示内容は、参照をもって本明細書に取り入れたものとする。
図1に、高度な持続的マルウェア脅威の一例を示す。この場合、悪意ある行為者(すなわちハッカ)が自身のインフラストラクチャ102から、エヌマップ(nmap)104などのスキャンツールを用いて、企業のインフラストラクチャ108に向けてウェブを遠隔的にスキャンする。このスキャンにより脆弱性(既知の脆弱性またはゼロデイ脆弱性)を有するサーバを発見すると、行為者はシェルコード106をインストールして離れた企業サーバ110を乗っ取り、企業ネットワークにアクセスする。ネットワークの内部に入ると、悪意ある行為者は追加のツール104をロードする。これらツールとしては、エヌマップ、ポートスキャナー、パスワード・クラッキングツール、ftpクライアント、圧縮ツール、ハッシング、および/または暗号化・復号化ツールが挙げられる。
行為者は、企業インフラストラクチャにアクセスし、高い権限を有するユーザがデータベースやファイルリポジトリなどの価値ある標的にログインするためのマシン114または116を探して、ユーザのアクセス認証情報(access credentials)を無効化し、追加のハッキングツールを忍ばせる所を探す。脆弱なアプリケーションを有するマシン114または116を見つけると、悪意ある行為者は認証情報を無効化し、侵入し、その後標的118にアクセスする。標的がアクセスされると、ハッキングのための追加のツール104が標的にロードされる。マルウェアはまた、権限を有するユーザが自身のマシンをコーヒーショップ、空港、ホテルなどの無防備なネットワークを介して持ち込んだ際に、ユーザのスマートフォンやラップトップなどの移動端末装置に入り込める。これとは別に、内部ユーザが標的マシンを感染させるかもしれない。
高度なパスワード・クラッキングツールまたはスヌーピング・イントラネット・トラフィックを用いることによって、マルウェアは管理ユーザ116の認証情報を取得し得る。悪意ある行為者は、認証情報を取得した後、データベースやファイルリポジトリ118に罰せされることなく接続でき、実名、自宅住所、社会保障番号、運転免許証、生年月日、医療記録、クレジット/デビットカードなどの金融情報、電話番号、電子メールアドレス、ユーザ名およびパスワード、ならびに保険情報などの価値あるデータを抽出し得る。悪意ある行為者は、これら情報を随意に圧縮および暗号化でき、企業セキュリティ分析者の注意を引かないように小さいサイズに分割してハッカ・コマンド・コントロールセンター112にアップロードし得る。目的を達成するために、悪意ある行為者は、ハッカ・コマンド・コントロールセンター112のIPアドレスを毎日変更したり、プロキシを使用したりしているため、企業の侵入検知システムはパターン化した状況を確認できない。企業は通常毎日10GBを超えるデータを送受信しているため、短いバーストでの比較的少量のデータのアップロードは気付かれないことが多い。
このような場合の一連のイベントを確実に検出しブロックできることが、高度な持続的脅威を妨害するための鍵となる。最近のサイバー・セキュリティツールには4つの主要な欠点がある。まず、これらツールは十分に小さい粒度でアプリケーションを検査していない。この機能なしでは、攻撃の多くの兆候を確実に見分けることができない。次に、これらツールは長い時間をかけて攻撃を追跡する機能を有しない。通常のセキュリティ情報およびイベント管理(SIEM)システムは、通常24時間イベント(大きすぎる粒度のイベント)を相関させるだけである。マルウェアは、検出を逃れるために十分長い時間休止状態に留まることがある。長時間確実に攻撃を追跡する機能なしでは、攻撃に寄与する個々の不正イベントは独立した相関のないイベントにみえる。
また、これらサイバー・セキュリティツールは、攻撃の前兆となるイベントの閾値の設定をセキュリティ分析者に頼っている。例えば、セキュリティ分析者が、毎時ある回数のポートスキャンおよびログインの試みが日常的に行われることを当然とみなすかもしれない。この場合、問題は、警報のきっかけとなる、発信元毎の毎時のポートスキャンの試みの数が一体いくつであれば多すぎるのか、ということである。警報の発生が早すぎる場合、分析者は、悪意のないポートスキャンまたは合法的なユーザによるログインの失敗までも調査するかもしれない。警報の発生が遅すぎる場合、マルウェアによる攻撃はすでに成功しているかもしれない。さらに、これらツールは、攻撃を効果的に検出するには基本情報が不十分である。真正な警報を発生するには、良性イベントと不正イベントを確実に識別するツールが必要である。悪意ある行為者は、同じサインもしくは既知の不審なネットワークまたはアプリケーション挙動を認識するであろう。したがって、悪意ある行為者は攻撃の挙動を微調整できる。例えば、データをコード化する暗号化を用いたり、IPとポートの組み合わせを変更したり、基本情報を用いて指定した挙動に基づく検出を逃れるために攻撃速度を落としたりできる。
図2は、コード実行攻撃(コードを実行することによる攻撃)の一連の不変(動かし難い)イベントを示す。複数のコード実行攻撃のような種々のマルウェア攻撃について、マルウェア攻撃の対応するイベントチェーンは一連の不変イベントによって表現される。これらイベントは、特定のマルウェア攻撃を追跡するコンピュータのプロセスメモリ内に格納される。以下に、コード実行攻撃の符号202から符号216までの一連の不変イベントによって表現された挙動について述べる。
コード実行攻撃を実行するにあたり、悪意ある行為者がパッチされていないアプリケーションまたはいわゆるゼロデイ脆弱性を探し当てると、行為者は特別に練ったペイロードである不良コンテンツを作成する。このペイロードは202において、直接またはネットワークを介して、コンピュータシステムの中央処理装置(CPU)上で実行される標的プロセスに送信され、CPUがコンピュータアプリケーションの指示を呼び出すことを阻止し、このペイロードは代わりに不正ペイロードの指令による指示を呼び出す。この特別に練られたペイロードは、標的となるアプリケーションに応じて、多くのメカニズム、例えばネットワークソケットやキーボードさらにはファイルまでを介して、アプリケーションに挿入される。
206において、攻撃中に挿入された不正ペイロードを起動するために、マルウェアは多数の攻撃ベクトルのうちの1つを強化する。コード実行攻撃の場合、204において、マルウェアはバッファのエラーまたはユーザの無知に付け込む。攻撃ベクトルの他の例としては、単純なスタック・スマッシュ(Stack Smashing)アプローチ、フォーマット指定子の使用、擬似乱数スタック・カナリアの発見、例外ハンドラ・テーブルのオーバーラン、またはリターン・オリエンテッド・プログラミング(ROP)ガジェット、ならびに多数の追加のベクトルが挙げられる。
本格的な不正動作を開始する前に、マルウェアは検出技術が働かなくなるように十分に長い時間休止状態になる。例えば、不審な動作に対してEメール検査するサンドボックス技術は、最終的に諦めて受信者にEメールを届けるに違いない。その後のある時点で、マルウェアは212において、その意図することの実行を開始するために、既存のアプリケーションスレッドを用いるかまたは1つ以上の新規のスレッドをスピンする。場合によっては、既存のスレッドの使用はユーザの注意を引き、新しいスレッドのスピンはユーザに気付かれない。これは、ほとんどのセキュリティ対策が、新しいスレッドのスピンが不正動作であるか無害動作であるかを判断できないからである。アプリケーション内に糸口となるものを作成して、マルウェアは210において、悪意ある行為者のコマンド・コントロールセンター(C&C)との接続性を確立する。企業ファイアウォール内部からの接続性が確立すると、マルウェアは208において、上記スレッド上で、パスワード・クラッキングツール、ポート・スキャンツール、暗号化ツールなどのさらなるマルウェアを、ファイル・ブラックリスティング対策の注意を引かないように複数のビットやデータ単位に分けてダウンロードする。
ツールがダウンロードされると、マルウェアは、感染したマシンおよび感染したマシンから到達可能なすべてのマシンからの有用なコンテンツの抽出を図る。図2に示すコード実行攻撃では、マルウェアは、高い権限を有するユーザを見つけるまで企業を検索し続けるかもしれない。代わりに、企業においてSMB/NETBIOS/CIFSトラフィックのようなトラフィックを嗅ぎ分けて、権限を有するユーザの名前を見つけ、その認証情報にログインするかもしれない。代わりに、パスワード・クラッキングツールを使用したり、推測したパスワードの寄せ集めとパスワードファイルのコンテンツとを単純に比較したりするかもしれない。現在の処理能力であれば、8ワード長のパスワードは数時間で解読可能である。
権限を有するユーザの認証情報の抽出後、マルウェアは十分に強化されて、感染したマシンおよび感染したマシンから到達可能なすべてのマシンから有用なコンテンツを抽出するという作業に着手する。到達可能なマシンのリストには、データベースサーバ、コードリポジトリ、または価値ある設計書類を有するCADマシンが含まれる。価値あるコンテンツが抽出されると、マルウェアは、攻撃が最高潮に達する前に、データを暗号化または216においてコマンド・コントロールセンターにアップロードするかもしれない。データが暗号化された場合、悪意ある行為者は身代金要求を用いて標的に接触するかもしれない。
図3は、本開示の原理に従った、例示的なクライアント(ここでは解決クライアントと称す)が、ロードタイムにおいてマルウェア動作の検出に備えるために行う操作を示す。経路妥当性確認エンジンは解決クライアントの一部であり、マルウェアが起動した時点からマイクロ秒以内にマルウェア動作を確実に検出できる。解決クライアントはまず保全性(integrity)を検証し、その後アプリケーションのモデルを抽出するためにアプリケーションの各モジュールを分析する。アプリケーションのモデルはアプリケーション・マップ・データベースに格納される。アプリケーション・マップ・データベースは以下のテーブルを含んでもよい:コードテーブル、エクスポートテーブル、Vテーブル、アザーテーブル(他のテーブル)、基本ブロックテーブル、ソフトスポットテーブル、メモリ被演算子テーブル、遷移テーブル、逆アセンブリテーブル、重要OS関数テーブル。図3に示す実施形態では、アプリケーション・マップ・データベースは、解決クライアントからのリモートシステム上に配置される。他の実施形態では、アプリケーション・マップ・データベースは、アプリケーションが実行されているハードウェア上、または解決クライアントおよび解析エンジンの外部にあるハードウェア上に格納される。解決クライアントは、ストリーミングエンジンを使用して、解析システムのアプリケーション・マップ・データベースに格納すべきデータを送付するように、抽出されたアプリケーションモデルを複数の解決プロトコル・データユニット(PDU)にパッケージ化する。PDU構造を図4に示す。
302において解決クライアントがロードタイムにアプリケーションの処理を開始した後、304および306において、同じ操作がコンピュータアプリケーションの各モジュールのループにおいて行われる。アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、マシンコード逆アセンブラまたはバイトコード逆アセンブラなどの逆アセンブラを用いて所定のモジュールのすべての実行ファイルおよびライブラリを検査する。アプリケーションファイルのモジュールは、実行リンク可能フォーマット(ELF)や共通オブジェクト・ファイル・フォーマット(COFF)などの標準ファイル・フォーマットである。このフォーマットのアプリケーションのモジュールは、コードセクション、エクスポートされたデータセクション、vテーブル・セクション、および他の追加的セクションなどのセクションに整理される。アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、これらデータセクションをアプリケーションモデルの一部として抽出する。モジュールのコードセクションの境界およびアクセス属性は、314において、コードテーブル内のアプリケーション・マップ・データベースに送付(ディスパッチ)され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}という形式を有する。モジュールのコードセクション内の各基本ブロックの境界および指示数(指示の数)は、330において、基本ブロックテーブル(Basic Block Table)内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス,および指示数}という形式である。モジュールのエクスポートされたデータセクションの境界およびアクセス属性は、318において、エクスポートテーブル内のアプリケーション・マップ・データベースに格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}形式である。モジュールのvテーブルセクション(もしあれば)の境界およびアクセス属性は、322において、Vテーブル(V Table)内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}形式である。モジュールのすべての他のセクションの境界およびアクセス属性は、326において、アザーテーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス,および保護属性}という形式である。
各モジュールがメモリへロードされる時、解決クライアントはアプリケーションのモジュールから、他のメモリマッピングデータおよびソフトスポットデータをも抽出する。メモリマッピングデータは、メモリ割当て、メモリ割当て解除、およびメモリの重要セグメントへのメモリ書込みの指示を含む。ソフトスポットデータは、ループを実行する指示(例えば、REPスタイル演算コード付き指示)を含む、大規模メモリバッファ(ソフトスポット)を操作するための指示を含む。ソフトスポット指示のアドレスおよび各メモリ書込みのサイズは、334において、ソフトスポットテーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{アドレス,書込みサイズ}という形式である。このアドレスおよび書込みサイズは、宛先がメモリ被演算子であるメモリ書込み指示のために格納されることになる。このデータは、340において、メモリ被演算子書込みテーブル内のアプリケーション・マップ・データベースに格納される。このテーブルの各レコードは{発信元アドレス,メモリ書込みサイズ}という形式である。
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントはモジュールから遷移マッピングデータ(分岐転送または遷移データ)をも抽出する。遷移マッピングデータは、標的アドレスへの遷移指示をその時点において判定できる直接遷移マッピング、または標的アドレスへの遷移指示がランタイム依存性を有する間接メモリマッピングのためのものである。ランタイム依存性を有するため、遷移指示は、完全に判定されることがランタイムまで阻止される。間接遷移が生じる指示の完全な逆アセンブリは、324において、逆アセンブリテーブル内のアプリケーション・マップ・データベースに送付され格納される。抽出されたすべての遷移マッピングもまた、324および332において、遷移テーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{発信元アドレス,宛先アドレス}という形式である。また、320において、ランタイム以前に、オペレータはマップ遷移テーブルに手動で遷移マッピングデータを追加できる。マップ遷移テーブルに手動でレコードを追加する際、オペレータは、マルウェアによる遷移テーブルの変更を排除するために、2要素認証プロセスを用いた認証が必要である。
遷移マッピングは、マルウェアが起動した時点からマイクロ秒以内にマルウェア動作を確実に検出するために、経路妥当性確認エンジンの機能の中心をなす。遷移マッピングの概念は、ソースコードの検査により一層理解される。以下に示すサンプルソースコードでは、関数main()は、ライブラリで定義された関数printf()を呼び出すが、関数notCalled()は呼び出さない。コンパイラおよびリンカがこのコードを処理し、作成されたバイナリが検査された後、関数main()、printf()、およびnotCalled()の相互関係またはその欠如が保存される。関数main()は関数printf()に対して「遷移」を有すると言える。この遷移は{Address SRC -> Address DST}で表され、Address SRCは関数main()において関数printf()が呼び出された指示のアドレスを示し、Address DSTは関数printf()のアドレスを示す。発信および標的はシステムコールまたは例外ハンドラであってもよい。上記のようなレコードは、アプリケーションの遷移マップテーブルにおいて単一のレコードである。
Figure 0007046111000001
上記例はコンパイル言語であるC/C++で記述されているが、ソースコードにおける遷移間の類似性は、インタープリタコードやJITコンパイルされたコードなどを含む、その他の言語で記述されたコードにおいても想定できる。Java(登録商標)のような解釈型言語で記述した同じ例を以下に示す。
/*
Java Hello World example.
*/

public class HelloWorldExample {

public static void main(String args[]){
System.out.println("Hello World !");
}

public static void notCalled() {
System.out.println("Feeling lonely !");
}
}
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは308において、保全性のためにアプリケーションをチェックする。一実施形態においては、このチェックは、モジュールがロードされている時にコードのMD5ハッシュなどのチェックサムを計算し、このチェックサムをチェックサム・データベースに格納された対応する既知のグッドチェックサムと比較することによって行う。代わりに、信頼できるチェックサム検査サービスを活用してもよい。これは、現在ロード中のモジュールのコードが未だマルウェアにより破損されていないことを保証する。解決クライアントは、保全性チェックが失敗した場合に、310において警報を発するよう構成されてもよい。
ロードタイムに、312および316において、アクセス許可および権限に影響する特定のOS関数およびシステムコールが識別され、これらのアドレスが重要OS関数テーブルに送付され格納される。解決クライアントにより送付された特定のOS関数およびシステムコールは、実行ファイルの実行経路に遠大な影響を及ぼすものである。これら管理用の重要OS関数およびシステムコールは、メモリセグメントのアクセス許可を変更し、アクセス権限を増大し、非実行ポリシーを変更し、構造化された例外ハンドラ保護を変更し、アドレス・スペース・レイアウト乱数化ポリシーを遮断し、メモリの割当ておよび割当て解除を行い、新しいプロセスを作成し、新しいスレッドを作成し、またはデータの暗号化および解読に関与する。
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、ランタイムにデータを収集するために、アプリケーションのモジュールに挿入される指示に追加的にデータ記録手段を装備する。データ記録手段が装備されたコードは、動的バイナリ解析エンジンおよび/またはバイトコード・インストルメンテーション・エンジンを用いてアプリケーションのモジュールに挿入される。ソフトスポット指示には、338において、ループを実行する指示などのマルウェアが攻撃しそうな領域において、データ記録手段が装備されて、ランタイムにこれら領域で動作を追跡するためのデータを収集する。直接的・間接的遷移マッピング指示は、328において、モジュールにデータ記録手段が装備されて、ランタイムに遷移マッピングに関与する動作を追跡するためのデータを収集する。メモリ被演算子書込み指示には、336において、モジュールにデータ記録手段が装備されて、ランタイムにメモリ書込み動作に関するデータを収集する。自己修飾コードがある場合は、基本ブロックがランタイムにおいて変化するかもしれない。また、312および316において、アプリケーション内に指示にはデータ記録手段が装備されて、重要OS関数テーブルに格納されたOS関数およびシステムコールに関与する動作のためのデータを収集する。
ロードタイムにおいて挿入されるデータ記録手段を装備した結果、ランタイムにおいて重要な情報が生成され分析のために収集される。遷移マッピングデータ関連のデータ記録手段の装備がアクセスされた時、解決クライアントは、スレッドID、現在の指示アドレス、宛先指示アドレス、および、随意に、各汎用レジスタに収納されたデータを収集する。指示が実行される前にソフトスポットのデータ記録手段の装備がアクセスされるため、解決クライアントは、適当なレジスタを介してスレッドIDおよびスタックの境界を入手する。ソフトスポットのデータ記録手段の装備が完了した時、解決クライアントは、スレッドID、およびこの書込み動作により更新されたメモリの領域の推定を可能とする数個の汎用レジスタを入手する。コールが実行される前に重要なAPIまたはOSコールのデータ記録手段の装備がアクセスされる場合、解決クライアントはスレッドID、API名またはシステムコール番号、および入力パラメータを入手する。コールが実行された後に重要なAPIまたはOSコールのデータ記録手段がアクセスされる場合、解決クライアントはスレッドID、API名またはシステムコール番号、および戻り値を入手する。メモリの割当てまたは割当て解除を行うOS関数またはシステムコールにおけるデータ記録手段の装備は、アプリケーションが作成したかもしれない種々のヒープに現在関与しているメモリの領域の追跡を援助する。このメモリ・エンベロープは、マルウェアがヒープにおけるコントロール構造をオーバーランさせようとしているか否かを見つけるために、ランタイムにおいて間接的メモリ書込みの標的を追跡するのに活用される。また、キャッシュを用いて基本ブロックの境界を追跡することにより、解析エンジンは基本ブロックが変化したか否かを判定できる。この判定が肯定である場合、モデルデータベース内の基本ブロックテーブルが更新される。
この例示的な実施形態では、解決クライアントは入手した情報をストリーミングエンジンへ送付して、解析エンジンに伝送すべくPDUとしてパッケージ化する。ストリーミングエンジンは、パイプまたはローカル・プロシージャ・コールなどの極めて低いオーバーヘッドOSアーティファクトを用いて、種々のデータ記録手段装備により生成されたデータを別のプロセスに移動させる。これにより、データ記録手段が装備されたプロセスはその通常の動作を継続できる。この例示的な実施形態では、ストリーミングエンジンは、適切な標準ベースのトランスポートプロトコルを用いて、データ記録手段から収集した情報を、解析エンジンへのさらなる伝送のために解決PDUにおいてパッケージ化してもよい。一実施形態では、トランスポートプロトコルはTCP/IPでもよい。他の実施形態では、トランスポートプロトコルはUDPでもよい。さらに他の実施形態では、トランスポートプロトコルは、パイプやローカル・プロシージャ・コールなどの共有メモリ技術を用いることを含んでもよい。
図4に解決PDUを示す。解決クライアントおよび解析エンジンは互いに効果的に作業するために、解決PDUを用いて相互通信する。解決PDUは、特に解決クライアントにより、抽出されたアプリケーションモデルおよび/または収集されたランタイムデータを解析エンジンへの伝送用にパッケージ化するために用いられる。解決PDUは、解決クライアントと解析エンジンとの間で送信される各種情報のためのフィールドを含む。解決PDUは、アプリケーション提供データセクション、HW/CAE生成セクション、およびコンテンツ解析エンジンまたは生データ(ローデータ)セクションに分割される。
アプリケーション提供データセクションは、種々のレジスタからのデータと、このセクションの種々のフィールドに配置された発信元アドレスおよび標的アドレスとを含む。プロトコルバージョンは解決PDU402のバージョン番号を含む。解決プロトコルバージョンが経時変化する場合、発信元および宛先は互いの通信を継続できる必要がある。この8ビットフィールドは、発信元エンティティにより生成された際の解決パケットのバージョン番号を表す。現在未使用の予約されたフィールド404はプロトコルバージョンフィールドに続く。
アプリケーション提供データセクションにおける次のフィールドはメッセージ発信元/宛先識別子406、408および410である。これらは図7に示す解析エンジンのインフラストラクチャ内でのトラフィックの交換に用いられる。図7に示す種々のエンティティは、時々トラフィックを交換する。これら装置のすべてがIPアドレスを有するかまたは必要とするわけではないので、2つの(ハードウェアおよびホスト)照会ルータ・エンジンは、内部でトラフィックをルーティングするためにメッセージ発信元および宛先フィールドを用いる。いくつかのメッセージは、解析エンジンのエンティティに辿り着くためにネットワークを横切る必要がある。そのために、エンティティには以下のIDが割り当てられる。所定の解析エンジン機器は2つ以上のアクセラレータ・カードを有してもよい。各カードは固有のIPアドレスを有する。したがって、種々のエンティティは固有のIDを有する。上述したインフラストラクチャは2つ以上のアプリケーションを実行してもよい。各アプリケーションサーバは固有のIPアドレスを有することになるので、対応する解決クライアント側エンティティもまた固有のIDを有する。
<解決クライアント側エンティティ>
1.解決GUI(Resolve GUI)
2.インストルメンテーションおよび解析エンジン(Instrumentation and Analysis Engine)
3.クライアント・メッセージ・ルータ(Client Message Router)
4.ストリーミング・エンジン(Streaming Engine)
5.クライアント側デーモン(Client Side Daemon)
6.CLIエンジン(CLI Engine)
7.クライアント監視(Client Watchdog)
8.クライアント圧縮ブロック(Client Compression Block)
9.クライアント・iワープ・イーサネット(登録商標)・ドライバ(100Mb/1Gb/10Gb)(Client iWarp Ethernet Driver (100 Mb/1Gb/10Gb))
<PCI毎・カード・エンティティ(先頭アドレス=20+n×20)>
20.セキュラライザTOEブロック(Securalyzer TOE block)
21.セキュラライザPCIブリッジ(Securalyzer PCI Bridge)
22.解凍ブロック(Decompression Block)
23.メッセージ検査ブロック(Message Verification Block)
24.パケット・ハッシング・ブロック(Packet Hashing Block)
25.タイムスタンプ・ブロック(Time-Stamping Block)
26.メッセージ・タイムアウト・タイマ・ブロック(Message Timeout Timer Block)
27.統計カウンタ・ブロック(Statistics Counter Block)
28.セキュラライザ照会ルータ・エンジン(Securalyzer Query Router Engine)
29.セキュラライザ・アシスト(Securalyzer Assist)
<セキュラライザ・ホスト・エンティティ>
200.セキュラライザPCIeドライバ(Securalyzer PCIe Driver)
201.ホスト・ルーティング・エンジン(Host Routing Engine)
202.コンテンツ解析エンジン(Content Analysis Engine)
203.ログ・マネージャ(Log Manager)
204.デーモン(Daemon)
205.ウェブ・サービス・エンジン(Web Service Engine)
206.監視(Watchdog)
207.IPCメッセージング・バス(IPC Messaging Bus)
208.コンフィギュレーション・データベース(Configuration Database)
209.ログ・データベース(Log Database)
<SIEMコネクタ>
220.SIEMコネクタ1‐Virsecダッシュボード(SIEM Connector 1‐Virsec Dashboard)
221.SIEMコネクタ2‐HP ArcSight(SIEM connector 2‐HP ArcSight)
222.SIEMコネクタ3‐IBM QRadar(SIEM connector 3‐IBM QRadar)
223.SIEMコネクタ4‐Alien Vault USM(SIEM connector 4‐Alien Vault USM)
<セキュラライザ・インフラストラクチャ・エンティティ>
230.Virsecダッシュボード(Virsec dashboard)
231.SMTPサーバ(SMTP Server)
232.LDAPサーバ(LDAP Server)
233.SMSサーバ(SMS Server)
234.資格サーバ(Entitlement Server)
235.データベース・バックアップ・サーバ(Database Backup Server)
236.OTPクライアント(OTP Client)
237.OTPサーバ(OTP Server)
238.チェックサム・サーバ(Checksum Server)
239.チケッティング・サーバ(Ticketing Server)
240.Virsecルール・サーバ(Virsec Rules Server)
241.Virsec更新サーバ(Virsec Update Server)
<オール・ユーザ・アプリケーション>
255.ユーザアプリケーション‐照会を発行するアプリケーションを識別するためにアプリケーションPIDが使用される。
アプリケーション提供データセクションの他のフィールドには、送信されているデータのタイプを示すメッセージ・タイプ・フィールド412がある。最上位レベルで、種々のローカルな解決クライアント側エンティティ間、解析エンジン機器側エンティティ間、およびクライアント側エンティティと機器側エンティティの間を流れる3つの異なるタイプのメッセージがある。さらに、ネットワークを移動する必要のあるメッセージは、OSIモデルおよび他のプロトコルに適合する必要がある。
アプリケーション提供データセクションにおける次のフィールドは、パケットのシーケンス識別子を含むパケットシーケンス番号フィールド414である。ストリーミングエンジンは、損失パケットのエラー回復が可能である。そのために、ストリーミングエンジンは一意にパケットを識別する必要がある。インクリメントする符号付の64ビットパケットシーケンス番号は、ストリーミングエンジンにより挿入され、残りの解析エンジンのインフラストラクチャを単に通過する。シーケンス番号が64ビット境界で完了すると、0からリスタートする。ハートビート、ログメッセージ等の非アプリケーションパケットの場合は、パケットシーケンス番号は-1であってもよい。
アプリケーション提供データセクションは、暗号化のために使用されるカナリア(canary)を含む解決カナリア・メッセージフィールド422をも含む。解決クライアントおよび解析エンジンは、アプリケーション・ラウンチタイム、PID、ライセンス・ストリング、および許可されたユーザ名などの一般的な情報(ただし、新しい性質の情報)からのカナリア計算方法を認識している。
アプリケーション提供データセクションはさらに、すべてのメッセージにおいて使用される汎用フィールドを含む。アプリケーション発信元指示アドレス458、アプリケーション宛先指示アドレス416、メモリ開始アドレスポインタ418、メモリ終了アドレスポインタ420、アプリケーションPID424、スレッドID426、解析エンジン到着タイムスタンプ428、および解析エンジン出発タイムスタンプ430など、汎用アプリケーションデータを保持するフィールドである。
解決PDUはHW/CAE生成セクションをも含む。解析を容易にしかつ固定の時間制約を守るために、解析エンジンは発信元・宛先アドレスフィールドをハッシュし、処理の前に解決PDUを更新する。解決PDUのHW/CAE生成セクションは、後に使用するハッシュデータが配置されるものである。このセクションは、ハッシュ・アプリケーション発信元指示アドレス432、ハッシュ・アプリケーション宛先指示アドレス434、ハッシュ・メモリ開始アドレス436、およびハッシュ・メモリ終了アドレス438のフィールドを含む。HW/CAE生成セクションはさらに、解決カナリア442に関する他のフィールドを含む。これらフィールドは、ハードコード化コンテンツ開始マジックヘッダ、API名マジックヘッダ、コール・コンテキスト・マジックヘッダ、およびコール生データ・マジックヘッダであって、すべての解決PDUパケットに存在する。
HW/CAE生成セクションは、他のコンフィギュレーションおよびエラーのデータを識別するためのフィールド440をも含む。このフィールド440は、結果、コンフィギュレーションビット、オペレーティングモード、エラーコード、およびオペレーティングモードのデータを含む。このフィールドの結果部分は、遷移プレイバック、コードレイアウト、メモリ(スタックまたはヒープ)オーバーラン、およびディープ検査などの異なる解析エンジン照会に対してブーリアン結果を返送するためにセグメント化されている。このフィールドのコンフィギュレーションビット部分は、圧縮フラグ、デモフラグ、または共通配置フラグが設定された時を示す。このフィールドにおけるフラグの存在は、パケットを圧縮モードで返送するべきか否かを解析エンジンに対して示す。デモフラグは、システムに有効なライセンスがないためにシステムがデモモードであることを示す。このモードでは、ログおよびイベントの全体を入手できない。共通配置フラグは、アプリケーションが解析エンジンにおいて実行中であることを示し、これによりホスト照会ルータ・エンジンはアプリケーションへ返送されるべきパケットの宛先を判定できる。このフラグがセットされている場合、パケットはPCIブリッジを介して送信され、そうでない場合は、パケットはPCIカード上のイーサネット(登録商標)インターフェースを介して送信される。このフィールドのオペレーティングモード部分は、システムがパラノイド(最高セキュリティ)モード、モニタモード、学習モードのいずれにあるかを示す。これらモードについては、後に詳述する。最後に、このフィールドのエラーコード部分はシステムにおけるエラーを示す。エラーコードの最初の8ビットはメッセージ発信元に対応することになる。残りの12ビットは各サブシステムにより報告される実際のエラーに対応することになる。
解決PDUは、また、コンテンツ解析エンジンまたは生データを含む。OSライブラリコールおよびシステムコールの、引き数や戻り値などのすべての可変データは、解決PDUのこのセクションに配置される。このセクションのデータは、アプリケーションから収集されたデータのコンテンツを含み、主にコンテンツ解析エンジンに向けられる。このセクションは、サイズ可変なAPI名またはAPI番号444、コール・コンテンツ・マジックヘッダ446、サイズ可変コール・コンテンツ450、コール・ローデータ・マジックヘッダ452、サイズ可変ローデータ・コンテンツ456、および2つのリザーブド448および454のフィールドを含む。さらに、これらフィールドは管理メッセージに対してオーバーロードされる。
図5は、ランタイムにセキュリティイベントを検出するために解析エンジンが用いるプロセスを示す。この例示的な実施形態において、解析エンジンは、解決クライアントと同一または異なるハードウェア上で実行される別プロセスである。データ解析部分からデータ収集を分離することにより、データ記録手段を装備するプロセスにより生成された情報の解析に伴う処理のオーバーヘッドが実質的に削減される。これにより、解析エンジンは、同時に複数のアプリケーションのランタイム解析を行うことができる。
ランタイム中、コードにデータ記録手段が装備されることで、スレッドID、スタック開始およびベースアドレス、汎用レジスタ、発信元アドレス、および宛先アドレスなどの適切なコンテキストを検査する機会が得られる。コンテンツを検査するための一連の動作に特定の順序はなく、入替え可能であり、解析エンジンの複数のスレッドにより並列に行える。図5に示すプロセスを用いて、安全なエンジンがアプリケーションにおける各スレッドの個々のイベントを生成することになり、これらイベントは特定かつ個別のイベントチェーン状態マシン上で収集でき、これにより攻撃の進行をリアルタイムで追跡できる。解析エンジンにより生成されるイベントは、SYSLOGなどの標準ベースのイベントフォーマットに従う。これにより、標準ベースのイベント管理システムは、解決クライアントにより生成されたイベントを直接、またはSYSLOGをコモン・イベント・フォーマット(CEF)などの標準標的フォーマットに変換するコネクタを介して使用できる。解析エンジンは、以前に格納したテーブル付アプリケーションマップにアクセスできるので、実行された遷移指示がそのコンテキストを報告した時、解析エンジンは、標的アドレスが正当な宛先か否かを示すデータを含む抽出されたアプリケーションモデルにアクセスできる。
502においてプロセスが開始した後、504において、解決クライアントからの解決PDUパケットで新たなランタイム情報が受信される。508においてこのパケットをバッファに保存する前に、解析エンジンは506において、パケットに含まれるカナリアおよびタイムスタンプを検証する。解決PDUが未だバッファされている間に、解析エンジンは510において、アドレスフィールドをハッシュし、ハッシュしたデータを解決PDUのHW/CAEセクションに入れる。512において、処理のためにパケットをパケットバッファリングから抜かれる。パケットの処理が完了すると、554においてプロセスは次のパケットを待つ。
解析エンジニアにより使用されるプロセスは、遷移マッピングデータを調査する。520において遷移指示により報告されたランタイム情報が直接遷移からのものであり、かつ528において標的アドレスが遷移マップテーブル中に見つからない場合、解析エンジンは544においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ530において標的アドレスがコードテーブル中にあり、かつ548において標的アドレスが基本ブロックの中央部分にある場合、解析エンジンは550においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ530および548において標的アドレスがヒープメモリの領域にある場合、解析エンジンは550においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ552において標的アドレスがメモリの非コード・非インポートテーブル領域にある場合、解析エンジンは556においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
516において、解析エンジンにより使用されるプロセスはメモリ書込みデータを調査する。報告されたランタイム情報がメモリ書込み指示からのもので、かつ524において書込み標的アドレスがVテーブルのメモリ領域内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ524において書込み標的アドレスがエクスポートテーブルのメモリ領域内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ538において書込み標的アドレスがヒープメモリ領域の標的コントロールセクション内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ532において、書込み標的アドレスがスタックメモリ領域の標的コントロールセクションにある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
514において、解析エンジンにより使用されるプロセスはソフトスポットデータを調査する。指示がソフトスポット指示であって、かつ524において書込み標的アドレスがVテーブルのメモリ領域にある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ524において書込み標的アドレスがエクスポートテーブルのメモリ領域にある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ538において書込み標的アドレスがヒープメモリ領域の標的コントロールセクションにある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ532において書込み標的アドレスがベースポインタ下方の記憶場所におけるスタックのコントロール領域に格納された指定ポインタを上書きする場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
518において、解析エンジンにより使用されるプロセスはOS関数およびシステムコールを調査する。542における無効なOS関数またはシステムコール動作が原因で、526において重要なOS関数またはシステムコールのエントリポイントのデータ記録手段(インストルメンテーション)が呼び出された場合、解析エンジンは544において、その重要OS関数テーブルにおける動作が発生した時に、イベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。この生成されたイベントにより、メモリアクセス許可を変更する要求されたコードは無効を宣言され、権限レベルを変更するように要求されたコードは潜在的に無効であると宣言され、WANベースユーザにサービスを提供するスレッド上で発生する権限増大は高いレベルに上昇され、非実行ポリシーの変更は無効を宣言され、アドレス空間配置の乱数化(ASLR)ポリシーへ変更は無効を宣言され、安全な例外処理(SEH)ポリシーの変更は無効を宣言され、管理上の指定関数への要求は、その特定の関数要求のイベントに従って処理されず、または管理上の指定システムコールへの要求は、その特定のシステムコールのイベントに従って処理されない。さらに、534におけるメモリ動作をヒープするための526における重要システムコール動作は、540においてヒープ・メモリ・エンベロープを更新するために用いられる。メモリのうち割当てに関連する領域はメモリ・エンベロープサイズを増加させ、その一方、割当て解除の領域は標的領域を解放する。
図6は、検出されたセキュリティイベントの追跡に使用されるイベントチェーン状態マシンを示す。経路妥当性確認エンジンはイベントを生成し、図示のイベントチェーン状態マシンに従ってイベントの状態を追跡する。イベントチェーン状態マシンは、これらイベントを追跡するために遷移プレイブックデータベースを使用する。新しいスレッドが開始すると、602においてイベントチェーン状態マシンは開始状態に初期化される。イベント管理エンジンはイベントに一連番号を振って、これにより1つのスレッド上のイベントのセットが、適切なスレッド用に状態マシン上で更新される。スレッドで遷移が発生すると、状態マシンは標的アドレスを記録するが、開始状態に留まる。経路妥当性確認エンジンが中重大度または高重大度のイベントを生成すると、604において、イベントチェーン状態マシンは次の状態であるEi状態に進む。この新しい状態は、遷移が発生すると、その遷移の標的アドレスを記録し続ける。中重大度または高重大度のイベントごとに新しい状態に更新し遷移イベントを記録するという状態マシンのプロセスは、612においてスレッドが終了状態に達するまで、606、608、および610において継続する。最高重大度レベルのイベントが起こるとセキュリティ分析者に通知され、攻撃が発生するとイベントチェーン状態マシンはフォレンジクスを捕捉する。
システムのモードによって、様々な救済措置がイベントに応答して採用され得る。採用された救済措置はリアルタイムで行われる。ある救済措置は、アプリケーションを遮断することからなる。他の救済措置は、脅威が出現したスレッドの1つまたは複数のソケットを解放または解除し、脅威が出現したスレッドを終了し、および/またはその脅威の原因となるユーザをブラックリストに載せる。他の救済措置として、アプリケーションサーバの1つまたは複数のソケットに関連するすべてのソケットを非ブロック化してもよい。これにより、その時接続されているすべてのユーザがブロックされることとなる。さらに他の救済措置として、攻撃を無視してもよい。この場合、分析者はその攻撃を重大なものと考えていないことによる。所定のイベントに対して提案された最適な救済措置はあらかじめプログラムされているため、セキュリティ分析者が解析エンジンの自動モード操作を選択していた場合、救済措置が自動的に行われる。
解析エンジンの経路妥当性確認エンジンは、モニタモード、パラノイドモード、学習モードの3つのモードで実行される。これらモードの違いは、アプリケーションにおける所定のスレッド上で受信された1つまたは複数のイベントに伴う救済措置を、いつどのように実施するかの違いである。モニタモードでは、ランタイム情報が到達し解析エンジンにより解析される時、指定されたセキュリティ分析者に向けられた通知が生成される。介入して最適な救済措置を選択するのはセキュリティ分析者の仕事である。セキュリティ分析者は、スレッドが終了状態に達する前であっても、予めプログラムされた「無視する」タイプの救済措置をより高度な衝撃救済措置に変更することを決定してもよい。救済措置を確定すると、解析エンジンは、その救済措置を実装する。この際、企業における適切な権威は、所定のスレッドに対しては提案された救済措置を適用しない。
パラノイドモードでは、プログラムされた(デフォルトのまたはユーザ設定による)救済措置が、セキュリティ分析者の介入なしに自動的に実行される。いずれのモードであっても、救済措置実行の準備が整うと、解析エンジンはどの救済措置が実行されるかを解決クライアントに知らせる。解決クライアントはアプリケーション上でこの救済措置に関連した措置を行う。救済措置が完了すると、解決クライアントは解析エンジンへ確認メッセージを返信する。その確認を受信すると、解析エンジンはセキュリティ分析者の更新を含む間接的援助動作を行う。
学習モードでは、解析エンジンは全てのイベントおよび救済措置を無視する。このモードでは、アプリケーションは無垢の環境で動作し、すべてのイベントおよびイベントチェーンを記録する。セキュリティ分析者はこの情報を使用して、いつイベントが発生すべきで、どのような救済措置がそのイベントに伴って行われるべきかについての判断基準を形成する。
図7は、解決クライアントおよび解析エンジンインフラストラクチャの一例の上位レベルブロック図を示す。このインフラストラクチャは、スマートフォン、タブレット、ラップトップ、デスクトップからハイエンドサーバまでの、計算装置を含む種々のハードウェア上で構成されてもよい。図に示すように、アプリケーション性能を高めるために、解決クライアントにより行われるデータ収集は解析エンジンにより行われる解析から分離されてもよい。このインフラストラクチャは、ハッカによる、マルウェア攻撃に対する防御の破壊を防止する高い可用性を提供する。解決クライアントは、ロードタイムおよびランタイムデータを収集するためにアプリケーションと相互作用する。アプリケーション701のインフラストラクチャは、プロセスメモリ703、第三者ライブラリ704、カーネルサービス706、および指示パイプライン707を備える。解決クライアント702のインフラストラクチャは、インストルメンテーションおよび解析エンジン(IAE)705、グラフィカル・ユーザ・インタフェース(GUI)711、クライアントデーモン708、コンフィギュレーション・データベース709、およびストリーミングおよび圧縮エンジン710、および中央処理装置(CPU)736を備える。アプリケーション701のローカルまたはリモートのユーザ702は、キーボード、マウス、または同様の入出力装置を介して、あるいは、パイプ、共用メモリ、またはソケットを用いて設定され得る通信チャネルを介したネットワークを通じて、アプリケーションと相互作用する。これに応答して、アプリケーションプロセス703は、適切な指示のセットを実行用の指示パイプライン707に送付する。アプリケーションは、libc.so(リナックス(登録商標))またはmsvcrtxx.dll(ウィンドウズ(登録商標))などの、自身のまたは第三者のライブラリ704を活用してもよい。これらライブラリからの機能が呼び出されると、これらライブラリからの適切な指示もまた実行用の指示パイプライン707に挿入される。加えて、アプリケーションは、カーネル706からの、メモリやファイル入出力などのシステムリソースを活用してもよい。アプリケーション、ライブラリおよびカーネルからのこれら一連の指示は時間順のシーケンスにまとめられ、所与のユーザが希望するアプリケーション機能を配信する。
アプリケーションのコードのメモリへのロードが開始すると、IAE705はいくつかの異なるロードタイム動作を行う。すべてのモジュールがロードされると、データ記録手段が装備されたアプリケーションの指示はランタイムデータを生成する。クライアントデーモン708は、コンフィギュレーション・データベース709から1つ以上のコンフィギュレーションファイルを読みだすことにより、CPU736においてインストルメンテーションおよび解析エンジン705、ストリーミングエンジン710およびGUI711のプロセスを初期化する。クライアントデーモン708は、また、IAE、ストリーミングエンジン、GUIおよび解析エンジンと、クライアントデーモン708との間の相互通信パイプを初期化する。クライアントデーモンはまた、それ自体を含む解決クライアントプロセスのいずれかが無応答または動作不能になった時、そのプロセスが再生成されることを保証する。これは、解決クライアントが高可用性の企業向け製品であることを保証する。
インストルメンテーションおよび解析エンジンは、アプリケーションから収集されたロードおよびランタイムデータをストリーミングエンジンに送る。ストリーミングエンジンは、解決クライアントからのローデータを解決PDUとしてパッケージ化する。ストリーミングエンジンは、解決PDUを、高帯域幅で低レイテンシである通信チャネル712を介して解析エンジン711に送る。クライアントとアナライザが同じマシンに位置している場合、このチャネルはメモリバスである。これらエンティティが、異なるハードウェア上であるが同じ物理的近傍性を有するハードウェアに位置する場合、このチャネルはイーサネット(登録商標)またはファイバーベース・トランスポートである。これにより、エンティティ間にリモート接続が設定されて、インターネットを通じてロードおよびランタイムデータが転送される。
解析エンジンのインフラストラクチャは、ネットワーク・インターフェース・カード(NIC)713、パケットプール714、タイムスタンプエンジン715、プロセッサファブリック716、ハッシングエンジン717、TCAMエンジン718、アプリケーション・マップ・データベース719、およびスレッド・コンテキスト・データベース720を備える。解析エンジンのインフラストラクチャはさらに、コンテンツ解析エンジン721、イベントおよびイベントチェーン722、イベント管理エンジン723、イベントログ724、機器デーモン725、解析エンジン・コンフィギュレーション・データベース726、ネットワークインターフェース727、ダッシュボード728、SMS/SMTPサーバ729、OTPサーバ730、拡張クライアント731、ソフトウェア拡張サーバ732、ソフトウェアイメージ733、イベント更新クライアント734、およびイベント拡張サーバ735を備える。
プロトコルヘッダーを有する解決PDUは、ネットワーク・インターフェース・カード731によって捕捉される。ネットワーク・インターフェース・カード731から解決PDUは取り出されてパケットプール714に入れられる。解決PDUにおけるタイムスタンプフィールドはタイムスタンプエンジン715により充填される。これは、パケットが異常に長い時間パケットプールバッファにスタックされていないことを確認するのに役立つ。
プロセッサファブリック716はパケットをパケットバッファから取り出し、アドレスフィールドがハッシュされてこのパケット内の適切な位置に配置される。この動作はハッシングエンジン717により行われる。プロセッサファブリックは、パケットバッファからパケットをそれらが到着した順序での取出しを開始する。ロードタイム段階からの情報を有するパケットは、関連データが抽出されてアプリケーション・マップ・データベース719に格納されるように処理される。ランタイム段階からの情報を有するパケットは、図5に従って処理される。解析エンジンの効率は、プロセッサファブリックにおけるプロセッサの数に基づいて向上または低下する。
遷移標的データは、スレッドごとのテーブルを有するスレッド・コンテキスト・データベースに格納されている。プロセッサファブリックは、また、遷移およびメモリ領域検索を行うためにTCAMエンジン718を活用する。プロセッサファブリックはハッシュを用いてルックアップを行うため、これに要する実時間は予測可能で、極めて短い。ファブリックにおけるプロセッサの数を注意深く選択することにより、パケット当たりのスループットを適宜変更できる。
解析エンジンが検索を行うと、解析エンジンは時々、重要な/管理上の関数またはシステムコールの無効な遷移や無効な動作、または望ましくない位置におけるメモリ書込みを発見する。いずれの場合も、解析エンジンは、イベントおよびイベントチェーンのデータベース722に格納されたポリシーによって記述された、プログラムされた重大度のイベントをイベント管理エンジンに送付する。生イベントログは、イベントログデータベース724に格納される。ダッシュボードはイベントログにもアクセスでき、アプリケーションステータスを表示できる。
救済措置は、また、イベントおよびイベントチェーンのデータベース722内の各イベントに関連付けられている。ユーザは、極端な一例であるイベントを無視するという措置から、その対極の一例であるスレッドを終了するという措置までの範囲において、救済措置を設定できる。イベント更新クライアント734およびイベント拡張サーバ735を用いて、推奨救済措置を分析者に推奨できる。上記推奨動作を変更するために、分析者はダッシュボード728を使用できる。ダッシュボードは、監視される各アプリケーションの状態を表示するGUIインターフェースを提供し、これによりセキュリティ分析者はアプリケーション上でアプリケーションの開始や停止などの制御を行うことができる。イベントが生成されると、イベントチェーンは通常の状態から後続の状態へと進行する。新しい状態に対応した救済措置が採用されてもよい。救済措置が非無視措置である場合、SMSまたはSMTPサーバ729を用いてセキュリティ分析者へ通知が送信される。セキュリティ分析者のSMS/SMTPアドレスはLDAPまたは他のディレクトリプロトコルにより判定される。ダッシュボードからアプリケーションを開始または停止させるプロセスは高い権限を必要とするため、セキュリティ分析者はOTPサーバ730を用いて認証する必要がある。
新しいイベントが生成されて、重大度および分析者へ推奨する救済措置とともにイベントおよびイベントチェーンのデータベース722にリンクされてもよい。これにより、ある装置における新しい攻撃に対する固有のイベントおよびイベントチェーンを他の装置へ送付できる。このために、すべての新しいイベントおよびイベントチェーンはイベント拡張サーバ735にロードされる。イベント更新クライアント734は、新しいイベントおよびイベントチェーンを検索して取り出すために、定期的にイベント拡張サーバに接続し認証を行う。イベント更新クライアントは、これら新しいイベントおよびイベントチェーンをイベントおよびイベントチェーンのデータベース722にロードする。コンテンツ解析エンジン721は、新しいイベントチェーンに包含された新しい攻撃に対してアプリケーション追跡を開始できる。
クライアントデーモンの場合と同様に、機器デーモン725は、解析エンジン上で実行される種々のプロセスの開始を担当する。このため、機器デーモン725は、解析エンジン・コンフィギュレーション・データベース726からコンフィギュレーション情報を読み出す必要がある。デーモンは、また、解析エンジンにおけるすべてのプロセスのためのハートビートポーリングを担当する。これは、解析エンジンにおけるすべての装置が常に最高の動作状態であることを保証する。3つの連続するハートビートが欠けることは、標的プロセスが応答していないことを示唆する。任意のプロセスが早まって終了すると、デーモンはそれ自体を含むそのプロセスを再開させる。
ソフトウェアは時々、機器ホスト、解析エンジン、またはクライアントにおいて、ソフトウェア内のエラーを修復すためにアップグレード(拡張)される。そのために、拡張クライアント731は、最新のソフトウェアが入手可能なソフトウェア拡張サーバ732を常に確認する。クライアントが、解析エンジンまたはクライアントのエンティティが古い画像を実行していることを発見した場合は、クライアントは、分析者にソフトウェア拡張サーバ732を介してこの古い画像を新しい画像に更新させる。新しい画像はシステム画像733として束ねられる。これにより、機器またはホストに、検査済みの互換性のある画像を提供できる。解析エンジンまたは解決クライアントにおけるサブシステムの画像の1つが、システム画像における同じ構成要素の画像と適合しない場合、すべての画像は以前の既知の良好なシステム画像にロールされることになる。
図8は、本発明の実施形態が実施されるコンピュータネットワークまたは同様のデジタル処理環境を示す。
1つまたは複数のクライアントコンピュータ/装置50および1つまたは複数のサーバコンピュータ60は、アプリケーションプログラム等を実行する処理装置、格納装置、および入出力装置を提供する。1つまたは複数のクライアントコンピュータ/装置50はまた、通信ネットワーク70を介して、他のクライアント装置/プロセス50および1つまたは複数のサーバコンピュータ60を含む他の計算装置と接続できる。通信ネットワーク70は、互いに通信するために個々のプロトコル(TCP/IP、ブルートゥース(登録商標)等)を現在使用している、リモートアクセスネットワーク、グローバルネットワーク(例えばインターネット)、ワールドワイドなコンピュータの集合、ローカルエリアまたはワイドエリアネットワーク、およびゲートウェイの一部であってもよい。他の電子機器/コンピュータ・ネットワーク・アーキテクチャも適している。
図9は、図8に示すコンピュータシステムにおけるコンピュータ(例えば、クライアントプロッセッサ/装置50またはサーバコンピュータ60)の例示的な内部構造を示す図である。各コンピュータ50,60はシステムバス79を含み、1つのバスはコンピュータまたは処理システムの構成要素間でのデータ転送に使用されるハードウェアラインのセットである。システムバス79は、基本的に共用コンジットであって、コンピュータシステムの異なる要素(例えば、プロセッサ、ディスク記憶装置、メモリ、入出力ポート、ネットワークポート等)を接続し、これら要素間での情報の転送を可能にする。システムバス79には、種々の入力および出力装置(例えば、キーボード、マウス、ディスプレイ、プリンタ、スピーカ等)をコンピュータ50、60へ接続するための入出力装置インターフェース82が接続される。ネットワークインターフェース86により、コンピュータはネットワーク(例えば、図8のネットワーク70)に接続された種々の他の装置に接続される。メモリ90は、本発明の実施形態(例えば、ここで述べる解決クライアントおよび解析エンジン要素)を実現するために使用されるコンピュータソフトウェア指示92およびデータ94のための揮発性記憶装置を提供する。ディスク記憶装置95は、本発明の実施形態を実現するために使用されるコンピュータソフトウェア指示92およびデータ94のための不揮発性記憶装置を提供する。中央処理装置84もまたシステムバス79に接続され、コンピュータ指示の実行に備える。
本発明は、その好適な実施形態を参照して特に示されかつ記載されたが、その好適な実施形態においては、添付の特許請求の範囲に包含される本発明の範囲を逸脱せずに、形態および詳細において種々の変更がなされ得ることが当業者によって理解されるであろう。 なお、本発明は、実施の態様として以下の内容を含む。
〔態様1〕
コンピュータにより実行される方法であって、
ロードタイム中にコンピュータアプリケーションのモデルを抽出することと、
前記コンピュータアプリケーションの前記モデルを格納することと、
ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入することと、
1つまたは複数のセキュリティイベントを検出するように、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含む方法。
〔態様2〕
態様1に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む方法。
〔態様3〕
態様1に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
〔態様4〕
態様1に記載の方法において、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式である方法。
〔態様5〕
態様1に記載の方法において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックすることを含む方法。
〔態様6〕
態様5に記載の方法において、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含む方法。
〔態様7〕
態様1に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含む方法。
〔態様8〕
態様1に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含む方法。
〔態様9〕
態様8に記載の方法において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
〔態様10〕
態様9に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様11〕
態様1に記載の方法において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
〔態様12〕
態様1に記載の方法において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化することを含む方法。
〔態様13〕
態様12に記載の方法において、1つまたは複数のプロセスがリモートシステム上に存在する方法。
〔態様14〕
態様12に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様15〕
態様1に記載の方法において、ランタイムに収集された前記データが、前記コンピュータアプリケーションの1つまたは複数のスレッド用のデータを含む方法。
〔態様16〕
態様1に記載の方法において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む方法。
〔態様17〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
〔態様18〕
態様17に記載の方法において、前記定義済みのシーケンスが不変チェーンに基づく方法。
〔態様19〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、当該イベント用のフォレンジックデータを捕捉することを含む方法。
〔態様20〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントが、重大度レベルを用いて追跡される方法。
〔態様21〕
態様1に記載の方法において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
〔態様22〕
態様21に記載の方法において、前記1つまたは複数の措置がシステムによって自動的にとられる方法。
〔態様23〕
態様21に記載の方法において、前記1つまたは複数の措置がユーザによってとられる方法。
〔態様24〕
態様21に記載の方法において、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法。
〔態様25〕
態様21に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
〔態様26〕
コンピュータにより実行される方法であって、
ロードタイム中にコンピュータアプリケーションのモデルを抽出することと、
前記コンピュータアプリケーションの前記モデルを格納することと、
ランタイムにおいてデータを収集するように、前記コンピュータアプリケーションに指示を挿入すること、を含む方法。
〔態様27〕
態様26に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む方法。
〔態様28〕
態様26に記載の方法において、前記コンピュータアプリケーションのモデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
〔態様29〕
態様26に記載の方法において、前記コンピュータアプリケーションはバイナリ形式またはインタプリタ形式である方法。
〔態様30〕
態様26に記載の方法において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックすることを含む方法。
〔態様31〕
態様30に記載の方法において、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含む方法。
〔態様32〕
態様26に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含む方法。
〔態様33〕
態様26に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含む方法。
〔態様34〕
態様33に記載の方法において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
〔態様35〕
態様34に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様36〕
態様26に記載の方法において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
〔態様37〕
態様26に記載の方法において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化することを含む方法。
〔態様38〕
態様37に記載の方法において、1つまたは複数のプロセスがリモートシステム上に存在する方法。
〔態様39〕
態様37に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様40〕
態様26に記載の方法において、ランタイムに収集された前記データが、前記コンピュータアプリケーションの各スレッド用のデータを含む方法。
〔態様41〕
コンピュータにより実行される方法であって、
1つまたは複数のセキュリティイベントを検出するように、コンピュータアプリケーションのランタイムに収集されたデータを前記コンピュータアプリケーションの格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含む方法。
〔態様42〕
態様41に記載の方法において、さらに、
ランタイムに収集された前記データをリモートシステム上のプロセスから受信することを含む方法。
〔態様43〕
態様41に記載の方法において、さらに、
前記コンピュータアプリケーションの前記格納されたモデルをリモートシステム上のプロセスから受信することを含む方法。
〔態様44〕
態様41に記載の方法において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む方法。
〔態様45〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
〔態様46〕
態様45に記載の方法において、前記定義済みのシーケンスが不変チェーンに基づく方法。
〔態様47〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む方法。
〔態様48〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルの使用を含む方法。
〔態様49〕
態様41に記載の方法において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
〔態様50〕
態様49に記載の方法において、前記1つまたは複数の措置がシステムによって自動的にとられる方法。
〔態様51〕
態様49に記載の方法において、前記1つまたは複数の措置がユーザによってとられる方法。
〔態様52〕
態様49に記載の方法において、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法。
〔態様53〕
態様49に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
〔態様54〕
ロードタイム中にコンピュータアプリケーションのモデルを抽出するクライアントであって、
前記コンピュータアプリケーションの前記モデルを格納し、
ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入する、クライアントと、
1つまたは複数のセキュリティイベントを検出するように、ランタイムに収集されたデータを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析する解析エンジンであって、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡する解析エンジンと、を備えたシステム。
〔態様55〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含むシステム。
〔態様56〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成されるシステム。
〔態様57〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式であるシステム。
〔態様58〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックするシステム。
〔態様59〕
態様58に記載のシステムにおいて、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含むシステム。
〔態様60〕
態様54に記載のシステムにおいて、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含むシステム。
〔態様61〕
態様60に記載のシステムにおいて、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含むシステム。
〔態様62〕
態様61に記載のシステムにおいて、前記クライアントが、さらに、前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化するシステム。
〔態様63〕
態様62に記載のシステムにおいて、前記クライアントが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置するシステム。
〔態様64〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成されるシステム。
〔態様65〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、ランタイムに収集した前記データを、前記解析エンジンへの伝送用にパッケージ化するシステム。
〔態様66〕
態様65に記載のシステムにおいて、前記クライアントが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置するシステム。
〔態様67〕
態様65に記載のシステムにおいて、前記解析エンジンへの伝送が、前記クライアントと前記解析エンジンとの間のトランスポートチャネル上で収集された前記データを送信することを含むシステム。
〔態様68〕
態様54に記載のシステムにおいて、ランタイムに収集された前記データが、前記コンピュータアプリケーションの1つまたは複数のスレッド用のデータを含むシステム。
〔態様69〕
態様54に記載のシステムにおいて、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含むシステム。
〔態様70〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含むシステム。
〔態様71〕
態様70に記載のシステムにおいて、前記定義済みのシーケンスが不変チェーンに基づくシステム。
〔態様72〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することが、当該イベント用のフォレンジックデータを捕捉することを含むシステム。〔態様73〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントが、重大度レベルを用いて追跡されるシステム。
〔態様74〕
態様54に記載のシステムにおいて、前記クライアントが、1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとるシステム。
〔態様75〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置がシステムによって自動的にとられるシステム。
〔態様76〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置がユーザによってとられるシステム。
〔態様77〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含むシステム。
〔態様78〕
態様74に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能であるシステム。〔態様79〕
態様54に記載のシステムにおいて、前記クライアントおよび前記解析エンジンの少なくとも一方が、スマートフォン、タブレット、ラップトップ、デスクトップ、およびハイエンドサーバのうちのいずれかにおいて動作するシステム。
〔態様80〕
態様54に記載のシステムにおいて、前記解析エンジンが、1つまたは複数のプロセッサからなるプロセッサファブリックを含むシステム。
〔態様81〕
態様54に記載のシステムにおいて、前記クライアントが、前記クライアントの1つまたは複数のプロセッサが停止または無応答状態の場合に、前記1つまたは複数のプロセッサを再始動させるクライアントデーモンを含むシステム。
〔態様82〕
態様54に記載のシステムにおいて、前記解析エンジンが、前記解析エンジンの1つまたは複数のプロセッサが停止または無応答状態の場合に、前記1つまたは複数のプロセッサを再始動させるアプリケーションデーモンを含むシステム。
〔態様83〕
態様54に記載のシステムにおいて、前記解析エンジンが、前記コンピュータアプリケーションの状態を表示するダッシュボードを含むシステム。
〔態様84〕
第1のプロセスおよび第2のプロセスを実行するプロセッサを備えた装置であって、
前記第1のプロセスが、ロードタイム中にコンピュータアプリケーションのモデルを抽出し、
前記第1のプロセスがさらに、前記コンピュータアプリケーションの前記モデルを格納し、
前記第2のプロセスが、ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入する、装置。
〔態様85〕
態様84に記載の装置において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む装置。
〔態様86〕
態様84に記載の装置において、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される装置。
〔態様87〕
態様84に記載の装置において、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式である装置。
〔態様88〕
態様84に記載の装置において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックする第3のプロセスを備えた装置。
〔態様89〕
態様88に記載の装置において、保全性のために前記コンピュータアプリケーションをチェックすることは、チェックサムを計算することを含む装置。
〔態様90〕
態様84に記載の装置において、データベースが、コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含む装置。
〔態様91〕
態様84に記載の装置において、前記データベースがリモートシステム上に存在する装置。
〔態様92〕
態様91に記載の装置において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化する前記第1のプロセスを備えた装置。
〔態様93〕
態様92に記載の装置において、前記第1のプロセスが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置する装置。
〔態様94〕
態様91に記載の装置において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される装置。
〔態様95〕
態様91に記載の装置において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへ伝送用にパッケージ化する第3のプロセスを備えた装置。
〔態様96〕
態様95に記載の装置において、前記1つまたは複数のプロセスがリモートシステム上に存在する装置。
〔態様97〕
態様95に記載の装置において、前記第3のプロセスが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置する装置。
〔態様98〕
態様91に記載の装置において、ランタイムに収集されたデータが、前記コンピュータアプリケーションの各スレッド用のデータを含む装置。
〔態様99〕
第1のプロセスおよび第2のプロセスを実行するプロセッサを備えた装置であって、
前記第1のプロセスが、1つまたは複数のセキュリティイベントを検出するように、コンピュータアプリケーションのランタイムに収集されたデータを前記コンピュータアプリケーションの格納されたモデルと照合して解析し、
前記第2のプロセスが、状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡する装置。
〔態様100〕
態様99に記載の装置において、ランタイムに収集された前記データがリモートシステム上のプロセスから受信される装置。
〔態様101〕
態様99に記載の装置において、前記コンピュータアプリケーションの前記格納されたモデルが、リモートシステム上のプロセスから受信される装置。
〔態様102〕
態様99に記載の装置において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む装置。
〔態様103〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む装置。
〔態様104〕
態様103に記載の装置において、前記定義済みのシーケンスが不変チェーンに基づく装置。
〔態様105〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む装置。
〔態様106〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルを用いることを含む装置。
〔態様107〕
態様99に記載の装置において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとる第3のプロセスを備えた装置。
〔態様108〕
態様107に記載の装置において、前記1つまたは複数の措置が自動的にとられる装置。
〔態様109〕
態様107に記載の装置において、前記1つまたは複数の措置はユーザによってとられる装置。
〔態様110〕
態様107に記載の装置において、前記1つまたは複数の措置は、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む装置。
〔態様111〕
態様107に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である装置。
〔態様112〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
〔態様113〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
〔態様114〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加すること含むシステム。
〔態様115〕
態様99に記載の装置において、前記第2のプロセスが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む装置。

Claims (24)

  1. コンピュータにより実行される方法であって、
    ロードタイム中にコンピュータアプリケーション701のモデルを抽出することと、
    前記コンピュータアプリケーション701の前記モデルを格納することと、
    ランタイムにデータを収集するように、前記コンピュータアプリケーション701に指示を挿入することと、
    1つまたは複数のセキュリティイベントを検出するように、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の前記格納されたモデルと照合して解析することと、
    状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含み、
    前記モデルはアプリケーション・マップ・データベース719に格納され、前記コンピュータアプリケーション701からの遷移マッピングデータを含み、
    前記遷移マッピングデータは、標的アドレスへの遷移指示が判定され得る直接遷移マッピングに対してのものか、または、ランタイムまで前記標的アドレスへの遷移指示が判定されることが阻止されるランタイム依存性を有する間接遷移マッピングに対してのものであり、
    前記抽出することは、
    前記遷移マッピングデータが、前記間接遷移マッピングに対するものである場合は、標的アドレスに対する遷移指示の逆アセンブリを前記アプリケーション・マップ・データベース719に格納することと、
    前記遷移マッピングデータが、ランタイム依存性を有さない前記直接遷移マッピングに対するものである場合は、前記標的アドレスへの前記遷移指示を前記アプリケーション・マップ・データベース719に格納することと、を含む方法。
  2. コンピュータにより実行される方法であって、
    ランタイムにデータを収集するように、コンピュータアプリケーション701に指示を挿入することと、
    1つまたは複数のセキュリティイベントを検出するように、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の格納されたモデルと照合して解析することと、
    状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含み、
    前記モデルは、アプリケーション・マップ・データベース719に格納され、前記コンピュータアプリケーション701からの遷移マッピングデータを含み、
    前記モデルの前記遷移マッピングデータは、(i)前記遷移マッピングデータが、標的アドレスに対する遷移指示がランタイム依存性を有する間接遷移マッピングに対するものである場合は、標的アドレスに対する遷移指示の逆アセンブリを含み、(ii)前記遷移マッピングデータが、ランタイム依存性を有さない直接遷移マッピングに対するものである場合は、前記標的アドレスに対する前記遷移指示を含む方法。
  3. 請求項1に記載の方法において、前記コンピュータアプリケーション701の前記モデルを抽出することが、前記コンピュータアプリケーション701から前記直接遷移マッピングおよび前記間接遷移マッピングを抽出すること、前記コンピュータアプリケーション701からメモリマッピングデータを抽出すること、前記コンピュータアプリケーション701からソフトスポットデータを抽出すること、および前記コンピュータアプリケーション701によって呼び出されるOS関数およびシステムコールを抽出することを含む方法。
  4. 請求項1に記載の方法において、前記コンピュータアプリケーション701の前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
  5. 請求項1に記載の方法において、前記コンピュータアプリケーション701はバイナリ形式またはバイトコードインタプリタ形式である方法。
  6. 請求項1に記載の方法において、さらに、
    前記ロードタイム中に保全性のために前記コンピュータアプリケーション701をチェックすることを含む方法。
  7. 請求項に記載の方法において、保全性のために前記コンピュータアプリケーション701をチェックすることが、チェックサムを計算することを含む方法。
  8. 請求項1に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーション701をモデル化する1つまたは複数のテーブルを含むデータベース719に前記モデルを格納することを含む方法。
  9. 請求項1に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベース719に格納することを含む方法。
  10. 請求項に記載の方法において、さらに、
    前記コンピュータアプリケーション701の前記モデルを、前記データベース719に格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
  11. 請求項1または2に記載の方法において、前記コンピュータアプリケーション701に指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
  12. 請求項1または2に記載の方法において、さらに、
    前記ランタイムに収集された前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化
    することを含む方法。
  13. 請求項12に記載の方法において、前記1つまたは複数のプロセスがリモートシステム上に存在する方法。
  14. 請求項10または12に記載の方法において、さらに、
    前記伝送を保証するように、前記伝送に対するデータ内にカナリアメッセージ422を配置することを含む方法。
  15. 請求項1または2に記載の方法において、前記ランタイムに収集された前記データが、前記コンピュータアプリケーション701の1つまたは複数のスレッド用のデータを含む方法。
  16. 請求項に記載の方法において、さらに、
    前記ランタイムに収集された前記データをリモートシステム上のプロセスから受信することを含む方法および/または前記コンピュータアプリケーション701の前記格納されたモデルをリモートシステム上のプロセスから受信することを含む方法。
  17. 請求項1または2に記載の方法において、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の前記格納されたモデルと照合して解析することが、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することを含む方法。
  18. 請求項1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
  19. 請求項18に記載の方法において、前記定義済みのシーケンスが一連の不変イベントに基づく方法。
  20. 請求項1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む、または、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルの使用を含む方法。
  21. 請求項1または2に記載の方法において、さらに、
    前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
  22. 請求項21に記載の方法において、
    前記1つまたは複数の措置がシステムによって自動的にとられるか、または、ユーザ702によってとられる方法、または、
    前記1つまたは複数の措置が、前記コンピュータアプリケーション701を終了すること、前記コンピュータアプリケーション701の1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーション701の1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法、または、
    前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
  23. 請求項1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
  24. 請求項1から23のいずれか一項に記載の方法を実行するように構成されたプロセッサ84を含む装置。
JP2020048093A 2013-09-12 2020-03-18 マルウェアのランタイム中の自動検出 Active JP7046111B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361960209P 2013-09-12 2013-09-12
US61/960,209 2013-09-12

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016542827A Division JP2016534479A (ja) 2013-09-12 2014-09-12 マルウェアのランタイム中の自動検出

Publications (2)

Publication Number Publication Date
JP2020095753A JP2020095753A (ja) 2020-06-18
JP7046111B2 true JP7046111B2 (ja) 2022-04-01

Family

ID=51619322

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016542827A Pending JP2016534479A (ja) 2013-09-12 2014-09-12 マルウェアのランタイム中の自動検出
JP2020048093A Active JP7046111B2 (ja) 2013-09-12 2020-03-18 マルウェアのランタイム中の自動検出

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016542827A Pending JP2016534479A (ja) 2013-09-12 2014-09-12 マルウェアのランタイム中の自動検出

Country Status (7)

Country Link
US (2) US10079841B2 (ja)
EP (1) EP3044719B1 (ja)
JP (2) JP2016534479A (ja)
KR (1) KR102368170B1 (ja)
AU (3) AU2014318585B2 (ja)
CA (1) CA2923231C (ja)
WO (1) WO2015038944A1 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
KR102368170B1 (ko) 2013-09-12 2022-02-25 버섹 시스템즈, 인코포레이션 멀웨어의 자동화된 런타임 검출
AU2015279920B2 (en) 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US10073972B2 (en) 2014-10-25 2018-09-11 Mcafee, Llc Computing platform security methods and apparatus
US9690928B2 (en) 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
US9516055B1 (en) * 2015-05-29 2016-12-06 Trend Micro Incorporated Automatic malware signature extraction from runtime information
US10783241B2 (en) * 2015-10-28 2020-09-22 Qomplx, Inc. System and methods for sandboxed malware analysis and automated patch development, deployment and validation
US10108798B1 (en) * 2016-01-04 2018-10-23 Smart Information Flow Technologies LLC Methods and systems for defending against cyber-attacks
CA3027728A1 (en) * 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN107545178B (zh) 2016-06-23 2021-01-15 华为技术有限公司 一种云应用的检测方法及云应用检测装置
US10289847B2 (en) * 2016-07-29 2019-05-14 Qualcomm Incorporated Updating virtual memory addresses of target application functionalities for an updated version of application binary code
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
US10346625B2 (en) 2016-10-31 2019-07-09 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
US9928365B1 (en) 2016-10-31 2018-03-27 International Business Machines Corporation Automated mechanism to obtain detailed forensic analysis of file access
US10599845B2 (en) * 2016-12-13 2020-03-24 Npcore, Inc. Malicious code deactivating apparatus and method of operating the same
US10303861B2 (en) * 2017-01-26 2019-05-28 Immunant, Inc. Software diversification in external contexts
US10225273B2 (en) 2017-01-27 2019-03-05 International Business Machines Corporation Secured event monitoring leveraging blockchain
US10783246B2 (en) 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
US10650156B2 (en) 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US11615338B2 (en) * 2017-07-24 2023-03-28 Bitdam Ltd. System and method for generating a file execution record of address tuples
US10621348B1 (en) * 2017-08-15 2020-04-14 Ca, Inc. Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call
WO2019039617A1 (ko) * 2017-08-21 2019-02-28 주식회사 스패로우 웹 애플리케이션의 동적 분석을 위한 api 호출 정보 제공 방법 및 장치
US10990975B2 (en) * 2017-11-08 2021-04-27 Paypal, Inc. Detecting malware by monitoring client-side memory stacks
KR101976992B1 (ko) 2017-11-16 2019-05-10 숭실대학교산학협력단 시그니처 추출을 이용한 분석회피기법 자동 인식 장치 및 그 방법
CN107967328B (zh) * 2017-11-24 2021-04-02 四川长虹电器股份有限公司 解决Hessian导致hibernate不兼容的方法
US11157611B2 (en) * 2018-01-02 2021-10-26 Blackberry Limited Binary image stack cookie protection
US11392686B2 (en) * 2018-01-02 2022-07-19 Blackberry Limited Detecting stack cookie utilization in a binary software component using binary static analysis
CN108768648B (zh) * 2018-03-15 2021-03-23 兴业数字金融服务(上海)股份有限公司 一种层层加密的区块链事件链安全存证实现方法及***
US11416612B2 (en) * 2018-03-16 2022-08-16 Acronis International Gmbh Protecting against malware code injections in trusted processes
US11494491B2 (en) * 2018-03-16 2022-11-08 Acronis International Gmbh Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector
US10984110B2 (en) 2018-03-20 2021-04-20 ReFirm Labs, Inc. Evaluation of security of firmware
US10943015B2 (en) * 2018-03-22 2021-03-09 ReFirm Labs, Inc. Continuous monitoring for detecting firmware threats
US11962606B2 (en) * 2018-04-04 2024-04-16 Twistlock Ltd. Protecting serverless applications
US11146590B2 (en) * 2018-04-19 2021-10-12 Ncr Corporation Omni-channel end-point security
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US10740457B2 (en) * 2018-06-20 2020-08-11 International Business Machines Corporation System for preventing malicious operator placement in streaming applications
US10897483B2 (en) * 2018-08-10 2021-01-19 International Business Machines Corporation Intrusion detection system for automated determination of IP addresses
US10929536B2 (en) * 2018-09-14 2021-02-23 Infocyte, Inc. Detecting malware based on address ranges
US11231948B2 (en) 2018-10-18 2022-01-25 Sternum Ltd. Applying security mitigation measures for stack corruption exploitation in intermediate code files
EP3864545A4 (en) 2018-10-29 2022-06-15 Sternum Ltd. DYNAMIC MEMORY PROTECTION
US10705814B2 (en) * 2018-11-30 2020-07-07 Grammatech, Inc. Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic
US20200293654A1 (en) * 2019-03-12 2020-09-17 Universal City Studios Llc Security appliance extension
CN110046504B (zh) * 2019-04-22 2021-04-06 北京智游网安科技有限公司 基于Linker的SO文件隐藏方法、储存介质及装置
US11108790B1 (en) * 2019-04-30 2021-08-31 Rapid7, Inc. Attack signature generation
US11770388B1 (en) * 2019-12-09 2023-09-26 Target Brands, Inc. Network infrastructure detection
KR20210112923A (ko) 2020-03-06 2021-09-15 삼성전자주식회사 시스템 온 칩 및 이의 동작 방법
US11768933B2 (en) * 2020-08-11 2023-09-26 Saudi Arabian Oil Company System and method for protecting against ransomware without the use of signatures or updates
US20220129539A1 (en) * 2020-10-23 2022-04-28 Red Hat, Inc. Embedding security requirements in container images
US20220188408A1 (en) 2020-12-16 2022-06-16 Virsec Systems, Inc. Software Build System Protection Engine
US11455388B1 (en) * 2021-04-26 2022-09-27 Weeve.Network System and method for end-to-end data trust management with real-time attestation
WO2022232470A1 (en) * 2021-04-29 2022-11-03 Dipankar Dasgupta Ai-powered advanced malware detection system
US20220358222A1 (en) * 2021-05-10 2022-11-10 Insyde Software Corp. System And Method For Firmware Security Event Mitigation
CN114338806B (zh) * 2022-02-28 2022-06-21 湖南云畅网络科技有限公司 一种同步消息处理方法及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330736A (ja) 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 不正リソース利用防止システム及びその方法並びにプログラム
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム

Family Cites Families (216)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215406A (en) 1972-08-22 1980-07-29 Westinghouse Electric Corp. Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system
US4080650A (en) 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4466077A (en) 1981-09-25 1984-08-14 International Business Machines Corporation Method and apparatus for division employing associative memory
JPS59216249A (ja) 1983-05-23 1984-12-06 Toshiba Corp 集積回路装置
GB8511995D0 (en) 1985-05-11 1985-06-19 Ross S R Software protection
US4803720A (en) 1986-09-22 1989-02-07 International Business Machines Corporation Dual plane cross point switch architecture for a micro-PBX
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US5222220A (en) 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
JP2839201B2 (ja) 1990-07-30 1998-12-16 株式会社日立製作所 仮想計算機システム
US5235551A (en) 1991-01-08 1993-08-10 Pacific Data Products, Inc. Memory addressing scheme
US5297274A (en) 1991-04-15 1994-03-22 International Business Machines Corporation Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
US5321828A (en) 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
US5359659A (en) 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5440723A (en) * 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5784552A (en) 1993-07-28 1998-07-21 Digital Equipment Corporation Debugging a computer program by simulating execution forwards and backwards in a main history log and alternative history logs
US5611043A (en) 1994-03-18 1997-03-11 Borland International, Inc. Debugger system and method for controlling child processes
US5630048A (en) 1994-05-19 1997-05-13 La Joie; Leslie T. Diagnostic system for run-time monitoring of computer operations
JP3360933B2 (ja) 1994-06-01 2003-01-07 富士通株式会社 情報処理システムにおける記憶制御方法および記憶制御装置
US5826012A (en) 1995-04-21 1998-10-20 Lettvin; Jonathan D. Boot-time anti-virus and maintenance facility
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US6151618A (en) 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5909580A (en) 1996-02-08 1999-06-01 Inprise Corporation Development system and methods with direct compiler support for detecting invalid use and management of resources and memory at runtime
US6119206A (en) 1996-02-12 2000-09-12 Sun Microsystems, Inc. Design of tags for lookup of non-volatile registers
EP0814404B1 (en) 1996-06-19 2001-01-31 Matsushita Electric Industrial Co., Ltd. Debugging apparatus for debugging a program
US5850559A (en) 1996-08-07 1998-12-15 Compaq Computer Corporation Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
GB9626401D0 (en) 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Diagnostic procedures in an integrated circuit device
US5873124A (en) 1997-02-06 1999-02-16 Microsoft Corporation Virtual memory scratch pages
US5890005A (en) 1997-06-02 1999-03-30 Nokia Mobile Phones Limited Low power, low interconnect complexity microprocessor and memory interface
DE69819927D1 (de) 1997-09-05 2003-12-24 Sun Microsystems Inc Nachschlagtabelle und verfahren zur datenspeicherung darin
US5983348A (en) 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US6237137B1 (en) 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6263489B1 (en) 1998-04-30 2001-07-17 Hewlett-Packard Company Method and apparatus for debugging of optimized code
US6077312A (en) 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6178522B1 (en) 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
US6553429B1 (en) 1998-06-05 2003-04-22 Microsoft Corporation Fast conditional thunk utility
US6275893B1 (en) 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US6665316B1 (en) 1998-09-29 2003-12-16 Agilent Technologies, Inc. Organization of time synchronization in a distributed system
EP0992906B1 (en) 1998-10-06 2005-08-03 Texas Instruments Inc. Apparatus and method for software breakpoint in a delay slot
US7380245B1 (en) 1998-11-23 2008-05-27 Samsung Electronics Co., Ltd. Technique for detecting corruption associated with a stack in a storage device
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US6981176B2 (en) 1999-05-10 2005-12-27 Delphi Technologies, Inc. Secured microcontroller architecture
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
WO2001022228A1 (en) 1999-09-17 2001-03-29 Nortel Networks Limited System and method for producing a verification system for verifying procedure interfaces
US6745160B1 (en) 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
WO2001053908A2 (en) 2000-01-18 2001-07-26 Telcordia Technologies, Inc. Method and systems for identifying the existence of one or more unknown programs in a system
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
US6775780B1 (en) 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
US7376820B2 (en) 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction
US6973577B1 (en) 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US7539875B1 (en) 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US6895508B1 (en) 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
US6832373B2 (en) 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US7260845B2 (en) 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US6848044B2 (en) 2001-03-08 2005-01-25 International Business Machines Corporation Circuits and methods for recovering link stack data upon branch instruction mis-speculation
US20020138554A1 (en) 2001-03-26 2002-09-26 Motorola, Inc. Method for remotely verifying software integrity
US6993751B2 (en) 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
JP3702815B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
US20030014667A1 (en) 2001-07-16 2003-01-16 Andrei Kolichtchak Buffer overflow attack detection and suppression
US7421587B2 (en) 2001-07-26 2008-09-02 Mcafee, Inc. Detecting computer programs within packed computer files
US20030188160A1 (en) 2001-08-02 2003-10-02 Singam Sunder Method and system to securely update files via a network
US7257763B1 (en) 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
GB2378778B (en) 2001-08-13 2005-03-23 Ibm Computer system with heap and card table
EP1246033A1 (de) 2001-08-23 2002-10-02 Siemens Aktiengesellschaft Verfahren zur Überwachung konsistenter Speicherinhalte in redundanten Systemen
US7853803B2 (en) 2001-09-28 2010-12-14 Verizon Corporate Services Group Inc. System and method for thwarting buffer overflow attacks using encrypted process pointers
US7526654B2 (en) 2001-10-16 2009-04-28 Marc Charbonneau Method and system for detecting a secure state of a computer system
US20030079158A1 (en) 2001-10-23 2003-04-24 Tower James Brian Secured digital systems and a method and software for operating the same
US6832302B1 (en) 2001-10-24 2004-12-14 At&T Corp. Methods and apparatus for detecting heap smashing
US6668313B2 (en) 2001-12-21 2003-12-23 Agere Systems, Inc. Memory system for increased bandwidth
US7076629B2 (en) 2001-12-26 2006-07-11 Bonola Thomas J Method for providing concurrent non-blocking heap memory management for fixed sized blocks
US7168008B2 (en) 2002-01-18 2007-01-23 Mobitv, Inc. Method and system for isolating and protecting software components
DE60200323T2 (de) 2002-03-26 2005-02-24 Soteres Gmbh Verfahren zum Schutz der Integrität von Programmen
US7228426B2 (en) 2002-04-03 2007-06-05 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context
US6948091B2 (en) 2002-05-02 2005-09-20 Honeywell International Inc. High integrity recovery from multi-bit data failures
GB2383444B (en) 2002-05-08 2003-12-03 Gfi Software Ltd System and method for detecting a potentially malicious executable file
US7007159B2 (en) 2002-05-10 2006-02-28 Intel Corporation System and method for loading and integrating a firmware extension onto executable base system firmware during initialization
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US6996677B2 (en) 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US20040157639A1 (en) 2002-11-27 2004-08-12 Morris Roy D. Systems and methods of mobile restore
US20040168078A1 (en) 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7058838B2 (en) 2002-12-17 2006-06-06 Hewlett-Packard Development Company, L.P. System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7603704B2 (en) 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US9503470B2 (en) 2002-12-24 2016-11-22 Fred Herz Patents, LLC Distributed agent based model for security monitoring and response
US7237172B2 (en) 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US7043509B2 (en) 2003-02-19 2006-05-09 Sun Microsystems, Inc. Parallel non-contiguous allocation and card parsing
JP4547861B2 (ja) 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
CA2426619A1 (en) 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US20050108562A1 (en) * 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7480919B2 (en) 2003-06-24 2009-01-20 Microsoft Corporation Safe exceptions
US8250565B2 (en) 2003-06-27 2012-08-21 Hewlett-Packard Development Company, L.P. System and method for downloading update packages into a mobile handset in a carrier network
US7322027B2 (en) 2003-06-27 2008-01-22 Microsoft Corporation Detecting termination and providing information related to termination of a computer system process
US20040268095A1 (en) 2003-06-30 2004-12-30 Tatiana Shpeisman Efficient implementation of null reference check
US7707548B2 (en) 2003-07-22 2010-04-27 Verizon Business Global Llc Integration of information distribution systems
US7137038B2 (en) 2003-07-29 2006-11-14 Hitachi Global Storage Technologies Netherlands, B.V. System and method for autonomous data scrubbing in a hard disk drive
US7530103B2 (en) 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
WO2005015370A1 (en) 2003-08-11 2005-02-17 Telecom Italia S.P.A. Method and system for detecting unauthorised use of a communication network
WO2005033964A1 (en) 2003-09-05 2005-04-14 Itron, Inc. Synchronizing and controlling software downloads, such as for utility meter-reading data collection and processing
US7467202B2 (en) 2003-09-10 2008-12-16 Fidelis Security Systems High-performance network content analysis platform
US7644441B2 (en) 2003-09-26 2010-01-05 Cigital, Inc. Methods for identifying malicious software
US7360097B2 (en) 2003-09-30 2008-04-15 Check Point Software Technologies, Inc. System providing methodology for securing interfaces of executable files
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US20080250496A1 (en) 2003-10-07 2008-10-09 Daisuke Namihira Frame Relay Device
US7500245B2 (en) 2005-07-08 2009-03-03 Microsoft Corporation Changing code execution path using kernel mode redirection
US7526755B2 (en) 2003-10-08 2009-04-28 Microsoft Corporation Plug-in pre- and postconditions for static program analysis
US7237267B2 (en) 2003-10-16 2007-06-26 Cisco Technology, Inc. Policy-based network security management
CN100391180C (zh) 2003-10-30 2008-05-28 华为技术有限公司 一种以太网二层交换设备绑定硬件地址和端口的方法
US8151117B2 (en) 2003-11-05 2012-04-03 Vocalcomm Group, Llc Detection of items stored in a computer system
JP4485330B2 (ja) 2003-11-20 2010-06-23 富士通株式会社 回路の有向ファルシフィケーション
US7529979B2 (en) 2003-12-12 2009-05-05 International Business Machines Corporation Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20050138409A1 (en) 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
US7716495B2 (en) * 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
US20100005531A1 (en) 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US7284276B2 (en) 2004-01-22 2007-10-16 Symantec Corporation Return-to-LIBC attack detection using branch trace records system and method
US7730530B2 (en) 2004-01-30 2010-06-01 Microsoft Corporation System and method for gathering exhibited behaviors on a .NET executable module in a secure manner
US7694022B2 (en) 2004-02-24 2010-04-06 Microsoft Corporation Method and system for filtering communications to prevent exploitation of a software vulnerability
US7693975B2 (en) 2004-03-02 2010-04-06 Hewlett-Packard Development Company, L.P. Network device applying kalman filter
US7328323B1 (en) 2004-03-08 2008-02-05 Symantec Corporation Heap buffer overflow exploitation prevention system and method
JP2005258498A (ja) 2004-03-09 2005-09-22 Hitachi Ltd サーバ回復方法
US7272748B1 (en) 2004-03-17 2007-09-18 Symantec Corporation Method and apparatus to detect and recover from a stack frame corruption
US7530093B2 (en) 2004-04-30 2009-05-05 Microsoft Corporation Securing applications and operating systems
US8042180B2 (en) 2004-05-21 2011-10-18 Computer Associates Think, Inc. Intrusion detection based on amount of network traffic
US7490268B2 (en) 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7207065B2 (en) 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
US7703073B2 (en) 2004-06-08 2010-04-20 Covia Labs, Inc. Device interoperability format rule set and method for assembling interoperability application package
US7860096B2 (en) 2004-06-08 2010-12-28 Oracle America, Inc. Switching method and apparatus for use in a communications network
US7526810B2 (en) 2004-06-21 2009-04-28 Ebay Inc. Method and system to verify data received, at a server system, for access and/or publication via the server system
US20050283601A1 (en) * 2004-06-22 2005-12-22 Sun Microsystems, Inc. Systems and methods for securing a computer boot
WO2006014554A2 (en) 2004-07-07 2006-02-09 University Of Maryland Method and system for monitoring system memory integrity
US7971255B1 (en) 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7603715B2 (en) 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
FR2873466A1 (fr) 2004-07-21 2006-01-27 St Microelectronics Sa Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe
US7634812B2 (en) 2004-07-21 2009-12-15 Microsoft Corporation Filter generation
EP1619572A1 (en) 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
JP4643201B2 (ja) 2004-08-12 2011-03-02 日本電信電話株式会社 バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
GB2417579A (en) 2004-08-26 2006-03-01 Hewlett Packard Development Co Method for dynamically inserting code into a process by enabling taken branch traps to intercept a branch during the execution of the process
US7430683B2 (en) 2004-09-23 2008-09-30 Intel Corporation Method and apparatus for enabling run-time recovery of a failed platform
EP1825342A1 (en) 2004-11-22 2007-08-29 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
US7484239B1 (en) 2004-11-30 2009-01-27 Symantec Corporation Detecting heap and stack execution in the operating system using regions
KR100675836B1 (ko) 2004-12-10 2007-01-29 한국전자통신연구원 Epon 구간내에서의 링크 보안을 위한 인증 방법
US20060126799A1 (en) 2004-12-15 2006-06-15 Microsoft Corporation Fault injection
US7613954B2 (en) 2004-12-21 2009-11-03 National Instruments Corporation Test executive with stack corruption detection
TWI252976B (en) 2004-12-27 2006-04-11 Ind Tech Res Inst Detecting method and architecture thereof for malicious codes
US7774787B2 (en) 2005-01-11 2010-08-10 Microsoft Corporation Method for specifying and verifying multi-threaded object-oriented programs with invariants
US7315871B2 (en) 2005-01-19 2008-01-01 International Business Machines Inc. Corporation Method, system and program product for interning invariant data objects in dynamic space constrained systems
JP4549303B2 (ja) * 2005-02-07 2010-09-22 株式会社ソニー・コンピュータエンタテインメント パイプラインを用いてメッセージ認証コードを提供する方法および装置
JP2006259869A (ja) 2005-03-15 2006-09-28 Fujitsu Ltd マルチプロセッサシステム
US7290230B2 (en) 2005-03-17 2007-10-30 Fujitsu Limited System and method for verifying a digital design using dynamic abstraction
ES2745045T3 (es) 2005-04-22 2020-02-27 Audinate Pty Ltd Red, dispositivo y método para transportar medios digitales
US7493602B2 (en) 2005-05-02 2009-02-17 International Business Machines Corporation Methods and arrangements for unified program analysis
US7912877B2 (en) 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7730536B2 (en) 2005-06-08 2010-06-01 Verizon Business Global Llc Security perimeters
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US20070027815A1 (en) 2005-07-29 2007-02-01 Symantec Corporation Systems and methods for centralized subscription and license management in a small networking environment
EP1758021A2 (en) 2005-08-25 2007-02-28 International Business Machines Corporation Method or apparatus for managing a server process in a computer system
US20070050848A1 (en) 2005-08-31 2007-03-01 Microsoft Corporation Preventing malware from accessing operating system services
US20070067359A1 (en) 2005-09-21 2007-03-22 Lenovo (Singapore) Pte. Ltd. Centralized system for versioned data synchronization
US20070118646A1 (en) 2005-10-04 2007-05-24 Computer Associates Think, Inc. Preventing the installation of rootkits on a standalone computer
US7809670B2 (en) * 2005-12-09 2010-10-05 Microsoft Corporation Classification of malware using clustering that orders events in accordance with the time of occurance
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US8108840B2 (en) 2006-01-12 2012-01-31 International Business Machines Corporation Method for enhancing debugger performance of hardware assisted breakpoints
US20070174549A1 (en) 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
US7845005B2 (en) 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US7643812B2 (en) 2006-09-18 2010-01-05 Agere Systems Inc. Method and apparatus for a single-path enhanced-algorithm digital automatic gain control integrated receiver with power management and XM interference enhancement
WO2008055156A2 (en) 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
IL181426A (en) 2007-02-19 2011-06-30 Deutsche Telekom Ag Automatic removal of signatures for malware
US20080215925A1 (en) 2007-03-02 2008-09-04 International Business Machines Corporation Distributed fault injection mechanism
WO2008124038A1 (en) 2007-04-03 2008-10-16 Ldra Technology, Inc. Automated management of software requirements verification
US8336102B2 (en) 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
JP4938576B2 (ja) 2007-07-24 2012-05-23 日本電信電話株式会社 情報収集システムおよび情報収集方法
CN101154258A (zh) 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析***与方法
US7971044B2 (en) 2007-10-05 2011-06-28 Qualcomm Incorporated Link stack repair of erroneous speculative update
US8627287B2 (en) 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US7453910B1 (en) 2007-12-18 2008-11-18 International Business Machines Corporation Synchronization of independent clocks
US8434151B1 (en) 2008-01-04 2013-04-30 International Business Machines Corporation Detecting malicious software
US8261326B2 (en) 2008-04-25 2012-09-04 International Business Machines Corporation Network intrusion blocking security overlay
US8307191B1 (en) 2008-05-09 2012-11-06 Vmware, Inc. Page fault handling in a virtualized computer system
JP2009282180A (ja) 2008-05-21 2009-12-03 Olympus Imaging Corp 観察光学系及びそれを用いた撮像装置
US8407523B2 (en) 2008-06-06 2013-03-26 Iti Scotland Limited Method for protecting software programs
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US9027123B2 (en) * 2008-12-08 2015-05-05 Nec Corporation Data dependence analyzer, information processor, data dependence analysis method and program
KR101269549B1 (ko) 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
JP2011059930A (ja) 2009-09-09 2011-03-24 Nec Computertechno Ltd 電源ユニット
WO2011139302A2 (en) 2009-12-11 2011-11-10 Probert Thomas H Steganographic messaging system using code invariants
US9230455B2 (en) 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
JP5499805B2 (ja) 2010-03-19 2014-05-21 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法並びに情報処理プログラム
CN102012987B (zh) 2010-12-02 2013-03-13 李清宝 自动二进制恶意代码行为分析***
US8464102B2 (en) 2010-12-23 2013-06-11 GM Global Technology Operations LLC Methods and systems for diagnosing hardware and software faults using time-stamped events
US8595610B2 (en) 2011-01-25 2013-11-26 Infineon Technologies Ag Method, software and computer system for manipulating aggregated data
US8615640B2 (en) 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US8495581B2 (en) 2011-05-05 2013-07-23 International Business Machines Corporation Code evaluation based on failure prediction
BR112014005119A2 (pt) 2011-09-09 2017-04-18 Hewlett Packard Development Co Lp método para avaliação de eventos, sistema para avaliação de eventos e meio não transitório lido por computador
US8788627B2 (en) 2011-09-30 2014-07-22 Apple Inc. Interactive web application framework
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
WO2013063474A1 (en) 2011-10-28 2013-05-02 Scargo, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
SG11201402290VA (en) 2011-11-15 2014-07-30 Japan Science & Tech Agency Program analysis/verification service provision system, control method for same, control program, control program for directing computer to function, program analysis/verification device, program analysis/verification tool management device
US9372991B2 (en) * 2012-03-06 2016-06-21 International Business Machines Corporation Detecting malicious computer code in an executing program module
US8792498B2 (en) 2012-03-23 2014-07-29 Wind River Systems, Inc. System and method for enhanced updating layer-2 bridge address table on asymmetric multiprocessing systems
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9507933B2 (en) 2012-08-01 2016-11-29 Mitsubishi Electric Corporation Program execution apparatus and program analysis apparatus
US9201720B2 (en) 2012-08-13 2015-12-01 Nxp B.V. FlexRay network runtime error detection and containment
US9882984B2 (en) 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
KR102368170B1 (ko) 2013-09-12 2022-02-25 버섹 시스템즈, 인코포레이션 멀웨어의 자동화된 런타임 검출
GB2520987B (en) 2013-12-06 2016-06-01 Cyberlytic Ltd Using fuzzy logic to assign a risk level profile to a potential cyber threat
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
AU2015279920B2 (en) 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
US10019569B2 (en) 2014-06-27 2018-07-10 Qualcomm Incorporated Dynamic patching for diversity-based software security
US9699205B2 (en) 2015-08-31 2017-07-04 Splunk Inc. Network security system
CA3027728A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330736A (ja) 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 不正リソース利用防止システム及びその方法並びにプログラム
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム

Also Published As

Publication number Publication date
EP3044719B1 (en) 2019-08-28
US20160212159A1 (en) 2016-07-21
KR20160114037A (ko) 2016-10-04
AU2014318585B2 (en) 2018-01-04
US11146572B2 (en) 2021-10-12
KR102368170B1 (ko) 2022-02-25
CA2923231A1 (en) 2015-03-19
EP3044719A1 (en) 2016-07-20
AU2014318585A1 (en) 2016-03-17
AU2018202323A1 (en) 2018-04-26
US20180324195A1 (en) 2018-11-08
AU2020203503A1 (en) 2020-06-18
US10079841B2 (en) 2018-09-18
WO2015038944A1 (en) 2015-03-19
JP2020095753A (ja) 2020-06-18
CA2923231C (en) 2020-06-02
JP2016534479A (ja) 2016-11-04
AU2020203503B2 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
AU2018204262B2 (en) Automated code lockdown to reduce attack surface for software
CN108780485B (zh) 基于模式匹配的数据集提取
EP3295359B1 (en) Detection of sql injection attacks
EP3472746B1 (en) Systems and methods for remediating memory corruption in a computer application
JP2022133461A (ja) カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200416

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220322

R150 Certificate of patent or registration of utility model

Ref document number: 7046111

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150