JP6949951B2 - コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法 - Google Patents

コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法 Download PDF

Info

Publication number
JP6949951B2
JP6949951B2 JP2019518173A JP2019518173A JP6949951B2 JP 6949951 B2 JP6949951 B2 JP 6949951B2 JP 2019518173 A JP2019518173 A JP 2019518173A JP 2019518173 A JP2019518173 A JP 2019518173A JP 6949951 B2 JP6949951 B2 JP 6949951B2
Authority
JP
Japan
Prior art keywords
computer
code
computer application
application
routine
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
JP2019518173A
Other languages
English (en)
Other versions
JP2019519056A5 (ja
JP2019519056A (ja
Inventor
グプタ,サティヤ,ブラット
Original Assignee
ヴァーセック システムズ,インコーポレイテッド
ヴァーセック システムズ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ヴァーセック システムズ,インコーポレイテッド, ヴァーセック システムズ,インコーポレイテッド filed Critical ヴァーセック システムズ,インコーポレイテッド
Publication of JP2019519056A publication Critical patent/JP2019519056A/ja
Publication of JP2019519056A5 publication Critical patent/JP2019519056A5/ja
Application granted granted Critical
Publication of JP6949951B2 publication Critical patent/JP6949951B2/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/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
    • 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/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/1433Vulnerability analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Landscapes

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

Description

関連出願の相互参照
本願は2016年6月16日に出願された米国仮特許出願第62/350,917号の利益を主張する。上記の出願の全教示を参照により全て本明細書に援用する。
背景
ネットワークにアクセス可能なアプリケーションは、悪意ある攻撃者によって遠隔的に引き起こされるメモリ破損攻撃に対して脆弱であることが多い。リモートユーザのコンピュータネットワークへの新たなアクセスを多くの場合高い特権と共に得ることができるので、悪意ある攻撃者はそのような脆弱性を懸命に利用しようとしている。制御を奪うと、攻撃者はあたかもリモートユーザが危険にさらされたマシンを所有するかのように攻撃者の選択の任意のコードを実行することができる。通常、悪意ある攻撃者の目的は利用者から個人情報及び/又は機密情報を抽出することだが、目的は生産性の喪失を負わせるために利用者の個人活動又は事業活動を混乱させることも含み得る。
予備攻撃は、アプリケーションのメモリアドレス空間内のスタック、ヒープセグメント、並びにインポート、エクスポート、仮想ポインタ(VPTR)、及びシステムコール/システムディスパッチテーブルを含む他のジャンプテーブルに対するバッファ内に戦略的データを配置することによってその準備を助けることができる。予備攻撃は、本来備わっているアプリケーションの一部であるコードの代わりに悪意あるハッカーによって設計されたコードを実行させる最終目的のために、後で仕掛けられる攻撃が実行フローを操作することを可能にする。最も洗練された攻撃者は標的アプリケーションのメモリ空間内に自らの悪意あるコードを直接挿入する必要さえなく、代わりに攻撃者は正当にロードされたアプリケーションコードから選択的に選んだ(即ち望ましいものだけを選んだ)コードのチャンクをまとめることによって既存のコードに再度目的をもたせ、それにより自らの非道な目的を実行することができる。このような高度な実行時のメモリ破損攻撃からアプリケーションを実行時に保護する差し迫った需要がある。
概要
本開示の実施形態は、1つ又は複数の実行中プロセス内のメモリ破損によって促進される悪意ある攻撃を防ぐためのシステム及び方法の例を対象とする。一部の実施形態では、システムが悪意ある攻撃を防ぐ操作を実行するための1つ又は複数のインストルメンテーションエンジンと1つ又は複数の分析エンジンとを含む。1つ又は複数のインストルメンテーションエンジンは、1つ又は複数の分析エンジンと同じ又は異なるハードウェア又はコンピュータシステム上に位置し得る。一部の実施形態では、このシステム及び方法は、アプリケーションコードがメモリ内に最初にロードするときコンピュータアプリケーションのモデルを抽出することができる。モデルは、これだけに限定されないが、正当な出所メモリアドレス及び宛先メモリアドレスの対の構築、遷移、基本ブロック境界情報、コードセグメント境界、インポート及びエクスポートアドレステーブル境界、ジャンプテーブル境界、又は当業者に知られている他の任意の種類のコンピュータルーチン関連情報を含み得る。一部の実施形態では、システム及び方法がコンピュータアプリケーションのモデルを記憶し得る。
一部の実施形態では、システム及び方法は、実行時のデータ及び/又はアプリケーションの実行状態を収集するために、コンピュータアプリケーション命令がメモリ内で実行される前に(任意選択的に実行時に)コンピュータアプリケーション内に命令を挿入することができる。一部の実施形態では、システム及び方法がコンピュータアプリケーションの記憶済みのモデルに対して実行時に収集したデータを分析して1つ又は複数のセキュリティイベントの検出を行うことができる。一部の実施形態では、システム及び方法が1つ又は複数のセキュリティイベントの検出に基づいて、コンピュータアプリケーションの継続的実行を保つやり方でコンピュータアプリケーションに関連する少なくとも1つのアクティブプロセスに関連する少なくとも1つのコンピュータルーチンを修正する(即ちパッチを挿入する)ことができる。
一部の実施形態によれば、コンピュータルーチンが少なくとも1つのプロセスに関連して実行され得る。一部の実施形態では、1つ又は複数の検出されるセキュリティイベントが、コンピュータアプリケーション内の別の(異常な)コードパスへの悪意ある移動に関連し得る。かかる悪意ある移動は、これだけに限定されないが、悪意あるジャンプルーチン、悪意あるコードへのトランポリン、間接ジャンプベクタ、又は当業者に知られている他の任意の悪意ある移動を含み得る。
1つ又は複数の集約パッチが利用者によって受信されることに応答して、一部の実施形態はコンピュータアプリケーションに関連する少なくとも1つのコンピュータルーチンを修正又は除去する、及びコンピュータアプリケーションに関連する1つ又は複数の個々のパッチを修正又は除去する少なくとも1つの操作を実行することができる。一部の実施形態によれば、修正することはコンピュータアプリケーションに関連するパッチ又は構成を検査することを含み得る。一部の実施形態によれば、システム及び方法が少なくとも1つのコンピュータルーチンに関連するスタックを修正することができる。一部の実施形態では、システム及び方法が少なくとも1つの実行中のコンピュータルーチンに関連する1つ又は複数のヒープを修正することができる。他の一部の実施形態では、システム及び方法が1つ又は複数のジャンプテーブルを修正することができる。
更に一部の実施形態では、少なくとも1つのアクティブプロセスが少なくとも1つのコンピュータルーチンを実行している間、システム及び方法が少なくとも1つのプロセスに関連する少なくとも1つのコンピュータルーチンを修正することができる。そのため、一部の実施形態はホットパッチング(又はライブパッチング若しくは動的ソフトウェアパッチング/更新)を使用することができる。一部の実施形態によれば、ホットパッチの結果として置換関数(即ち別の関数)を呼び出すことができる。一部の実施形態では、システム及び方法が、少なくとも1つのコンピュータルーチンを修正する前に少なくとも1つのアクティブプロセス(又はコンピュータアプリケーション)の実行を一時停止することができる。一部の実施形態では、少なくとも1つのコンピュータ命令を修正した後、システム及び方法が少なくとも1つのアクティブプロセスの実行を再開することができる。
一部の実施形態では、システム及び方法が、ロード時間中にコンピュータアプリケーションのモデルを抽出することができる。一部の実施形態によれば、システム及び方法はコンピュータアプリケーションのモデルを記憶し得る。一部の実施形態では、システム及び方法は、実行時にデータを収集するために、コンピュータアプリケーションがメモリ内で実行される前に(任意選択的にメモリ内の)コンピュータアプリケーション内に命令を挿入することができる。一部の実施形態では、システム及び方法がコンピュータアプリケーションの記憶済みのモデルに対して実行時に収集したデータを分析して1つ又は複数のセキュリティイベントの検出を行うことができる。一部の実施形態では、システム及び方法は1つ又は複数のセキュリティイベントを検出すると、1つ又は複数のリターン命令を実行する前にコンピュータアプリケーションに関連するメモリ破損を一時的に修復する(即ち1つ又は複数のポインタを復元する)ことができる。一部の実施形態では、システム及び方法が1つ又は複数の検出済みのセキュリティイベントに基づいて実用的な情報を報告する(即ちパッチを作成するためにベンダに情報を報告する)ことができる。実用的な情報は、これだけに限定されないが、セキュリティイベントが起こる場所/方法、トランポリンが行われる場所/方法、脆弱な関数のスタック又はヒープ内でメモリが破損させられた場所/方法等の情報を含み得る。
一部の実施形態では、システム及び方法が、コンピュータアプリケーションの継続的実行を保つやり方で少なくとも1つのプロセスに関連する少なくとも1つのコンピュータルーチンを修正することができる。一部の実施形態では、ベンダからのライトパッチ又はフルパッチが利用者によって受信されると、アプリケーション実行時モニタリング及び分析(ARMAS)アプリケーションを無効にすることができ、プロセスをシャットダウンすることなしにプロセスに関連するコンピュータメモリ(即ちメモリ内の別の位置)内に新たなコードをロードすることができる。一部の実施形態は、共有された静的ライブラリ又は動的ライブラリとしてベンダによってリリースされるかかるライトパッチを導入することができる。更に一部の実施形態では、システム及び方法が少なくとも1つのプロセスに関連する少なくとも1つのコンピュータ命令を少なくとも1つのプロセスの実行中に修正することができる。一部の実施形態では、システム及び方法が、少なくとも1つのコンピュータ命令を修正する前にコンピュータアプリケーションに関連する少なくとも1つのプロセスの実行を一時停止することができる。一部の実施形態では、少なくとも1つのコンピュータ命令を修正した後、システム及び方法が少なくとも1つのプロセスの実行を再開することができる。
一部の実施形態は、パッチが導入されるまで悪意ある攻撃をリアルタイムで修復する又は防ぐことができる。一部の実施形態は、ソフトウェアベンダの開発者に実用的な修復パスを提供することができる。一部の実施形態は、ヒープベースのコード及び/又はスタックベースのコードのトランポリンをリアルタイムで検出することができる。一部の実施形態は、プロセスを終了することなしにライトパッチをホット導入する(即ちホットパッチングする)ことができる。言い換えれば、一部の実施形態はライトパッチをダウンロードし検査し、プロセス内の全てのスレッドの実行を一時的に停止し、バイナリをホットパッチし、プロセス(及び/又はアプリケーション)内の全てのスレッドを最終的に再開することができる。一部の実施形態は、どのパッチがどの親バイナリ内のどのルーチンと結び付くのかの状態を結び付け(即ち関連付け)、追跡することができる。かかる状態は、これだけに限定されないがライトパッチに関連するチェックサム及び元のバイナリ自体の中のアドレスを含み得る。一部の実施形態は、プロセスに現在関連している状態の結び付きをパッチの導入の前又は後で解消する(即ち関連付けを解く)ことができる。一部の実施形態は状態の関係をハッカーから守ることができる。1つ又は複数の状態を修正すること(又はパッチからオン又は複数の状態を関連付けること若しくはその関連付けを解くこと)により、一部の実施形態は状態の関係をハッカーから守ることができる。一部の実施形態は、これだけに限定されないが(a)パッチに関連する(又は含まれる)チェックサムの検査、(b)削除される元のパッチの別のコピーを得ること、及び/又は(c)パッチのコンテンツを暗号化することを含む保護を含み、それにより介入者(MIM)攻撃並びに故意の/不注意の削除を防ぐ。
例示する実施形態では、コンピュータアプリケーションの1つ又は複数のコードの脆弱性について、システム及び方法がコードの脆弱性のそれぞれを(例えばセキュリティポリシデータベース内の)メモリ内のテーブル内の個々のシステム応答にマップする。一部の実施形態例では、少なくとも1つのコードの脆弱性及びマップされたシステム応答がコンピュータアプリケーションの開発者から提供される。一部の実施形態例では、コードの脆弱性及びマップされたシステム応答の少なくとも1つがコンピュータアプリケーションのロード時に又は実行時にコードアナライザによって自動で決定される。システム及び方法は、次にコンピュータアプリケーションのコードの脆弱性にアクセスするイベントを検出する。
システム及び方法は、イベントを検出することに応答して、アクセスされるコードの脆弱性にメモリ内のテーブル内でマップされるシステム応答を決定する。一部の実施形態では、脆弱なコードに不適切にアクセスすること等、アプリケーションによる不適切な操作に応答して例外がトリガされる。システム及び方法は、カーネルモード例外ハンドラを上書きするために例外ハンドラをインストルメント(instrument)する。システム及び方法はトリガされる例外を傍受し、インストルメントされた例外ハンドラによってコードの脆弱性を関連付ける。これらの実施形態では、システム及び方法がテーブル内の関連するコードの脆弱性をインストルメントされた例外ハンドラによって照会することを含む。照会することは、コードの脆弱性にマップされるシステムコールバックルーチンとして構成されるシステム応答を返す。アクセスされたコードの脆弱性をイベントが利用するのを防ぐために、システム及び方法は決定されたシステム応答を実行する。例えばシステム及び方法は、コードの脆弱性をイベントが利用するのを防ぐための命令を開始するためにシステムコールバックルーチンを実行する。
システム応答(例えばシステムコールバックルーチンによって開始される命令)は、システムログ内に誤りとしてコードの脆弱性のアクセスのログをとること、アクセスされたコードの脆弱性を含むアプリケーションプロセスのイメージをダンプすること、コードの脆弱性のアクセス前のコンピュータアプリケーションのコピーを復元すること、メモリから1つ又は複数の修復パッチを動的にロードしてコンピュータアプリケーションを再開することなしにコードの脆弱性を含む少なくとも1つのコンピュータルーチンを修正すること、アクセスされたコードの脆弱性に基づいて終了する(例えばクラッシュする)までコンピュータアプリケーションを実行し続けること、及びコンピュータアプリケーションを先回りして終了することのうちの1つ又は複数を含み得る。
図面の簡単な説明
添付図面に示す本発明の実施形態例についての以下のより具体的な説明から上記の内容が明らかになり、図中、同様の参照文字は異なる図面を通して同じパーツを指す。図面は必ずしも縮尺通りではなく、本発明の実施形態を示すことを重視している。
本開示の一部の実施形態によるアプリケーション基盤の一例を示す。 一部の実施形態による、図1のアプリケーション基盤との利用者の対話の一例を示す。 クライアントによって実行されるロード時操作の流れ図の一例を示す。 本開示の実施形態における、メモリ破損によって促進される悪意ある攻撃を防ぐための方法(及びシステム)の一例の流れ図を示す。 本開示の実施形態における、メモリ破損を引き起こすためにコードの脆弱性を利用する悪意ある攻撃を防ぐための方法(及びシステム)の一例の流れ図を示す。 一部の実施形態によるメモリベースの攻撃のブロック図である。 一部の実施形態による、バイナリ仮想パッチングアプリケーション/プローブ(「bvpProbe」としても知られている)に関連するスタック破損検出機能の第1の段階のブロック図である。 一部の実施形態による、バイナリ仮想パッチングアプリケーション/プローブ(「bvpProbe」としても知られている)に関連するヒープ破損検出機能の第1の段階のブロック図である。 一部の実施形態による、静的若しくは動的リンクライブラリ(DLL)又は共用オブジェクトの個々のパッチのリアルタイムのパッチングを示す。 一部の実施形態による始動時のパッチのローディングを示す。 一部の実施形態による、1つ又は複数の個々のライトパッチをパージする(又は除去する)ことに関連するサイクルを示す。 一部の実施形態によるパッチングのタイムラインのブロック図である。 本開示の実施形態におけるアプリケーション実行時モニタリング及び分析ソリューション(ARMAS)のブロック図の一例を示す。 図7AのARMAS基盤内でデータを伝送するために使用されるプロトコルデータ単位(PDU)の一例を示す。 本開示の実施形態を実装することができるコンピュータネットワーク又は同様のデジタル処理環境を示す。 図8のコンピュータシステム内のコンピュータ(例えばクライアントプロセッサ/装置やサーバコンピュータ)の内部構造の一例の図を示す。
詳細な説明
本発明の実施形態例の説明を以下に示す。図1に示すような企業用のデータセンタのアプリケーション基盤では、ウェブサーバが利用者から(又はウェブサービス経由で他のマシンから)入力ウェブ要求(例えばHTTP要求)を受信する。但し、図1に示す実施形態はウェブアプリケーション基盤又はデータセンタに限定されず、これだけに限定されないが個人向け、企業向け、クラウドベース、及び工業用の制御アプリケーションを含み得る。ウェブ要求に応答してウェブサーバがウェブサービスを認証し、認証に成功した場合は更なるウェブ要求に応答してリモートユーザが企業システムからの情報に(ウェブサーバ、ポータル、及びアプリケーションサーバを介して)アクセスするためのセッションを確立する。ウェブサービスは、企業システムのコンピュータ上で実行されるアカウントサービス、貿易金融、財務会計、文書管理、制限なしに他の任意のアプリケーション等の様々なアプリケーションからの情報にアクセスすることができる。
ウェブサーバは、セッションに関するユーザ及びセッション(即ち状態)関連データを内部に保持するが、入力要求を処理するために1つ又は複数のアプリケーションサーバに転送するとき、そのデータを次のサーバに伝えることはない。つまりユーザ及びセッションデータは、非武装地帯内の図1のウェブアプリケーション基盤のウェブサーバにおいて終了される。その後、ウェブ要求に対する応答をアプリケーションサーバがウェブサーバに送信すると、ウェブサーバはユーザ及びセッションデータを参照してどの利用者(利用者のユーザ名又はIPアドレスによって識別される)に応答を送信するのかを決定する。ウェブサーバは、このやり方で数千のウェブセッションを同時に管理するためにユーザ及びセッションデータを保持することができる。数千のウェブセッション(ユーザ及びセッションデータ)の一部は企業システムのコンピュータ上で実行される様々なアプリケーション内のコードの脆弱性を利用しようと(且つそれらのアプリケーションを破損しようと)試みるハッカーに属する可能性がある。
マルウェア攻撃の概要
NVD(National Vulnerability Database)は2011年に約4100件のアプリケーションの脆弱性を、2012年には約5300件のアプリケーションの脆弱性を数え上げた(これらの脆弱性は23個の攻撃のカテゴリに分けられる)。それらの攻撃のカテゴリの幾つかは不注意又は間違い設定に起因するが、最多数の攻撃のカテゴリは悪意ある行為者が組織の実行中のプロセス内に悪意あるコンテンツを故意に注入し、後でそれを実行させることを含む。そのような悪意あるコンテンツを注入するプロセスは、不十分な入力検証を行う一部の上手く設計されていないコードを識別し、かかるコードを利用することを含む。例えばコードがユーザ入力サイズに関係する検証を欠く場合、そのコードはバッファ誤り(Buffer Error)の攻撃カテゴリに含まれるバッファ誤り型の攻撃を可能にし得る。それらの攻撃では、悪意ある行為者が侵入し、値のコンテンツを突き止め、そのコンテンツを抜きだすために悪意あるコンテンツを注入する。悪意ある行為者は利益を得るためにかかるコンテンツを毀損する場合もある。コンテンツはクレジットカードのデータ、知的財産、社会保障番号等の機密情報を含む場合がある。悪意ある行為者は最高入札者にその情報を売ることによってその機密情報を使用して利益を得ることができる。
攻撃を検出するシステムの例
図2は、図1のウェブアプリケーション基盤内の対話の一例を示す。(図2に示す)ウェブアプリケーション基盤では、保護されたウェブサーバが(ウェブサービスクライアント経由で)利用者からウェブ要求(例えばHTTP要求)を受信する。ウェブ要求内に含まれる情報(例えばURL)を使用し、ウェブサーバはウェブサービスの利用者を認証し、認証に成功した場合はウェブサービスの利用者がウェブアプリケーション基盤内のデータにアクセスするための接続(又はセッション)を確立する。
アプリケーションに接続されながら、攻撃者はトランポリンによってメモリ内のコードにアクセスできるようになる可能性がある。しかし、図2のアプリケーション実行時モニタリング及び分析(ARMAS)機器がアプリケーションと通信してかかるメモリ破損を検出する。かかるメモリ破損を検出すると、ARMAS機器はアプリケーションをその既知の破損前状態に一時的に復元するためにシャドースタック又は関数ポインタジャンプテーブル(既知の破損前状態を記憶している)を利用する。承認されていないアクセスは悪意ある敵によるセキュリティ攻撃だと宣言することができ、かかる攻撃は攻撃の通知及び誤りを訂正するための修復アクションのためにユーザインタフェース上の管理サーバによって報告され得る。次いで、ハッカーによって引き起こされた破損を修復するために、管理サーバと通信するARMAS機器が1つ又は複数のパッチを取得し、影響を受けたサーバにその1つ又は複数のパッチをプッシュすることができる。他の実施形態では、破損メモリ(コード命令)に関連する誤りのログをとること、破損メモリを含むアプリケーションプロセスのイメージをダンプすること(例えばコアダンプ)、クラッシュに終わるまで破損アプリケーションが実行し続けることを認めること、制限なしに他の任意のシステム応答等、ウェブサービスにおける他の応答をARMAS機器が代わりに動的に実行することができる。
図3Aは、本開示の原理による、マルウェア活動を検出する準備をするために本明細書でモニタリングエージェント(一部の実施形態によれば「解決クライアント」としても知られている)と呼ぶクライアントの一例がロード時に実行することができる操作を示す。一部の実施形態は、米国特許出願公開第2014/055469号(更に2014年9月12日に出願され参照によりその全体を本明細書に援用する国際公開第2015/038944号)の「自動化されたマルウェアの実行時検出(Automated Runtime Detection of Malware)」の中で記載されている1つ又は複数の対応するアプリケーションマップ及び/又はアプリケーションマップデータベース、又は当技術分野で知られている他の技法を含み得る。パス検証エンジンは、マルウェアの実行が開始した時点から数マイクロ秒のうちにマルウェア活動を確実に検出することができるモニタリングエージェントの一部である。モニタリングエージェントはまず整合性を検査し、次いでアプリケーションのモデルを抽出するためにアプリケーションの各モジュールを分析する。アプリケーションのモデルは以下のテーブル、つまりコードテーブル、エクスポートテーブル、Vテーブル、その他テーブル、基本ブロックテーブル、ソフトスポットテーブル、メモリオペランドテーブル、遷移テーブル、分解テーブル、及びクリティカルOS関数テーブルを含み得るアプリケーションマップデータベース内に記憶される。図3Aの実施形態では、アプリケーションマップデータベースがモニタリングエージェントから離れたシステム上に配置される。他の実施形態では、アプリケーションマップデータベースは、アプリケーションが実行されている同一ハードウェア上に、又はモニタリングエージェント及び分析エンジンの両方の外部にあるハードウェア上に保存され得る。モニタリングエージェントは、分析システム上のアプリケーションマップデータベース内に記憶されるデータを送付するために、ストリーミングエンジンを使用してアプリケーションの抽出モデルを解決プロトコルデータ単位(PDU)へとパッケージ化する。
302においてモニタリングエージェントがロード時にアプリケーションの個々の実行可能コンポーネントの処理を開始した後、304及び306においてコンピュータアプリケーションのモジュールごとに同じ操作がループ状に行われる。アプリケーションの各モジュールがメモリ内にロードされると、モニタリングエージェントが所与のモジュールの全ての命令を調べる。アプリケーションファイルのモジュールは、PE(Portable Executable:移植可能実行ファイル)、ELF(Executable and Linkable Format:実行及びリンク可能形式)、COFF(Common Object File Format:共通目的ファイル形式)等の標準ファイル形式である。この形式では、アプリケーションのモジュールがコードセクション、エクスポート済みデータセクション、vテーブルセクション、及び他の多くの追加のセクションを含むセクションとして編成される。アプリケーションの各モジュールがメモリ内にロードされると、モニタリングエージェントがアプリケーションのモデルの一部として関連情報を抽出する。314で、モジュールのコードセクションの境界及びアクセス属性をコードテーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{開始アドレス,終了アドレス}の形式を有する。330で、モジュールのコードセクション内の各基本ブロックの境界及び命令数を基本ブロックテーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{開始アドレス,終了アドレス,及び命令数}の形式である。318で、モジュールのエクスポート済みデータセクションの境界及びアクセス属性をエクスポートテーブル内のアプリケーションマップデータベース内に保存する。このテーブル内の各レコードは{開始アドレス,終了アドレス}の形式である。322で、モジュールのvテーブルセクション(もしある場合)の境界及びアクセス属性をVテーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{開始アドレス,終了アドレス}の形式である。326で、モジュールの他の全てのセクションの境界及びアクセス属性をその他テーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{開始アドレス,終了アドレス,及び保護属性}の形式である。
各モジュールがメモリ内にロードされると、モニタリングエージェントはアプリケーションのモジュールから他のメモリマッピングデータ(336)及びソフトスポットデータ(334)も抽出する。メモリマッピングデータは、メモリ割当、メモリ割当の解除、及びメモリのクリティカルセグメントへのメモリ書込のための命令を含む。ソフトスポットデータは、ループを実行する命令(例えばREP型の演算コードを伴う命令)を含む、大きいメモリバッファ(スポットスポット)を操作するための命令を含む。334で、ソフトスポット命令のアドレス及び各メモリ書込のサイズをソフトスポットテーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{アドレス,書込サイズ}の形式である。このアドレス及び書込サイズは、宛先がメモリオペランドであるメモリ書込命令のために記憶される。340で、このデータをメモリオペランド書込テーブル内のアプリケーションマップデータベース内に記憶する。このテーブル内の各レコードは{発信元アドレス,メモリ書込サイズ}の形式である。
アプリケーションの各モジュールがメモリ内にロードされると、モニタリングエージェントはモジュールから遷移マッピングデータ(分岐転送又は遷移データ)も抽出する。遷移マッピングデータは、標的アドレスへの遷移命令をその時点において決定できる直接遷移マッピング、又は標的アドレスへの遷移命令が完全に決定されるのを実行時まで阻止する実行時依存性をそれらの命令が有する間接メモリマッピングのためのものであり得る。324で、間接遷移が生じる命令の完全な分解を分解テーブル内のアプリケーションマップデータベースに送付し保存する。324及び332で、抽出された全ての遷移マッピングも遷移テーブル内のアプリケーションマップデータベースに送付し保存する。このテーブル内の各レコードは{発信元アドレス,宛先アドレス}の形式である。加えて320で、オペレータが実行時の前にマップ遷移テーブル内に遷移マッピングデータを手動で追加することができる。マップ遷移テーブル内に手動でレコードを追加するために、オペレータはマルウェアによる遷移テーブルのあり得る改竄を排除するために2要素認証プロセスを使用して自分自身を認証する必要があり得る。
アプリケーションの各モジュールがメモリ内にロードされると、モニタリングエージェントは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関数又はシステムコール内のインストルメンテーションは、アプリケーションが作成している可能性がある様々なヒープに現在関与しているメモリの領域を追跡するのを助ける。マルウェアがヒープ内の制御構造をオーバランさせたいのかどうかを明らかにするために、このメモリエンベロープを利用して間接メモリ書込実行時の標的を追跡する。加えて、キャッシュを使用して基本ブロックの境界を追跡することにより、分析エンジンは基本ブロックが変化したかどうかを判定することができる。この判定が肯定的である場合、モデルデータベース内の基本ブロックテーブルを更新することができる。
攻撃を防ぐ方法
図3Bは、本開示の実施形態における、メモリ破損によって促進される悪意ある攻撃を防ぐための方法(及びシステム)300の一例の流れ図を示す。一部の実施形態では、システム及び方法がロード時間中にコンピュータアプリケーションのモデルを抽出することができる(382)。モデルは、これだけに限定されないが発信元情報(例えば発信元メモリアドレス)、宛先情報(例えば宛先メモリアドレス)、遷移、分岐境界情報、基本ブロック境界情報、コードセグメント境界、インポート及びエクスポートテーブル境界、ジャンプテーブル境界、又は当業者に知られている他の任意の種類のコンピュータルーチン関連情報を含み得る。システム及び方法はコンピュータアプリケーションのモデルを記憶することができる(384)。システム及び方法は、実行時にデータを収集するためにコンピュータアプリケーション内に命令を挿入することができる(386)。システム及び方法は、コンピュータアプリケーションの記憶済みのモデルに対して実行時に収集したデータを分析して1つ又は複数のセキュリティイベントの検出を行うことができる(388)。システム及び方法は1つ又は複数のセキュリティイベントの検出に基づいて、コンピュータアプリケーションに関連する少なくとも1つのアクティブプロセスに関連する少なくとも1つのコンピュータルーチンを修正する(即ちパッチを挿入する)ことができる(389)。
方法(及びシステム)300の実施形態は様々な種類の攻撃を修復する/防ぐ。実行時のプロセスメモリを標的とする攻撃は(一部の実施形態によって修復される)多くの深刻な技術的及び動作的な困難を提起する。例えば殆どのサイバセキュリティソリューションは、攻撃が進行中かどうかを確定的に宣言するのに必要な粒度でプロセスメモリ内の動作を観察する能力を有さない。その結果、APT(持続的標的型攻撃)等の洗練されたメモリベースの攻撃が何年間も検出されない場合がある。通常、脆弱なコードを実行しているプロセスが再開されるまで、脆弱ではないコードを得るためにそのコードをスワップアウトすることはできない。その結果、企業は実行を続けて最も精通していない攻撃者の標的にさえなること、又はリブートし動作及び収益の断絶を被ることの2つの受け入れ難い選択肢を強いられる。洗練されたメモリ破損を利用する攻撃は、アプリケーションの独自のコードがその後実行されるのではなく、敵によって駆動されるコードが実行され始めるようにアプリケーションの制御フローが悪意をもって変更されることから始まり得る。アプリケーションコードが制御を譲るもう1つの結果は、他の攻撃シナリオにおいてアプリケーションがハンドルされない例外をとり、クラッシュし得ることである。この攻撃形式は事実上サービス妨害攻撃である。
図3Cは、本開示の実施形態における、メモリ破損を引き起こすためにコードの脆弱性を利用する悪意ある攻撃を防ぐための方法(及びシステム)390の一例の流れ図である。方法390は、図2のウェブサービス基盤(又は他のシステム基盤)のメモリ内にセキュリティポリシデータベースを作成する(391)。セキュリティポリシデータベースは、コンピュータアプリケーションのコードの脆弱性を対応するシステム応答にマップするポリシのテーブルを含む。コードの脆弱性及びマップされたシステム応答はコンピュータアプリケーションに関連する開発チーム(又は他の個人)によって提供されても良く、又はコンピュータアプリケーションのコードをロード時若しくは実行時に分析する(例えばARMAS機器の)コードアナライザ若しくは他のかかるシステムツールによって自動で又は静的に決定され得る。方法390は、コンピュータアプリケーションの脆弱なコード(コードの脆弱性)にアクセスするイベントを検出する(392)。例えば脆弱なコードにアクセスすることはメモリアクセス違反又は他のメモリ若しくはシステム違反を引き起こす場合があり、かかる違反は、脆弱なコードを実行しているアプリケーションのスレッド又はプロセスが終了する(即ちクラッシュする)ことを通常引き起こす、ハンドルされないハードウェア又はソフトウェアの例外をトリガする。他の実施形態では、方法390は、コンピュータアプリケーションの保存済みのコピーを現在ロードされている又は実行されているコンピュータアプリケーションと比較して、アクセスされたコードの脆弱性に起因するメモリ破損を検出することができる。これらの実施形態では、方法390がハードウェア又はソフトウェアの例外を先回りしてトリガし得る。次いで方法390は、トリガされたハードウェア又はソフトウェアの例外を傍受する(キャッチする)例外ハンドラをインストルメントすることによってコードの脆弱性のアクセスを検出し、コンピュータアプリケーションを例外が終了させる前にコードの脆弱性を関連付ける。それを行うために、方法390はカーネルモード例外ハンドラをインストルメントされた例外ハンドラで上書きし、それにより方法390はコンピュータアプリケーションの制御をカーネルから取り戻し、トリガされた例外に対するシステム応答を開始し得る。さもなければ、トリガされた例外に応答してカーネルがコンピュータアプリケーションをクラッシュさせる。
方法390は、例外を傍受することに応答してセキュリティポリシデータベース内の例外に関連するアクセスされたコードの脆弱性を自動で照会する1つ又は複数の命令を含むように、インストルメントされた例外ハンドラを提供する。インストルメントされた例外ハンドラによる自動照会により、方法390はセキュリティポリシデータベース内に含まれるポリシ内でアクセスされたコードの脆弱性にマップされているシステム応答を決定する(393)。決定されたシステム応答がシステムコールバックルーチンの形式でポリシから取得される。インストルメントされた例外ハンドラは、アクセスされたコードの脆弱性が利用されるのを防ぐためにシステム応答(即ちシステムコールバックルーチン)を自動で実行する(394)。システムコールバックルーチンは、システムログ内に誤りとしてコードの脆弱性のアクセスのログをとること、アクセスされたコードの脆弱性を含むアプリケーションスレッド又はプロセスのイメージをダンプすること、コードの脆弱性のアクセス前のコンピュータアプリケーションの保存済みのコピーを復元すること、ウェブサービス基盤内のメモリから1つ又は複数の修復パッチを動的にロードしてコードの脆弱性を含むコンピュータルーチンを修正すること、メモリ違反によって終了が生じる(即ちコンピュータアプリケーションがクラッシュする)までコンピュータアプリケーションを実行し続けること、コンピュータアプリケーションを直ちに終了すること、又はコードの脆弱性に関連する他の任意のシステム応答を制限なしに含み得る。
ARMASプローブ
悪意ある敵がアプリケーションの制御を奪う一例を図4Aに示す。関数Foo()のコード(命令のブロック)405は、攻撃者によって利用される可能性がある脆弱性を含み得る。図4Aに示すように、敵は脆弱な関数Foo()のスタックメモリ415を溢れさせることができる。図示のように、Foo()のスタックメモリ415はローカル変数、保存済みベースポインタ、保存済みリターンポインタ418、及びパラメータを含む。Foo()のスタックメモリ415の保存済みリターンポインタのメモリ位置が攻撃者によって突き止められオーバランされる場合、Foo()が終了する(スタックから戻る)とき、次の命令のアドレスが攻撃者によって保存済みリターンポインタ418から取得される場合があり、アプリケーションが攻撃の的になる可能性がある。アプリケーションコードから自らの悪意あるコード(敵のトランポリンコード410)内へのトランポリン(ジャンプ)等、攻撃者はかかる技法を使用して別のコードパスへの悪意ある移動を行うことができる。
図4Aでは、攻撃の標的が命令ポインタレジスタであり得る。攻撃者は他の任意のレジスタも標的とすることができる。多くの関数ポインタがアプリケーションコード内で宣言される場合があり、その値が様々なレジスタから読み出される間接メモリアドレスを使用してロードされ得る。標的とするレジスタ内に悪意あるデータを挿入することにより、攻撃者はプログラムの実行フローを変えることができる。例えば攻撃者は、
move rax, rsp
ret
等、Foo()のコード405内の命令を標的とするROP(リターン指向プログラミング)ガジェットを探すことによってレジスタEAX(累算器レジスタ)を標的とすることができる。
このことは、敵が制御する値をスタック415からRAX等の他のレジスタ内にロードする効果を有し得る。次に、敵は「call[RAX]」等の命令を実行することにより、Foo()のアプリケーションコード405から自らのコード410へのトランポリンをトリガすることができる。どのレジスタが標的とされるのかに関係なく、効果は同じであり得る(敵のコードが実行し始めることができる)。
それに応答して、実施形態はアプリケーションを含む、実行時モニタリング及び分析(ARMAS)プローブ/アプリケーションを含む。このARMASプローブはプロセスの全てのスレッド内に並ぶインストルメントされた命令を実行し、プローブが実行時に遭遇する関数コール(例えば上記のmove rax, rsp)やリターン関数コール(例えば上記のret)等の分岐転送命令に関する発信元情報及び宛先情報を収集する。インストルメントされた命令は非常に粒度の細かいスレッドの情報をARMASプローブに中継し、ARMASプローブは分岐転送が本当に敵のコード内へのコードトランポリンかどうかを判定することができる。実施形態はバイナリ仮想パッチングアプリケーション/プローブ(又は「bvpProbe」)と呼ばれるよりスマートなARMASプローブを含み、かかるARMASプローブは確認のためにARMAS機器と絶えず接触する制限を克服する。
一部の実施形態によれば、bvpProbeの動作は3つの段階(以下に示す段階1から段階3)に分けることができる。
bvpProbeの段階1の機能
bvpProbeは、スタックベース及び/又はヒープベース攻撃トランポリンを防ぐことができる。図4Bは、一部の実施形態によるbvpProbeに関連するスタック破損検出機能の第1の段階のブロック図である。図4Cは、一部の実施形態によるbvpProbeに関連するヒープ破損検出機能の第1の段階のブロック図である。
図4Bに示すように、スタックベースのトランポリンでは、一部の実施形態は最初のステップ(ステップ1)としてコンピュータルーチンの所期の標的アドレスを保存することができる(420)。図4Bに示すように、次のステップ(ステップ2)で、(例えば図4Aに関して説明したように)1人又は複数の攻撃者によってメモリ破損422が生じ得る。図4Bのステップ3に示すように、一部の実施形態はメモリ破損をチェックする(検出する)ことができる(424)。ステップ4に示すように、図4Bの場合、一部の実施形態は保存済みの標的のコピーを標的アドレスに適用し(426)、保存済みの標的を実行する(428)ことによってメモリ破損をバイパスすることができる。一部の実施形態は、これだけに限定されないが米国特許第8,966,312号「メモリ破損の実行時の検出及び訂正のためのシステム及び方法(System and Methods for Run Time Detection and Correction of Memory Corruption)」等の技法や当技術分野で知られている他の技法を含む、当業者に知られているメモリ破損ハンドリングのための1つ又は複数の技法を使用してメモリ破損に対処することができる。そのため、一部の実施形態はメモリの少なくとも一部のメモリ破損を実行時中に検出し(424)、メモリの少なくとも一部をメモリの少なくとも一部のバックアップコピー(即ち保存済みの標的のコピー(426))で置換することによってメモリの少なくとも一部のメモリ破損を訂正することができる。このようにして、セキュリティリスクを最小限に抑えながらメモリ破損を適時のやり方で訂正することができる。
同じく図4Bに示すように、スタックベースのトランポリンでは、実行時遷移データをARMAS機器に単純に送付する代わりに、bvpProbeはルーチン内への入口点におけるクリティカル状態を保存することができる。図4Bのステップ3に示すように、所与のスレッドに対する分岐転送操作が悪意をもって変えられているとbvpProbeが判定する場合(424)、bvpProbeはメモリ破損を元通りにすることができ、実行される次の命令のアドレスが取得されるスタック上に保存済みの所期の標的(420)を元通り復元することによってコンテキスト上適切な宛先を復元する(426〜428)。
図4Cは、ヒープベースのトランポリンに関する破損の検出及びハンドリングを示す。図4Cに示すように、図4Cのステップ1でアプリケーションが走り実行されるとき、図4Cのステップ2でObjAのインスタンス(インスタンス1)に敵が制御する入力が書き込まれる。脆弱なコードを含むObjAのインスタンス1は、アプリケーションメモリのヒープセクション内で過去に宣言されている。アプリケーションの各オブジェクト(例えばObjAやObjM)は通常、読取専用データセクション内の共通仮想ポインタテーブル(vtable)を指す関数ポインタ1,2...N,...,X等の1つ又は複数の仮想関数ポインタ(vptr)を有する。一部の実施形態によれば、関数ポインタはアプリケーションメモリの読取専用データセクション内で宣言され得る。敵のデータが(ObjAの脆弱なコードに対応する)vptrを上書きすると、図4Cのステップ2でvptrからvtableへのポインタが妨げられる可能性がある。幾らか後の時点において、図4Cのステップ3で既知の有効なコードがObjAにアクセスすると、既知の有効な関数ポインタを実行する代わりに、図4Cのステップ4にあるように敵が選んだ悪意あるコードが実行し始める。bvpProbeは、図4Cのステップ4で宛先(悪意あるコード)を既知の有効な宛先と比較することによってトランポリンを検出する。
bvpProbeの段階2の機能
bvpProbeは脆弱性に関する深い見識を収集し、非常に実用的な情報を開発チームに提供することができる。開発チームが脆弱な関数の非脆弱バージョンを開発し試験すると、その関数のための新たなコードをライブラリ内にパッケージ化し、個々のパッチ(「ライト」パッチ)としてリリースすることができる。「ライト」パッチの検査可能且つ符号付きバージョン(signed version)がARMASダッシュボードにおいて提供されると、bvpProbeが実行するようにプロビジョンされ得る1つ又は複数の影響を受けたサーバにそのバージョンをプッシュすることができる。「ライト」パッチは影響を受けたサーバのメモリ内に記憶することができ、それにより(ARMASダッシュボード上のファイルから繰返しアクセスしたり開発者サイトからネットワーク上で繰返しアクセスしたりするのではなく)「ライト」パッチをメモリからコンピュータアプリケーション内に必要に応じて注入することができる。
個々のパッチ(「ライト」パッチ)を受信すると、ARMASプローブは対応する個々のパッチ(「ライト」パッチ)に関する構成データを保存することができる。次いで、ユーザコマンドに基づいて(又は自動で)又は誤りに応答してプロセススレッドが中断され得る。図5Aに示すように、プロセススレッドはバッファ誤り(BE)脆弱性ヒットに応答して中断され得る。
図5Aに示すように、プロセススレッドを中断する際、ARMASプローブはアプリケーションの複雑さに基づき、これだけに限定されないが以下のメカニズムの1つ又は複数を含む手法を使用してアプリケーション内の1つ又は複数のスレッドを停止することができる。メカニズムは、アプリケーションを実行しているハードウェアによって提供される組込(intrinsics)を使用し得る。メカニズム(方法)の最初の例はSuspendThread()APIを使用する。この方法ではプロセスが実行中であり(505)、分岐実行の脆弱性が攻撃者によってヒットされる(510)。この方法は、SuspendThread()APIを使用してプロセス内の全てのスレッドを再帰的に中断する(515)。次いでこの方法は、プロセスの中断されたスレッド内に(上記の)ライトパッチDLLを注入し(520)、そのことは脆弱な関数にパッチを当て(525)、対応する構成ファイルを更新する(530)。コードにパッチが当てられると、プローブはResumeThread()APIを呼び出してプロセスを再開することができる(535)。
この手法は、タイムアウトが打ち切られることによる動作上の問題、プロセスの順序が狂って起動することによる競合条件、及び/又は一部の優先順位の低いスレッドが起動時にセマフォを取得することによるデッドロックにマルチスレッドアプリケーションを陥らせる可能性がある。メカニズムの第2の例は、カーネル内に実装される、プロセスを中断することができる1つ又は複数のシステムコール(NtSuspendProcess()等)を使用することである。メカニズムの第3の例は、プロセスを一時的に停止するためのデバッガインタフェース(停止のためのDebugActiveProcess()及び再開のためのDebugActiveProcessStop()を使用することである。
図5Aに示すように、プロセスが「フリーズ」(即ち中断(515))されると、新たなコードを注入し(520)(即ち「ライト」パッチDLLを注入し、脆弱な関数に対する「ホット」パッチを行い)、古い脆弱なコードから新たな脆弱ではないコードへのトランポリンを作成することが安全である。これらの悪意のないトランポリンは、これだけに限定されないが以下のメカニズムの1つを使用して実装することができる。メカニズムの第1の例は、新たな「ライト」機能がメモリ内にロードされる場所にジャンプするようにコードセグメント内の機能を直接編集することである。メカニズムの第2の例は、影響を受ける機能がエクスポートされた機能である場合に有用である。メカニズムの第2の例は、古い脆弱なコードが呼び出されるのではなく新たな脆弱ではないコードが呼び出されるようにインポートテーブル内のアドレスを変更する。メカニズムの第3の例は、イベントを作成するコードを挿入し、新たなコードをイベントハンドラに結び付ける。
図5Aに示すように、bvpProbeは中断されたプロセスを起動する(即ちプロセスを再開する(535))ことができる。但し同じく図5Aに示すように、中断されたプロセスを起動する前に、構成ファイル内で構成情報を更新することができる(530)。
構成情報は複数のパッチ(即ち複数の「ライト」パッチ)に関する情報を含み得る。パッチに関する構成関連情報を保存するのは重要である。この構成情報はbvpProbeが1つ又は複数の個々の(「ライト」)パッチを実行可能モジュールの特定のリリースに結び付ける(関連付ける)ことを可能にし得る。次いで、構成が変更されるまで、bvpProbeは1つ又は複数の個々の(「ライト」)パッチを始動時にリロードすることができる。構成ファイル自体が悪意ある敵の標的になり得る。従って、構成ファイルのコンテンツをエンドポイント固有の「カナリア」によって暗号化することができ、そのファイル整合性チェックサム情報を公開することができ、そのためbvpProbeがパッチをリロードするために構成ファイルを利用し始める前に構成ファイルを検査することができる。
(例えば図5Aに示す「ライト」パッチを使用する)仮想パッチングの上記の操作は、プロセスを終了することなしに行えることも重要である。かかる利点はアプリケーションが企業にミッションクリティカルな動作を与えるシナリオにおいて、又はアプリケーションにパッチを当てるコストが大きい場合にとても重要である。
但し、図5Bに示すようにフルパッチ(即ち1つ又は複数の個々の又は「ライト」パッチを含み得る集約パッチ)が送られる前にプロセスが再開される場合、「ライト」パッチの挿入が好ましくは始動時に行われる。図5Bに示すように、電源再投入が生じるとき、bvpProbeアプリケーションがプロセスを開始し(540)、(これだけに限定されないがパッチ情報を含む)保存済みの構成情報を取得するために構成ファイルを読み出す(542)。次に図5Bに示すように、bvpProbeアプリケーションはモジュールごとに潜在的に脆弱な関数にパッチを当てるために(545)、アプリケーションの各モジュール上に1つ又は複数の個々の(「ライト」)パッチをロードする(543)。所望の「ライト」パッチをロードした後、bvpProbeはアプリケーションプロセスを実行し始めることができる。
bvpProbeの段階3
その後の或る時点において、複数の脆弱性に対する修正で構成されるフルパッチ(即ち1つ又は複数の個々の又は「ライト」パッチを含み得る集約パッチ)を1人又は複数の利用者(ソフトウェア開発チーム等)がリリースし得る。フルパッチは1つ又は複数のライトパッチを含み得る。図5Cに示すように、その時点において1つ又は複数のメモリ内の「ライト」パッチを明確に除去することができる。図5Cは、一部の実施形態による、1つ又は複数の個々のパッチをパージする(又は除去する)ことに関連するサイクルを示す。
図5Cに示すように、1つ又は複数の通信メッセージ(パージパッチメッセージ)をARMASダッシュボードとARMAS bvpProbeとの間で送付することができ(570)、それによりライトパッチ構成情報を構成ファイル内で更新することができる。bvpProbeがパージパッチメッセージを登録し(571)、複数のライトパッチに関する情報を含み得る構成ファイルを更新(572)して1つ又は複数のモジュールに適用可能なライトパッチの最新のバージョンを反映させる。このようにして、1つ又は複数のモジュールに適用できないライトパッチの1つ又は複数のバージョンをモジュール上にロードしない(即ち「パージする」又はロードしない)ことができる。次いで図5Cに示すように、bvpProbeがプロセスを開始し(573)、各モジュールをロードする(574)。モジュールがロードされると、bvpProbeは(適用できないライトパッチではなく)適用可能なライトパッチを各モジュール上にロードし(575)、そのライトパッチはプロセスの再開前に対応する潜在的に脆弱な関数にパッチを当てる(576)。次いでbvpProbeはプロセスの実行を再開する(577)。このようにして一部の実施形態は、bvpProbe、フルパッチがリリースされているライトパッチをパージすることができる。
仮想パッチングのタイムライン
図6は、一部の実施形態によるパッチングのタイムライン、並びに(本明細書に記載の)bvpProbe機能の概要のブロック図である。図6のタイムラインに示すように、アプリケーションの導入後、図4Aのメモリベースの攻撃(又は悪意あるトランポリン)によって説明したように関数Foo405のスタック415等の関数のスタック内でメモリベースの攻撃(即ちゼロデイ攻撃)が生じ得る。図6に示すように、一部の実施形態によれば、(段階1の)bvpProbeは、さもなければゼロデイ攻撃を実行している悪意あるトランポリン(敵のトランポリンコード410)を阻止することができる。図6に示すように、一部の実施形態によれば、段階2でbvpProbeは「ライト」パッチ580をロードすることができ、段階3でbvpProbeはリリースされたフルアップグレード582(リブートを必要とし得る)の代わりにロードされた「ライト」パッチ580を戻す(又は除去し若しくはパージする)ことができる。
例外ハンドリングによる仮想パッチング
他の実施形態では、コードの脆弱性のアクセスをメモリ破損前に検出することができる仮想パッチングアプリケーションをARMAS機器が実行する。これらの実施形態では、開発チーム(例えばアプリケーションベンダ)がARMASアプリケーションの使用によって又は動的コード分析若しくは静的コード分析の他の手段(例えばコードアナライザ)によってアプリケーションの脆弱性を突き止めると、アプリケーションのコードの脆弱性がポリシとして構成される。構成される各ポリシは、突き止められたコードの脆弱性とシステムコールバックルーチンとして構成される対応するシステム応答とを含む。突き止めたコードの脆弱性に対するポリシを開発チームが構成するとき、チームは、突き止めたコードの脆弱性に対する推奨されるシステム応答を実行するための対応するシステムコールバックルーチンもプログラムする。推奨されるシステム応答(コールバックルーチンとしてプログラムされる)は、システムログ内に誤りとしてコードの脆弱性のアクセスのログをとること、アクセスされたコードの脆弱性を含むコンピュータアプリケーションスレッド又はプロセスのイメージをダンプすること、コンピュータアプリケーションのスタックの保存済みのコピーを復元すること、ウェブサービス基盤内のメモリから1つ又は複数の修復パッチを動的にロードしてコードの脆弱性を含むコンピュータルーチンを修正すること、メモリ違反によってクラッシュするまでコンピュータアプリケーションを実行し続けること、コンピュータアプリケーションを直ちに終了すること、又はコードの脆弱性に関連する他の任意のシステム応答を制限なしに含む。チームは、推奨される上記のシステム応答の1つを実行するようにプログラムされるコールバックルーチンと共にコンピュータアプリケーションのための既定ポリシを構成することもできる。構成されるポリシは、ARMAS機器にとってアクセス可能なネットワーク位置に記憶されるセキュリティポリシデータベースのテーブル内に記憶される。
ARMAS機器は、ネットワークのアプリケーションサーバにおいてハードウェア又はソフトウェア例外ハンドラをインストルメントする。脆弱なアプリケーションコードにイベント(例えばウェブサービス要求)がアクセスすることが原因でハンドルされないメモリアクセス違反又は他のハンドルされないメモリ若しくはシステム違反が生じる場合、アプリケーションを実行しているハードウェア又はソフトウェア(例えばオペレーティングシステム)が例外をトリガする。ARMAS機器によってインストルメントされたハードウェア又はソフトウェア例外ハンドラはトリガされた例外を傍受し、コードの脆弱性を関連付け、関連するコードの脆弱性を含むポリシを得るためにセキュリティポリシデータベースを照会する。それを行うために、ARMAS機器はカーネルモード例外ハンドラをインストルメントされた例外ハンドルで上書きして、トリガされた例外に対するシステム応答を開始するためにアプリケーションの制御をカーネルから取り戻す。さもなければ、トリガされた例外に応答してカーネルがアプリケーションをクラッシュさせる。対応するポリシがセキュリティポリシデータベース内に位置する場合、関連するコードの脆弱性のアクセスに応答してインストルメントされた例外ハンドラがポリシのコールバックルーチンを実行する。対応するポリシが見つからない場合、インストルメントされた例外ハンドラは、セキュリティポリシデータベース内のコンピュータアプリケーションのための既定ポリシからコールバックルーチンを実行する。
コンピュータアプリケーションの開発チームによって提供されるフルパッチがアプリケーションサーバにダウンロードするために入手可能になるまで、コールバックルーチンはアクセスされたコード内の脆弱性に応答するための仮想パッチとして機能する。以下は例外ハンドルコードの一例である。この例に示す選択肢5は、図5A〜図5Cに関して上記で説明したようにメモリ内に保存される「ライト」パッチを注入することを含み得る。
catch (Exception e)

仮想パッチ=ハンドルされないメモリ違反に関連するコードについてセキュリティポリシデータベースルーチンからプログラム可能なコールバックを取得する;
仮想パッチの実行;
//仮想パッチを実行することは以下の例の1つを含み得る:
//選択肢1:Console.WriteLine(“エラーが発生しました:‘{0}’”, e);
//選択肢2:プロセスのイメージをディスクに保存する(コアダンプ);
//選択肢3:スタックを復元して進む;
//選択肢4:プロセスを続行させクラッシュさせる;
//選択肢5:プロセスを再開することなしにプロセスにパッチを当てる
//.
//.
//.
//選択肢x(制限なし)
アプリケーション実行時モニタリング及び分析(ARMAS)基盤
図7Aは、アプリケーション実行時モニタリング及び分析(ARMAS)基盤の一例の高レベルブロック図を示す。この基盤はスマートフォン、タブレット、ラップトップ、デスクトップからハイエンドサーバに及ぶ計算装置を含む様々なハードウェア上で構成され得る。図示のように、アプリケーションの性能を改善するために、モニタリングエージェント702によって行われるデータ収集を分析エンジン737によって行われる分析から分離することができる。この基盤は、マルウェア攻撃に対するこの基盤の保護をハッカーが覆すのを防ぐための高可用性を提供する。モニタリングエージェント702はアプリケーションと対話してロード時間及び実行時データを収集する。アプリケーション701の基盤は、プロセスメモリ703、サードパーティライブラリ704、カーネルサービス706、及び命令パイプライン707を含む。モニタリングエージェント702の基盤は、インストルメンテーション及び分析エンジン(インストルメンテーションエンジン)705、グラフィカルユーザインタフェース(GUI)711、クライアントデーモン708、構成データベース709、ストリーミング及び圧縮エンジン710、並びに中央処理装置(CPU)736を含む。アプリケーション701のローカルユーザ又はリモートユーザ750は、キーボード、マウス、若しくは同様のI/O装置等の装置によって、又はパイプ、共用メモリ、若しくはソケットによって確立され得る通信チャネルによってネットワーク上でアプリケーションと対話する。それに応答して、アプリケーションプロセス703が命令の適切な組を実行のために命令パイプライン707内に送付する。アプリケーションは自らのライブラリ、又はlibc.so(Linux)やmsvcrtxx.dll(Windows)等のサードパーティライブラリ704を利用することもできる。これらのライブラリからの機能が呼び出されると、これらのライブラリからの適切な命令も実行のために命令パイプライン707内に挿入される。加えてアプリケーションは、メモリやカーネル706からのファイルI/O等のシステム資源を利用することができる。時間順にまとめられたアプリケーション、ライブラリ、及びカーネルからのこれらの命令のシーケンスは所与の利用者によって望まれるアプリケーション機能を届ける。
アプリケーションのコードがメモリ内にロードされ始めると、インストルメンテーションエンジン705が幾つかの異なるロード時アクションを実行する。全てのモジュールがロードされると、アプリケーションのインストルメントされた命令が実行時データを生成する。構成データベース709から1つ又は複数の構成ファイルを読み出すことにより、クライアントデーモン708が736におけるCPU内のインストルメンテーション及び分析エンジン705、ストリーミングエンジン710、及びGUI711のプロセスを初期設定する。クライアントデーモン708は、インストルメンテーションエンジン、ストリーミングエンジン、GUI、分析エンジン737、及び自らの間の相互通信パイプも初期設定する。クライアントデーモンは、自らを含む任意のモニタリングエージェント702のプロセスが応答しなくなる又は終わる場合、そのプロセスが再生成されることも保証する。このように再生成できることは、モニタリングエージェント702が高可用性の企業グレード製品であることを保証する。
インストルメンテーション及び分析エンジン737は、アプリケーションから収集したロード及び実行時データをストリーミングエンジン内にプッシュする。ストリーミングエンジンはモニタリングエージェント702からの生データをPDUへとパッケージ化する。次いでストリーミングエンジンはそのPDUを高帯域幅の低レイテンシ通信チャネル712上で分析エンジン737にプッシュする。モニタリングエージェント702及び分析エンジン737が同じマシン上に位置する場合はこのチャネルはメモリバスであり得る。これらのエンティティが異なるハードウェア上だが同じ物理的近傍内に位置する場合はこのチャネルをイーサネット又はファイバによる搬送とすることができ、かかるチャネルはインターネット上でロード及び実行時データを搬送するためにエンティティ間でリモート接続を確立できるようにする。
分析エンジン737の基盤は、ネットワークインタフェースカード(NIC)713、パケットプール714、タイムスタンプエンジン715、プロセッサファブリック716、ハッシングエンジン717、TCAMエンジン718、アプリケーションマップデータベース719、及びREGEXエンジン740を作り出すスレッドコンテキストデータベース720を含む。分析エンジン737の基盤は、コンテキスト分析エンジン721、イベント及びイベントチェーン722、イベント管理エンジン723、イベントログ724、アプリケーションデーモン725、分析エンジン構成データベース726、ネットワークインタフェース727、ダッシュボード又はCMS728、SMS/SMTPサーバ729、OTPサーバ730、アップグレードクライアント731、ソフトウェアアップグレードサーバ732、ソフトウェアイメージ733、イベント更新クライアント734、及びイベントアップグレードサーバ735を更に含む。
PDUがプロトコルヘッダと共にネットワークインタフェースカード713において傍受され、そこからPDUがプルされパケットプール714内に入れられる。PDU内のタイムスタンプフィールドがタイムスタンプエンジン715によって埋められる。タイムスタンプフィールドを使用することは、過度に長い時間にわたってパケットプールバッファ内でパケットが立ち往生しないことを保証するのに役立つ。
プロセッサファブリック716はパケットバッファからパケットをプルし、アドレスフィールドがハッシュ化され、パケット内の適切な位置において置換される。この操作はハッシングエンジン717によって行われる。次いで、プロセッサファブリックがパケットバッファからパケットをその到着順に除去し始める。関連データが抽出されアプリケーションマップデータベース719内に記憶されるように、ロード時段階の情報を有するパケットが処理される。実行時段階の情報を有するパケットは図5に従って処理される。プロセッサファブリック内のプロセッサの数に基づいて分析エンジン737の効率を上げる又は下げることができる。
遷移標的データは、スレッドごとにテーブルを有するスレッドコンテキストデータベース720内に保存される。プロセッサファブリックは、遷移及びメモリ領域の探索を行うためにTCAMエンジン718も利用する。プロセッサファブリックはハッシュを使用して検索を行うので、使用される実際の時間は予測可能であり非常に短い。ファブリック内のプロセッサの数を慎重に選ぶことにより、パケットごとのスループットを適切に変えることができる。
分析エンジン737が探索を行うとき、分析エンジン737は無効な遷移、クリティカル/管理関数若しくはシステムコールの無効な操作を時々見つけ、又は不所望の位置上へのメモリ書込みを見つける場合がある。これらの場合のそれぞれにおいて、分析エンジン737がイベント及びイベントチェーンデータベース722内に記憶されているポリシによって記述されるプログラム済みの重大度のイベントをイベント管理エンジン723に送付する。イベントログデータベース724内に生のイベントログが記憶される。ダッシュボードはイベントログにアクセスし、アプリケーションのステータスを表示することもできる。
イベント及びイベントチェーンデータベース722内の全てのイベントに修復アクションも関連付けられる。利用者は、一方でイベントを無視することから他方でスレッドを終了することまで、一連のアクションから修復アクションを設定することができる。推奨される修復アクションが、イベント更新クライアント734及びイベントアップグレードサーバ735を使用してアナリストに推奨され得る。上記の推奨アクションを変えるために、アナリストはダッシュボード728をしかるべく使用することができる。ダッシュボードは、モニタされる各アプリケーションの状態を表示し且つアプリケーションを開始することや停止すること等、セキュリティアナリストがアプリケーションを或る程度制御することを可能にするGUIインタフェースを提供する。イベントが生成されると、イベントチェーンが通常の状態からその後の状態に進む。新たな状態に関連する修復アクションをとることができる。修復アクションが非無視アクションを含む場合、SMS又はSMTPサーバ729を使用してセキュリティアナリストに通知が送信される。セキュリティアナリストのSMS/SMTPアドレスはLDAP又は他のディレクトリプロトコルを使用して求めることができる。ダッシュボードからアプリケーションを開始又は停止するプロセスは高い特権を必要とし、そのためセキュリティアナリストはOTPサーバ730を使用して認証しなければならない。
新たなイベントを作成し、重大度及びアナリストに推奨される修復アクションと共にイベント及びイベントチェーンデータベース722内にリンクすることもできる。このことは、或るインストレーションにおける新たな攻撃に関する固有のイベント及びイベントチェーンを他のインストレーションに送付することを可能にする。そのために、全ての新たなイベント及びイベントチェーンがイベントアップグレードサーバ735内にロードされる。イベント更新クライアント734はイベントアップグレードサーバ735に周期的に接続し認証して、新たなイベント及びイベントチェーンを取得する。その後、イベント更新クライアントはそれらの新たなイベント及びイベントチェーンをイベント及びイベントチェーンデータベース722内にロードする。コンテンツ分析エンジン721は、新たなイベントチェーン内にカプセル化された新たな攻撃についてアプリケーションの追跡を開始することができる。
クライアントデーモンの場合と同様に、機器デーモン725は分析エンジン737上で実行される様々なプロセスを開始する役割を担う。そのために、機器デーモン725は分析エンジン構成データベース726から構成情報を読み出す必要がある。デーモンは分析エンジン737内の全てのプロセスについてハートビートポールを実行する役割も担う。このことは、分析エンジン373エコシステム内の全ての装置が常に最高の動作状態にあることを保証する。ハートビートが3回連続して失われることは、標的のプロセスが応答していないことを示唆する。任意のプロセスが尚早に終了する場合、デーモンは自らを含めそのプロセスを回復させる。
ソフトウェア内の誤りを直すこと等の目的で機器ホスト内の、分析エンジン737の、又はクライアントのソフトウェアがアップグレードされることが時々ある。そのために、アップグレードクライアント731は最新のソフトウェアを入手することができるソフトウェアアップグレードサーバ732を絶えずチェックする。分析エンジン737又はクライアント内のエンティティが古いイメージを実行していることをクライアントが見つけ出す場合、クライアントはアナリストが古いイメージをソフトウェアアップグレードサーバ732からの新たなイメージでアップグレードすることを可能にする。新たなイメージはシステムイメージ733としてまとめられる。そうすることで、試験された互換性のあるイメージを機器又はホストにプロビジョニングできるようになる。分析エンジン737又はモニタリングエージェント702内のサブシステムのイメージの1つがシステムイメージ内の同じコンポーネントのイメージと一致しない場合、全てのイメージが過去に知られている有効なシステムイメージにロールされる。
ARMAS通信のためのPDU
図7Bは、図7Aのモニタリングエージェント702と分析エンジン737との間でデータを伝送するために使用されるプロトコルデータ単位(PDU)の一例を示す。モニタリングエージェント702及び分析エンジン737が互いに効果的に機能するために、モニタリングエージェント702及び分析エンジン737はこのPDUを使用して互いに通信する。分析エンジン737に伝送するためにアプリケーションの抽出済みモデル及び/又は収集済みの実行時データをパッケージ化するために、このPDUはとりわけモニタリングエージェント702によって使用され得る。PDUは、モニタリングエージェント702と分析エンジン737との間で伝送される情報の種類ごとにフィールドを含む。PDUは、アプリケーション提供データセクション、HW/CVE生成セクション、及びコンテンツ分析エンジン又は生データセクションに分割される。
アプリケーション提供データセクションは、様々なレジスタからのデータ並びにこのセクションの様々なフィールド内に配置される発信元アドレス及び標的アドレスを含む。プロトコルバージョンはPDU752のバージョン番号を含む。プロトコルバージョンは時間と共に変化するので、発信元及び宛先は互いに通信を継続できる必要がある。この8ビットフィールドは、発信元エンティティによって生成されるパケットのバージョン番号を記述する。現在未使用の予備フィールド756がプロトコルバージョンフィールドの後に続く。
アプリケーション提供データセクションの次のフィールドはメッセージ発信元/宛先識別子757、753、及び754である、図7Aに示す分析エンジン基盤内でトラフィックを交換するために使用される。図7に示す様々なエンティティはトラフィックを時々交換する。これらの装置の全てがIPアドレスを有する又は必要とするわけではなく、従って2つの(ハードウェア及びホスト)照会ルータエンジンは内部でトラフィックをルーティングするためにメッセージ発信元及び宛先フィールドを使用する。一部のメッセージは分析エンジン737内のエンティティに辿り着くためにネットワークを横断する必要がある。そのために、エンティティには以下のIDが割り当てられる。所与の分析エンジン機器は複数のアクセラレータカードを有し得る。各カードは固有のIPアドレスを有し、従って様々なエンティティが固有のIDを有する。上述した基盤は複数のアプリケーションを実行していても良い。各アプリケーションサーバが固有のIPアドレスを有するので、対応するモニタリングエージェント側エンティティも固有のIDを有する。
モニタリングエージェント側エンティティ
1.GUI
2.インストルメンテーション及び分析エンジン
3.クライアントメッセージルータ
4.ストリーミングエンジン
5.クライアント側デーモン
6.CLIエンジン
7.クライアント監視
8.クライアント圧縮ブロック
9.クライアントiWarpイーサネットドライバ(100Mb/1Gb/10Gb)
PCIカードごとのエンティティ(開始アドレス=20+n20)
20.セキュラライザTOEブロック
21.セキュラライザPCIブリッジ
22.解凍ブロック
23.メッセージ検査ブロック
24.パケットハッシングブロック
25.タイムスタンプブロック
26.メッセージタイムアウトタイマブロック
27.統計カウンタブロック
28.セキュラライザ照会ルータエンジン
29.セキュラライザアシスト
セキュラライザホストエンティティ
200.セキュラライザPCIeドライバ
201.ホストルーティングエンジン
202.コンテンツ分析エンジン
203.ログマネージャ
204.デーモン
205.ウェブエンジン
206.監視
207.IPCメッセージングバス
208.構成データベース
209.ログデータベース
SIEMコネクタ
220.SIEMコネクタ1−Virsec Dashboard
221.SIEMコネクタ2−HP ArcSight
222.SIEMコネクタ3−IBM QRadar
223.SIEMコネクタ4−Alien Vault USM
セキュラライザ基盤エンティティ
230.Virsec dashboard
231.SMTPサーバ
232.LDAPサーバ
233.SMSサーバ
234.資格サーバ
235.データベースバックアップサーバ
236.OTPクライアント
237.OTPサーバ
238.チェックサムサーバ
239.チケッティングサーバ
240.Virsec規則サーバ
241.Virsec更新サーバ
オールユーザアプリケーション
255.ユーザアプリケーション−照会を発行するアプリケーションを識別するためにアプリケーションPIDが使用される。
アプリケーション提供データセクションの別のフィールドは、伝送されているデータの種類を示すメッセージタイプフィールド755である。最上位レベルにおいて、様々なローカルなモニタリングエージェント側エンティティ間、分析エンジン機器側エンティティ間、及びクライアント側エンティティと機器側エンティティとの間を流れる3つの異なる種類のメッセージがある。更に、ネットワークを移動する必要のあるメッセージはOSIモデル及び他のプロトコルに適合する必要がある。
アプリケーション提供データセクションの次のフィールドは、パケットに関するシーケンス識別子を含むパケットシーケンス番号フィールド779である。ストリーミングエンジンは損失パケットに対する誤り回復を行う。そのために、ストリーミングエンジンはパケットを一意に識別する必要がある。インクリメントする符号付きの64ビットパケットシーケンス番号がストリーミングエンジンによって挿入され、残りの分析エンジン基盤を単純に通過する。シーケンス番号が64ビット境界で完了すると、シーケンス番号は0から再開し得る。ハートビートメッセージやログメッセージ等の非アプリケーションパケットの場合、パケットシーケンス番号は−1とすることができる。
アプリケーション提供データセクションは、暗号化目的で使用されるカナリアを含むカナリアメッセージフィールド761も含む。モニタリングエージェント702及び分析エンジン737は、アプリケーション起動時間、PID、ライセンスストリング、許可されたユーザ名等の幾らかの一般的だが新しい性質の情報からカナリアを計算するやり方を知っている。
加えてアプリケーション提供データセクションは、全てのメッセージ内で使用される汎用フィールドを含む。全般的なアプリケーションデータを保持する、アプリケーション発信元指示アドレス780、アプリケーション宛先指示アドレス758、メモリ開始アドレスポインタ759、メモリ終了アドレスポインタ760、アプリケーションPID762、スレッドID763、分析エンジン到着タイムスタンプ764、及び分析エンジン出発タイムスタンプ765フィールド。
PDUはHW/CAE生成セクションも含む。分析を容易にし且つ固定の時間予算を保つために、分析エンジン737は発信元及び宛先アドレスフィールドをハッシュし、処理の前にPDUを更新する。PDUのHW/CAE生成セクションは、後で使用するためにハッシュデータが配置される場所である。このセクションは、ハッシュアプリケーション発信元指示アドレス766、ハッシュアプリケーション宛先指示アドレス767、ハッシュメモリ開始アドレス768、及びハッシュメモリ終了アドレス769のフィールドを含む。加えてHW/CAW生成セクションは、ハードコード化コンテンツ開始マジックヘッダ、API名マジックヘッダ、コールコンテキストマジックヘッダ、及びコール生データマジックヘッダを含む、カナリアに関係する他のフィールド771を含む、が全てのPDUパケット内に存在する。
HW/CAW生成セクションは、結果、構成ビット、動作モード、誤りコード、及び動作モードデータを含む他の構成及び誤りデータを識別するためのフィールド770も含む。このフィールドの結果部分は、遷移プレイブック、コードレイアウト、メモリ(スタック又はヒープ)オーバラン、ディープ検査の照会等の分析エンジンの様々な照会に対してブール型の結果を返すようにセグメント化される。このフィールドの構成ビット部分は、圧縮フラグ、デモフラグ、又は併設フラグが設定されたときを示す。このフィールド内にフラグがあることは、パケットを圧縮モードで返すべきかどうかを分析エンジン737に知らせる。デモフラグは、システムのための有効なライセンスがないのでシステムがデモモードにあることを示す。このモードでは、ログ及びイベントが全く利用できない。併設フラグは、分析エンジン737内でアプリケーションが実行中であることを示し、それによりホスト照会ルータエンジンはアプリケーションに返る必要があるパケットの送信先を明らかにすることができる。このフラグが立てられている場合はパケットがPCIブリッジ経由で送信され、さもなければパケットはPCIカード上のイーサネットインタフェース上で送信される。このフィールドの動作モード部分は、システムがパラノイドモードにあるのか、モニタモードにあるのか、又は学習モードにあるのかを示す。これらのモードについてはこの節の後の部分でより詳細に論じる。最後に、このフィールドの誤りコード部分はシステム内の誤りを示す。誤りコードの最初の8ビットはメッセージ発信元に対応する。残りの12ビットは各サブシステムによって報告される実際の誤りに対応する。
PDUは、コンテンツ分析エンジン又は生データも含む。OSライブラリコール及びシステムコールの引数や戻り値等の全ての可変データはPDUのこのセクション内に配置される。このセクション内のデータはアプリケーションから収集されるデータのコンテンツを含み、主にコンテンツ分析エンジン721を対象とする。このセクションは、可変サイズのAPI名又はAPI番号772、コールコンテンツマジックヘッダ777、可変サイズコールコンテンツ774、コール生データマジックヘッダ778、可変サイズ生データコンテンツ776、並びに2つの予備フィールド773及び775を含む。更に、これらのフィールドは管理メッセージについてオーバロードされ得る。
デジタル処理基盤
図8は、本開示の実施形態を実装することができるコンピュータネットワーク又は同様のデジタル処理環境を示す。
クライアントコンピュータ/装置50及びサーバコンピュータ60は、アプリケーションプログラム等を実行する処理装置、記憶装置、及び入力/出力装置を提供する。クライアントコンピュータ/装置50は、通信ネットワーク70を介して他のクライアント装置/プロセス50及びサーバコンピュータ60を含む他の計算装置にリンクすることもできる。通信ネットワーク70は、互いに通信するためにそれぞれのプロトコル(TCP/IPやBluetooth(登録商標)等)を現在使用しているリモートアクセスネットワーク、グローバルネットワーク(例えばインターネット)、世界中のコンピュータの集合、ローカルエリアネットワークや広域ネットワーク、及びゲートウェイの一部であり得る。他の電子装置/コンピュータネットワークアーキテクチャも適している。
クライアントコンピュータ/装置50は、セキュリティモニタリングエージェントとして構成され得る。サーバコンピュータ60は、データベースインジェクション攻撃を検出するためにクライアント装置(即ちセキュリティモニタリングエージェント)50と通信する分析エンジンとして構成され得る。サーバコンピュータ60は別個のサーバコンピュータでなくても良く、クラウドネットワーク70の一部であり得る。一部の実施形態では、サーバコンピュータ(例えば分析エンジン)が1組のコンピュータルーチンを分析し、適用される1つ又は複数のパッチを識別し、コンピュータルーチンに1つ又は複数のパッチを適用することができる。クライアント(セキュリティモニタリングエージェント)50は、サーバ(分析エンジン)60との間でパッチ及びパッチ要求を通信することができる。一部の実施形態では、クライアント50が要求及び照会を捕捉し、パッチが必要な破損メモリを検出すると共にパッチを提供するためにクライアント(即ちセキュリティモニタリングエージェント)50上で実行されるクライアントアプリケーション又はコンポーネント(例えばインストルメンテーションエンジン)を含むことができ、クライアント50はその情報をサーバ(例えば分析エンジン)60に伝達することができる。
図9は、図8のコンピュータシステム内のコンピュータ(例えばクライアントプロセッサ/装置50やサーバコンピュータ60)の内部構造の一例の図である。各コンピュータ50、60はシステムバス79を含み、バスはコンピュータ又は処理システムのコンポーネント間でデータを転送するために使用される1組のハードウェア線である。システムバス79は本質的にコンピュータシステムの様々な要素(例えばプロセッサ、ディスク記憶域、メモリ、入力/出力ポート、ネットワークポート等)を接続する共用コンジットであり、要素間で情報を転送することを可能にする。システムバス79に付加されるのが、様々な入出力装置(例えばキーボード、マウス、ディスプレイ、プリンタ、スピーカ等)をコンピュータ50、60に接続するためのI/O装置インタフェース82である。ネットワークインタフェース86は、ネットワーク(例えば図8のネットワーク70)に付加される他の様々な装置にコンピュータが接続することを可能にする。メモリ90は、本開示の実施形態(例えば本明細書に記載のセキュリティモニタリングエージェント、インストルメンテーションエンジン、及び分析エンジンの要素)を実装するために使用されるコンピュータソフトウェア命令92及びデータ94用の揮発性記憶域を提供する。ディスク記憶域95は、本開示の実施形態を実装するために使用されるコンピュータソフトウェア命令92及びデータ94用の不揮発性記憶域を提供する。中央処理装置84もシステムバス79に付加され、コンピュータ命令を実行できるようにする。
実施形態又は実施形態の側面は、これだけに限定されないがハードウェア回路、ファームウェア、又はソフトウェアを含むハードウェア形式で実装することができる。ソフトウェアによって実装される場合、ソフトウェア又はソフトウェアの命令のサブセットをプロセッサがロードすることを可能にするように構成される任意の非一時的コンピュータ可読媒体上にソフトウェアを記憶することができる。プロセッサはその命令を実行し、本明細書に記載したやり方で動作するように又は器具を動作させるように構成される。
一部の実施形態は、コンピュータルーチンの少なくとも1つをパッチ更新によって非同期的且つ動的に操作することにより、1組のコンピュータルーチンの挙動及び/又はデータを変えることができる。パッチは(これだけに限定されないが)コンピュータルーチンの1つ又は複数に関連する値、入力パラメータ、戻り値、又はコード本体を修正することを含むことができ、それによりコンピュータルーチンの挙動(及び/又はデータ)を変える。
一部の実施形態は、コンピュータアプリケーション及び/又はコンピュータコード内のコンピュータルーチン及び/又は脆弱性の悪意あるハンドリングを検出することにより、コンピュータアプリケーションの質、コンピュータプログラムの機能、及び/又はコンピュータコードの機能上の改善をもたらし得る。一部の実施形態は、予期せぬ挙動及び/又は正しくない挙動を回避するために、1つ又は複数のパッチを導入して不適切に実行されているコンピュータルーチンを訂正し及び/又は置換することができる。そのため、一部の実施形態はコンピュータコードの機能を検出し訂正し、それにより大幅な機能改善をもたらすことができる。
一部の実施形態は、ソフトウェアの機能及びソフトウェアの誤りハンドリング機能のロバスト性を改善することによって技術的問題を解決する(それにより技術的効果をもたらす)。一部の実施形態は、既存の手法を使用するのでは解決が困難であり得るコード破損を検出し修復する技術的問題も解決する(それにより技術的効果をもたらす)。
更に、本明細書ではハードウェア、ファームウェア、ソフトウェア、ルーチン、又は命令をデータプロセッサの特定のアクション及び/又は機能を実行するものとして記載している場合がある。但し、本明細書に含まれるかかる記載は便宜上のものに過ぎず、かかるアクションは計算装置、プロセッサ、コントローラ、又は他の装置がファームウェア、ソフトウェア、ルーチン、命令等を実行することによって実際に生じることを理解すべきである。
流れ図、ブロック図、及びネットワーク図は、更に多くの又は少ない要素を含んでも良いこと、異なるように配置されても良いこと、又は異なるように表現されても良いことを理解すべきである。但し、実施形態の実行を示すブロック図及びネットワーク図並びにブロック図及びネットワーク図の数が特定のやり方で実装されることを特定の実装形態が指図する場合があることを更に理解すべきである。
従って、様々なコンピュータアーキテクチャ、物理コンピュータ、仮想コンピュータ、クラウドコンピュータ、及び/又はそれらのものの幾つかの組合せによって更なる実施形態を実装することもでき、そのため本明細書に記載したデータプロセッサは実施形態の限定ではなく例示目的に過ぎない。
本開示をその実施形態例に関して具体的に示し説明してきたが、添付の特許請求の範囲によって包含される本開示の範囲から逸脱することなしに形式及び詳細の点で様々な変更をその範囲内で加えることができることを当業者なら理解されよう。

Claims (38)

  1. コンピュータによって実装される方法であって、
    ロード時間中にコンピュータアプリケーションのモデルを抽出すること、
    前記コンピュータアプリケーションの前記モデルを記憶すること、
    実行時にデータを収集するために前記コンピュータアプリケーション内に命令を挿入すること、
    前記コンピュータアプリケーションの前記記憶済みのモデルに対して実行時に収集した前記データを分析して1つ又は複数のセキュリティイベントの検出を行うこと、
    前記1つ又は複数のセキュリティイベントを前記検出することに基づいて、
    前記コンピュータアプリケーションに関連する少なくとも1つのアクティブプロセス又はスレッドの実行を一時停止すること、及び
    前記コンピュータアプリケーションの継続的実行を保つやり方で前記コンピュータアプリケーションに関連する前記少なくとも1つのアクティブプロセス又はスレッドに関連する少なくとも1つのコンピュータルーチンを修正すること、
    を含む、方法。
  2. 前記少なくとも1つのコンピュータルーチンが前記少なくとも1つのプロセスに関連して実行される、請求項1に記載の方法。
  3. 前記1つ又は複数の検出されるセキュリティイベントが、前記コンピュータアプリケーション内の別のコードパスへの悪意ある移動に関連する、請求項1に記載の方法。
  4. 修正することが、前記コンピュータアプリケーションに関連するパッチ又は構成を検査することを含む、請求項1に記載の方法。
  5. 1つ又は複数の集約パッチが利用者によって受信されることに応答して、
    前記コンピュータアプリケーションに関連する前記少なくとも1つのコンピュータルーチンを修正又は除去すること、及び
    前記コンピュータアプリケーションに関連する1つ又は複数の個々のパッチを修正又は除去すること
    の少なくとも1つを実行すること
    を更に含む、請求項1に記載の方法。
  6. 前記少なくとも1つのコンピュータルーチンに関連する1つ又は複数のスタックを修正すること
    を更に含む、請求項1に記載の方法。
  7. 前記少なくとも1つのコンピュータルーチンに関連する1つ又は複数のヒープを修正すること
    を更に含む、請求項1に記載の方法。
  8. 前記少なくとも1つのアクティブプロセスが前記少なくとも1つのコンピュータルーチンを実行している間、前記少なくとも1つのアクティブプロセスに関連する前記少なくとも1つのコンピュータルーチンを修正すること
    を更に含む、請求項1に記載の方法。
  9. 前記少なくとも1つのコンピュータルーチンを修正した後、前記少なくとも1つのアクティブプロセス又はスレッドの実行を再開すること、
    を更に含む、請求項1に記載の方法。
  10. コンピュータシステムであって、
    ロード時間中にコンピュータアプリケーションのモデルを抽出し、
    前記コンピュータアプリケーションの前記モデルを記憶し、
    実行時にデータを収集するために前記コンピュータアプリケーション内に命令を挿入する
    ように構成されるインストルメンテーションエンジンと、
    前記コンピュータアプリケーションの前記記憶済みのモデルに対して実行時に収集した前記データを分析して1つ又は複数のセキュリティイベントの検出を行い、
    前記1つ又は複数のセキュリティイベントを前記検出することに基づいて、
    前記コンピュータアプリケーションに関連する少なくとも1つのアクティブプロセス又はスレッドの実行を一時停止し、
    前記コンピュータアプリケーションの継続的実行を保つやり方で前記コンピュータアプリケーションに関連する前記少なくとも1つのアクティブプロセス又はスレッドに関連する少なくとも1つのコンピュータルーチンを修正する
    ように構成される分析エンジンと
    を含む、コンピュータシステム。
  11. 前記少なくとも1つのコンピュータルーチンが前記少なくとも1つのアクティブプロセスに関連して実行される、請求項10に記載のシステム。
  12. 前記1つ又は複数の検出されるセキュリティイベントが、前記コンピュータアプリケーション内の別のコードパスへの悪意ある移動に関連する、請求項10に記載のシステム。
  13. 前記分析エンジンが、前記コンピュータアプリケーションに関連するパッチ又は構成を検査するように更に構成される、請求項10に記載のシステム。
  14. 前記分析エンジンが
    1つ又は複数の集約パッチが利用者によって受信されることに応答して、
    前記コンピュータアプリケーションに関連する前記少なくとも1つのコンピュータルーチンを修正又は除去すること、及び
    前記コンピュータアプリケーションに関連する1つ又は複数の個々のパッチを修正又は除去すること
    の少なくとも1つを実行するように更に構成される、請求項10に記載のシステム。
  15. 前記分析エンジンが
    前記少なくとも1つのコンピュータルーチンに関連する1つ又は複数のスタックを修正する
    ように更に構成される、請求項10に記載のシステム。
  16. 前記分析エンジンが
    前記少なくとも1つのコンピュータルーチンに関連する1つ又は複数のヒープを修正する
    ように更に構成される、請求項10に記載のシステム。
  17. 前記分析エンジンが
    前記少なくとも1つのアクティブプロセスが前記少なくとも1つのコンピュータルーチンを実行している間、前記少なくとも1つのアクティブプロセスに関連する前記少なくとも1つのコンピュータルーチンを修正する
    ように更に構成される、請求項10に記載のシステム。
  18. 前記分析エンジンが
    前記少なくとも1つのコンピュータルーチンを修正した後、前記少なくとも1つのアクティブプロセス又はスレッドの実行を再開する
    ように更に構成される、請求項10に記載のシステム。
  19. コンピュータによって実装される方法であって、
    ロード時間中にコンピュータアプリケーションのモデルを抽出すること、
    前記コンピュータアプリケーションの前記モデルを記憶すること、
    実行時にデータを収集するために前記コンピュータアプリケーション内に命令を挿入すること、
    前記コンピュータアプリケーションの前記記憶済みのモデルに対して実行時に収集した前記データを分析して1つ又は複数のセキュリティイベントの検出を行うこと、
    前記1つ又は複数のセキュリティイベントを前記検出すると、1つ又は複数のリターン命令を実行する前に前記コンピュータアプリケーションに関連するメモリ破損を一時的に修復すること、
    前記1つ又は複数の検出済みのセキュリティイベントに基づいて実用的な情報を報告すること、及び
    前記1つ又は複数のセキュリティイベントを前記検出することに基づいて、
    前記コンピュータアプリケーションに関連する少なくとも1つのアクティブプロセス又はスレッドの実行を一時停止すること、及び
    前記コンピュータアプリケーションの継続的実行を保つやり方で前記コンピュータアプリケーションに関連する前記少なくとも1つのアクティブプロセス又はスレッドに関連する少なくとも1つのコンピュータルーチンを修正すること
    を含む、方法。
  20. 少なくとも1つのプロセスが実行している間に前記少なくとも1つのプロセスに関連する少なくとも1つのコンピュータ命令を修正すること
    を更に含む、請求項19に記載の方法。
  21. 前記少なくとも1つのコンピュータルーチンを修正した後、前記少なくとも1つのアクティブプロセス又はスレッドの実行を再開すること
    を更に含む、請求項19に記載の方法。
  22. コンピュータシステムであって、
    ロード時間中にコンピュータアプリケーションのモデルを抽出し、
    前記コンピュータアプリケーションの前記モデルを記憶し、
    実行時にデータを収集するために前記コンピュータアプリケーション内に命令を挿入する
    ように構成されるインストルメンテーションエンジンと、
    前記コンピュータアプリケーションの前記記憶済みのモデルに対して実行時に収集した前記データを分析して1つ又は複数のセキュリティイベントの検出を行い、
    前記1つ又は複数のセキュリティイベントを前記検出すると、1つ又は複数のリターン命令を実行する前に前記コンピュータアプリケーションに関連するメモリ破損を一時的に修復し、
    前記1つ又は複数の検出済みのセキュリティイベントに基づいて実用的な情報を報告し、
    前記1つ又は複数のセキュリティイベントを前記検出することに基づいて、
    前記コンピュータアプリケーションに関連する少なくとも1つのアクティブプロセス又はスレッドの実行を一時停止し、
    前記コンピュータアプリケーションの継続的実行を保つやり方で前記コンピュータアプリケーションに関連する前記少なくとも1つのアクティブプロセス又はスレッドに関連する少なくとも1つのコンピュータルーチンを修正する
    ように構成される分析エンジンと
    を含む、コンピュータシステム。
  23. 前記分析エンジンが
    少なくとも1つのプロセスが実行している間に前記少なくとも1つのプロセスに関連する少なくとも1つのコンピュータ命令を修正する
    ように更に構成される、請求項22に記載のシステム。
  24. 前記分析エンジンが
    前記少なくとも1つのコンピュータルーチンを修正した後、前記少なくとも1つのアクティブプロセス又はスレッドの実行を再開する
    ように更に構成される、請求項22に記載のシステム。
  25. コンピュータアプリケーションの1つ又は複数のコードの脆弱性について、それぞれのコードの脆弱性をメモリ内のテーブル内の個々のシステム応答にマップすること、
    前記コンピュータアプリケーションのコードの脆弱性にアクセスするイベントを検出すること、
    前記イベントを前記検出することに応答して、前記アクセスされるコードの脆弱性に前記メモリ内のテーブル内でマップされるシステム応答を動的に決定すること、及び
    前記決定したシステム応答を実行することであって、前記実行することは前記アクセスされるコードの脆弱性を前記イベントが利用するのを防ぐ、実行すること
    を含む、コンピュータによって実装される方法。
  26. 少なくとも1つのコードの脆弱性及びマップされたシステム応答が前記コンピュータアプリケーションの開発者から提供される、請求項25に記載の方法。
  27. 少なくとも1つのコードの脆弱性及びマップされたシステム応答が前記コンピュータアプリケーションのロード時に又は実行時にコードアナライザによって自動で決定される、請求項25に記載の方法。
  28. 前記システム応答が、システム又は利用者によってプログラム可能なシステムコールバックルーチンを含む、請求項25に記載の方法。
  29. カーネルモード例外ハンドラを上書きするために例外ハンドラを計装すること、
    前記コードの脆弱性の前記アクセスに応答して例外をトリガすること、
    前記計装された例外ハンドラにおいて前記トリガされる例外を傍受し、前記コードの脆弱性を関連付けること、
    前記メモリ内のテーブル内の前記関連するコードの脆弱性を前記計装された例外ハンドラによって照会することであって、前記照会することは前記コードの脆弱性にマップされる前記システムコールバックルーチンを返す、照会すること、及び
    前記コードの脆弱性を前記イベントが利用するのを防ぐための命令を開始するために、前記システムコールバックルーチンを前記計装された例外ハンドラによって実行すること
    を更に含む、請求項28に記載の方法。
  30. 前記システム応答が、
    システムログ内に誤りとして前記コードの脆弱性の前記アクセスのログをとること、
    前記アクセスされたコードの脆弱性を含むアプリケーションプロセスのイメージをダンプすること、
    前記コードの脆弱性の前記アクセス前の前記コンピュータアプリケーションのコピーを復元すること、
    メモリから1つ又は複数の修復パッチを動的にロードすることであって、前記ロードすることは前記コードの脆弱性を含む少なくとも1つのコンピュータルーチンを修正するために前記修復パッチを使用し、前記コンピュータアプリケーションを再開することなしに前記少なくとも1つのコンピュータルーチンを修正する、動的にロードすること、
    前記アクセスされたコードの脆弱性に基づいて終了が生じるまで前記コンピュータアプリケーションを実行し続けること、及び
    前記コンピュータアプリケーションを先回りして終了すること
    のうちの1つ又は複数を含む、請求項25に記載の方法。
  31. 動的にロードすることが、前記コンピュータアプリケーションを実行しているサーバのメモリから前記修復パッチを直接注入することを含む、請求項30に記載の方法。
  32. コンピュータシステムであって、
    コンピュータアプリケーションの1つ又は複数のコードの脆弱性について、それぞれのコードの脆弱性をメモリ内のテーブル内の個々のシステム応答にマップする
    ように構成されるインストルメンテーションエンジンと、
    前記コンピュータアプリケーションのコードの脆弱性にアクセスするイベントを検出すること、
    前記イベントを前記検出することに応答して、前記アクセスされるコードの脆弱性に前記メモリ内のテーブル内でマップされるシステム応答を動的に決定すること、及び
    前記決定したシステム応答を実行することであって、前記実行することは前記アクセスされるコードの脆弱性を前記イベントが利用するのを防ぐ、実行すること
    を行うように構成される分析エンジンと
    を含む、コンピュータシステム。
  33. 少なくとも1つのコードの脆弱性及びマップされたシステム応答が前記コンピュータアプリケーションの開発者から提供される、請求項32に記載のシステム。
  34. 少なくとも1つのコードの脆弱性及びマップされたシステム応答が前記コンピュータアプリケーションのロード時に又は実行時にコードアナライザによって自動で決定される、請求項32に記載のシステム。
  35. 前記システム応答が、システム又は利用者によってプログラム可能なシステムコールバックルーチンを含む、請求項32に記載のシステム。
  36. 前記分析エンジンが、
    カーネルモード例外ハンドラを上書きするために例外ハンドラを計装すること、
    前記コードの脆弱性の前記アクセスに応答して例外をトリガすること、
    前記計装された例外ハンドラにおいて前記トリガされる例外を傍受し、前記コードの脆弱性を関連付けること、
    前記テーブル内の前記関連するコードの脆弱性を前記計装された例外ハンドラによって照会することであって、前記照会することは前記コードの脆弱性にマップされる前記システムコールバックルーチンを返す、照会すること、及び
    前記コードの脆弱性を前記イベントが利用するのを防ぐための命令を開始するために、前記システムコールバックルーチンを前記計装された例外ハンドラによって実行すること
    を行うように更に構成される、請求項35に記載のシステム。
  37. 前記システム応答が、
    システムログ内に誤りとして前記コードの脆弱性の前記アクセスのログをとること、
    前記アクセスされたコードの脆弱性を含むアプリケーションプロセスのイメージをダンプすること、
    前記コードの脆弱性の前記アクセス前の前記コンピュータアプリケーションのコピーを復元すること、
    メモリから1つ又は複数の修復パッチを動的にロードすることであって、前記ロードすることは前記コードの脆弱性を含む少なくとも1つのコンピュータルーチンを修正するために前記修復パッチを使用し、前記コンピュータアプリケーションを再開することなしに前記少なくとも1つのコンピュータルーチンを修正する、動的にロードすること、
    前記アクセスされたコードの脆弱性に基づいて終了が生じるまで前記コンピュータアプリケーションを実行し続けること、及び
    前記コンピュータアプリケーションを先回りして終了すること
    のうちの1つ又は複数を含む、請求項32に記載のシステム。
  38. 前記動的にロードすることが、前記コンピュータアプリケーションを実行しているサーバのメモリから、前記修復パッチを直接注入することを含む、請求項37に記載のシステム。
JP2019518173A 2016-06-16 2017-06-16 コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法 Active JP6949951B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662350917P 2016-06-16 2016-06-16
US62/350,917 2016-06-16
PCT/US2017/037841 WO2017218872A1 (en) 2016-06-16 2017-06-16 Systems and methods for remediating memory corruption in a computer application

Publications (3)

Publication Number Publication Date
JP2019519056A JP2019519056A (ja) 2019-07-04
JP2019519056A5 JP2019519056A5 (ja) 2021-09-24
JP6949951B2 true JP6949951B2 (ja) 2021-10-13

Family

ID=59276839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019518173A Active JP6949951B2 (ja) 2016-06-16 2017-06-16 コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法

Country Status (7)

Country Link
US (1) US11409870B2 (ja)
EP (1) EP3472746B1 (ja)
JP (1) JP6949951B2 (ja)
KR (1) KR102419574B1 (ja)
AU (1) AU2017285429B2 (ja)
CA (1) CA3027728A1 (ja)
WO (1) WO2017218872A1 (ja)

Families Citing this family (20)

* 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
CA2923231C (en) 2013-09-12 2020-06-02 Virsec Systems, Inc. Automated runtime detection of malware
CN106687981B (zh) 2014-06-24 2020-09-01 弗塞克系统公司 用于自动化检测输入和输出验证和资源管理漏洞的系统和方法
JP6949951B2 (ja) 2016-06-16 2021-10-13 ヴァーセック システムズ,インコーポレイテッド コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
US10193762B2 (en) * 2016-08-11 2019-01-29 Rescale, Inc. Dynamic optimization of simulation resources
US10387198B2 (en) 2016-08-11 2019-08-20 Rescale, Inc. Integrated multi-provider compute platform
KR101904911B1 (ko) * 2017-10-13 2018-10-08 한국인터넷진흥원 하이브리드 퍼징 기반 보안 취약점 자동 탐색 방법 및 그 장치
US10296302B1 (en) * 2017-11-06 2019-05-21 General Electric Company One-click deployment of industrial software
WO2019140274A1 (en) 2018-01-12 2019-07-18 Virsec Systems, Inc. Defending against speculative execution exploits
US10902130B2 (en) * 2018-02-18 2021-01-26 Fujitsu Limited Guiding automated testing of binary programs
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
EP3864545A4 (en) 2018-10-29 2022-06-15 Sternum Ltd. DYNAMIC MEMORY PROTECTION
EP3973427A4 (en) * 2019-05-20 2023-06-21 Sentinel Labs Israel Ltd. SYSTEMS AND METHODS FOR EXECUTABLE CODE DETECTION, AUTOMATIC FEATURE EXTRACTION, AND POSITION-INDEPENDENT CODE DETECTION
CN110275722B (zh) 2019-06-21 2023-08-08 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
US11403092B2 (en) * 2020-07-09 2022-08-02 Microsoft Technology Licensing, Llc System compliance based on a mix of hotpatches and coldpatches
US11816211B2 (en) 2020-07-31 2023-11-14 RunSafe Security, Inc. Active signaling in response to attacks on a transformed binary
CA3190145A1 (en) 2020-08-27 2022-03-03 Satya V. Gupta Automated application vulnerability and risk assessment
US20230141142A1 (en) * 2021-11-05 2023-05-11 Blackberry Limited Identifying application program interface use in a binary code
US20230142345A1 (en) * 2021-11-05 2023-05-11 Blackberry Limited Detecting software vulnerabilities in a binary code
CN114244620B (zh) * 2021-12-24 2023-06-09 湖南云箭智能科技有限公司 一种板卡入网验证方法、装置及板卡控制中心

Family Cites Families (230)

* 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
US4910663A (en) 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
US5222220A (en) 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5161193A (en) 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
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
US5533192A (en) 1994-04-21 1996-07-02 Apple Computer, Inc. Computer program debugging system and method
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
US5680542A (en) 1995-06-07 1997-10-21 Motorola, Inc. Method and apparatus for synchronizing data in a host memory with data in target MCU memory
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
JPH09282180A (ja) * 1996-04-11 1997-10-31 Sony Corp データ処理装置
DE69704004T2 (de) 1996-06-19 2001-06-07 Matsushita Electric Ind Co Ltd Vorrichtung zur Programmfehlerbeseitigung
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
US6351795B1 (en) 1997-09-05 2002-02-26 Sun Microsystems, Inc. Selective address translation in coherent memory replication
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
US20020009198A1 (en) 2000-01-18 2002-01-24 Lipton Richard J. Method and systems for data security
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
US7376820B2 (en) 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction
US6775780B1 (en) 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
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
JP2003330736A (ja) 2002-05-08 2003-11-21 Nippon Telegr & Teleph Corp <Ntt> 不正リソース利用防止システム及びその方法並びにプログラム
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
US7353501B2 (en) 2002-11-18 2008-04-01 Microsoft Corporation Generic wrapper scheme
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
US7237172B2 (en) 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US9503470B2 (en) 2002-12-24 2016-11-22 Fred Herz Patents, LLC Distributed agent based model for security monitoring and response
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
WO2005001665A2 (en) 2003-06-27 2005-01-06 Bitfone Corporation 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
EP1654608B1 (en) 2003-08-11 2008-07-02 Telecom Italia S.p.A. Method and system for detecting unauthorised use of a communication network
CA2537910C (en) 2003-09-05 2012-11-06 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
WO2005036831A1 (ja) 2003-10-07 2005-04-21 Fujitsu Limited フレーム中継装置
US7526755B2 (en) 2003-10-08 2009-04-28 Microsoft Corporation Plug-in pre- and postconditions for static program analysis
US7500245B2 (en) * 2005-07-08 2009-03-03 Microsoft Corporation Changing code execution path using kernel mode redirection
US7853442B2 (en) 2003-10-15 2010-12-14 Zuken Inc. Printed circuit board design instruction support method and device
US7237267B2 (en) 2003-10-16 2007-06-26 Cisco Technology, Inc. Policy-based network security management
CN100391180C (zh) 2003-10-30 2008-05-28 华为技术有限公司 一种以太网二层交换设备绑定硬件地址和端口的方法
WO2005052767A1 (en) 2003-11-05 2005-06-09 Qinetiq Limited 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
US20050289265A1 (en) 2004-06-08 2005-12-29 Daniel Illowsky System method and model for social synchronization interoperability among intermittently connected interoperating devices
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
US8955104B2 (en) 2004-07-07 2015-02-10 University Of Maryland College Park 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
US7634812B2 (en) 2004-07-21 2009-12-15 Microsoft Corporation Filter generation
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
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
CN101065716A (zh) 2004-11-22 2007-10-31 诺基亚公司 用于验证电子设备的平台软件的完整性的方法和设备
US7484239B1 (en) 2004-11-30 2009-01-27 Symantec Corporation Detecting heap and stack execution in the operating system using regions
JP3768516B1 (ja) 2004-12-03 2006-04-19 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
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
CN1921474A (zh) * 2005-08-25 2007-02-28 国际商业机器公司 用于在计算机系统中管理服务器处理的方法和设备
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
US8528060B2 (en) * 2005-12-22 2013-09-03 Telcordia Technologies, Inc. Method and system for password protocols in the bounded retrieval mode with security dictionary attacks and intrusions
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
US8286238B2 (en) * 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
US8135994B2 (en) 2006-10-30 2012-03-13 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
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
EP2145252A4 (en) 2007-04-03 2011-12-21 Ldra Technology Inc AUTOMATED MANAGEMENT OF SOFTWARE REQUEST 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
CN101673245B (zh) 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
US9027123B2 (en) 2008-12-08 2015-05-05 Nec Corporation Data dependence analyzer, information processor, data dependence analysis method and program
JP2010257150A (ja) 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム
KR101269549B1 (ko) 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
JP2011059930A (ja) 2009-09-09 2011-03-24 Nec Computertechno Ltd 電源ユニット
US9230455B2 (en) 2009-12-11 2016-01-05 Digital Immunity Llc Steganographic embedding of executable code
WO2011139302A2 (en) 2009-12-11 2011-11-10 Probert Thomas H Steganographic messaging system using code invariants
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
WO2013036269A1 (en) 2011-09-09 2013-03-14 Hewlett-Packard Development Company, L.P. Systems and methods for evaluation of events based on a reference baseline according to temporal position in a sequence of events
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
EP2881877A4 (en) 2012-08-01 2016-08-03 Mitsubishi Electric Corp PROGRAM EXECUTION DEVICE AND PROGRAM ANALYSIS DEVICE
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
CA2923231C (en) * 2013-09-12 2020-06-02 Virsec Systems, Inc. Automated runtime detection of malware
GB2520987B (en) * 2013-12-06 2016-06-01 Cyberlytic Ltd Using fuzzy logic to assign a risk level profile to a potential cyber threat
CA2953787C (en) 2014-06-24 2021-07-20 Virsec Systems, Inc. Automated root cause analysis of single or n-tiered applications
CN106687981B (zh) 2014-06-24 2020-09-01 弗塞克系统公司 用于自动化检测输入和输出验证和资源管理漏洞的系统和方法
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
JP6949951B2 (ja) 2016-06-16 2021-10-13 ヴァーセック システムズ,インコーポレイテッド コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法

Also Published As

Publication number Publication date
KR102419574B1 (ko) 2022-07-11
KR20190035686A (ko) 2019-04-03
AU2017285429B2 (en) 2022-03-31
US20190138725A1 (en) 2019-05-09
EP3472746B1 (en) 2020-05-13
JP2019519056A (ja) 2019-07-04
CA3027728A1 (en) 2017-12-21
US11409870B2 (en) 2022-08-09
WO2017218872A1 (en) 2017-12-21
EP3472746A1 (en) 2019-04-24
AU2017285429A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
JP6949951B2 (ja) コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
AU2018204262B2 (en) Automated code lockdown to reduce attack surface for software
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
US11599634B1 (en) System and methods for run time detection and correction of memory corruption
US11232201B2 (en) Cloud based just in time memory analysis for malware detection
WO2016186975A1 (en) Detection of sql injection attacks
Oyama et al. Process recovery by rollback and input modification

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210511

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20210811

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210922

R150 Certificate of patent or registration of utility model

Ref document number: 6949951

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150