JP6367490B2 - プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護 - Google Patents

プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護 Download PDF

Info

Publication number
JP6367490B2
JP6367490B2 JP2017534563A JP2017534563A JP6367490B2 JP 6367490 B2 JP6367490 B2 JP 6367490B2 JP 2017534563 A JP2017534563 A JP 2017534563A JP 2017534563 A JP2017534563 A JP 2017534563A JP 6367490 B2 JP6367490 B2 JP 6367490B2
Authority
JP
Japan
Prior art keywords
computing device
security
transaction
response
memory
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
JP2017534563A
Other languages
English (en)
Other versions
JP2018500687A (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 JP2018500687A publication Critical patent/JP2018500687A/ja
Application granted granted Critical
Publication of JP6367490B2 publication Critical patent/JP6367490B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

[関連出願に対する相互参照] 本出願は、「プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護」と題する米国実用特許出願第14/670,982号に対し優先権を主張するもので、この米国実用特許出願は、2015年3月27日に出願され、2014年12月31日に出願された「プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護」と題する米国仮特許出願第62/098,641号に対し米国特許法第119条(35 U.S.C. §119(e))の下で優先権を主張する。
コンピュータセキュリティの1つの態様は、「マルウェア」として既知でもある悪意のあるソフトウェアからコンピュータシステムを保護することを含む。マルウェアは多くの形態でやってくる。しかしながら、多くの一般的な様々なマルウェアは、コンピュータメモリの不正位置への読み取りまたは他のアクセスを実行する。例えば、特定のマルウェアはコンピュータメモリをスキャンし、システムAPIにアクセスするために役立つライブラリまたは他のコードを突き止める。したがって、一連の異常なメモリの読み取りが、悪意のあるアクティビティに対しての役立つインジケータであり得る。不正読み取りは、ページベースの例外(すなわち、ページフォールト)を用いて検出され得る。ページベースの例外を用いた不正読み取りの検出は通常、オペレーティングシステムおよび/またはハイパーバイザサポートを必要とし、比較的粗い精度(例えば、4kメモリページ毎)で読み取りを検出し得るに過ぎない。
いくつかのコンピュータプロセッサは、ハードウェアトランザクショナルメモリ用のサポートを提供する。トランザクショナルメモリは、プログラマが「トランザクション」と呼ばれるコードセグメントを指定するのを可能にし、独立してアトミックに実行する。すなわち、トランザクション内で発生しているメモリ操作は、トランザクションがうまくコミットされるまでコンピューティングシステムにて実行中の他のトランザクションまたはスレッドには見えない。うまくコミットされた後、トランザクション中になされた全てのメモリ変更が、システム上の他のスレッドに対して即座に利用可能である。トランザクショナルメモリは、トランザクションを推測で実行し、トランザクションの実行中に生じる任意のメモリ競合を検出し、次にメモリ競合に応答してトランザクションをアボートおよびロールバックことにより実装され得る。メモリ競合は、例えば、別のトランザクションによって既に読み取られている、または書き込まれているメモリ位置に書き込もうとするトランザクションを含む。トランザクショナルメモリは、並列計算用にプログラミングモデルを簡略化し得る。ハードウェアトランザクショナルメモリサポートの1つの市販の例は、インテル(登録商標)社によって製造される特定のプロセッサで利用可能な「Transactional Synchronization Extensions」(インテル(登録商標)TSX)である。2013年12月17日に出願された審査係属中の出願PCT/US2013/075805、および2014年3月28日に出願された米国出願第14/228,842号は、ハードウェアトランザクショナルメモリサポートを用いて不正メモリ書き込み(メモリ修正)を検出するための2つの技術を説明する。
本明細書において説明される概念は、添付の図面において限定としてではなく、例として図示されている。説明を簡潔かつ明確にするために、図に示した要素は必ずしも縮尺通りに描かれていない。適切と見なされる場合、参照ラベルは相当または類似の要素を示すべく複数の図面の間で繰り返されている。
不正メモリアクセスの検出用のコンピューティングデバイスの少なくとも1つの実施形態の簡略ブロック図である。
図1のコンピューティングデバイスの環境の少なくとも1つの実施形態の簡略ブロック図である。
図1および図2のコンピューティングデバイスによって実行され得る不正メモリアクセスを検出するための方法の少なくとも1つの実施形態の簡略フロー図である。
本開示の概念では、様々な変更形態および代替形態が可能であるが、それらの具体的な実施形態は、図面において例として示されており、本明細書において詳細に説明されない。しかしながら、本開示の概念を開示される特定の形態に限定する意図は無く、それどころか、本開示および添付の特許請求の範囲と相反しない全ての変更、均等物および代替案を包含する意図であることを理解されるべきである。
本明細書において「一実施形態」、「実施形態」、「例示的な実施形態」等を参照する場合、説明される実施形態が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態は、当該特定の特徴、構造、または特性を含み得、または必ずしも含むわけではない場合がある。さらに、そのような文言が必ずしも同じ実施形態を指しているわけではない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明される場合、明示的に説明されているか否かにかかわらず、他の実施形態に関連してそのような特徴、構造、または特性をもたらすことは当業者の知識の範囲内であると考えられる。加えて、「少なくとも1つのA、BおよびC」という形の一覧に含まれているアイテムは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または、(A、BおよびC)を意味し得ることが理解されるべきである。同様に、「A、BまたはCの少なくとも1つ」という形で列挙されているアイテムは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または、(A、BおよびC)を意味し得る。
開示される実施形態は、場合によっては、ハードウェア、ファームウェア、ソフトウェア、または、それらの任意の組み合わせにおいて実装されてもよい。開示される実施形態はまた、1または複数のプロセッサによって読み取られて実行され得る、1または複数の一時的または非一時的機械可読(例えばコンピュータ可読)記憶媒体によって保持または格納される命令として実装されてもよい。機械可読記憶媒体は、情報を機械で読み取り可能な形で格納または送信する、任意のストレージデバイス、メカニズム、または、他の物理的構造として具現化されてもよい(例えば、揮発性若しくは不揮発性メモリ、メディアディスク、または、他のメディアデバイス)。
図面において、いくつかの構造的または方法的な特徴は、特定の配置および/または順序で示され得る。しかしながら、そのような特定の配置および/または順序が必要とされなくてもよいことが理解されるべきである。むしろ、いくつかの実施形態において、そのような特徴は、例示的な図面で示されるものと異なる方法および/または順序で配置されてもよい。加えて、特定の図面において構造的または方法的な特徴を含ませることは、そのような特徴が全ての実施形態において必要とされることを示唆するつもりではなく、いくつかの実施形態においては含まれなくてもよく、または、他の特徴と組み合わされてもよい。
ここで、図1を参照すると、例示的なコンピューティングデバイス100は、1または複数の監視メモリ領域への不正読み取りアクセスの検出のために使用され得る。コンピューティングデバイス100は、コンピューティングデバイス100のプロセッサのハードウェアトランザクショナルメモリサポートを用いてトランザクションを開始するセキュリティースレッドを実行する。トランザクション中に、コンピューティングデバイス100は、トランザクションをコミットしないで、1または複数の監視メモリ領域に書き込む。すなわち、コンピューティングデバイス100は、監視メモリ領域への1または複数の「コミットされていない上書き」を実行する。監視メモリ領域に対する変更は、コンピューティングデバイス100によって実行される他のスレッドには見えない。別のスレッドから発生する監視メモリ領域と関連付けられたキャッシュラインへのあらゆる読み取りアクセスは、直ちにセキュリティースレッドのアボートを引き起こす。アボートに応答して、コンピューティングデバイス100は、セキュリティ解析を実行し、適切なセキュリティレスポンスを発生し得る。したがって、コンピューティングデバイス100はハードウェアサポートを用いて不正なメモリ読み取りを監視することができる。加えて、コンピューティングデバイス100は、かなり粗いメモリページレベルではなくて、キャッシュラインレベル(例えば、64バイト)でメモリを監視する。不正読み取りに対する瞬時の反応により、不正利用に対する時間ウィンドウを減少させることができる。さらに、コンピューティングデバイス100は、ソフトウェアにて柔軟なハードウェアレベルのメモリモニターの作成を可能にすることによって使いやすさを改善し得る。
コンピューティングデバイス100は、本明細書に説明される機能を実行するための任意の種類のデバイスとして具現化され得る。例えば、コンピューティングデバイス100は、本明細書に説明される機能を実行するように構成されたデスクトップコンピュータ、サーバコンピュータ、ワークステーション、ラップトップコンピュータ、ノートブックコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、携帯電話、ハンドセット、メッセージングデバイス、ウェアラブルコンピューティングデバイス、車両テレマティクスデバイス、分散コンピューティングシステム、マルチプロセッサシステム、消費者向け電子デバイス、および/またはその他のコンピューティングデバイスとして具現化され得るが、これらに限定されない。図1に示されるように、例示的なコンピューティングデバイス100は、プロセッサ120、入力/出力サブシステム126、メモリ128、およびデータストレージデバイス134を含む。もちろん、他の実施形態において、コンピューティングデバイス100は、デスクトップコンピュータにおいて一般に見られるもの(例えば、様々な入力/出力デバイス)等の他のまたは追加のコンポーネントを含んでもよい。加えて、いくつかの実施形態において、例示的なコンポーネントの1または複数のものは、別のコンポーネントに組み込まれ、またはそうでなければこの一部を形成し得る。例えば、メモリ128、またはその一部は、いくつかの実施形態において、プロセッサ120に組み込まれ得る。
プロセッサ120は、本明細書において説明される機能を実行することが可能である任意の種類のプロセッサとして具現化され得る。例示的なプロセッサ120は、マルチコアプロセッサである。しかしながら、他の実施形態において、プロセッサ120は、単一またはマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラまたは他のプロセッサまたは処理/制御回路として具現化され得る。例示的なプロセッサ120は4つのプロセッサコア122を含み、各々はプログラムされた命令を実行可能な独立した処理ユニットである。例示的なプロセッサ120は、4つのプロセッサコア122を含むが、プロセッサ120は、他の実施形態においてより少ないまたはより多い数のプロセッサコア122を含み得る。加えて、例示的なコンピューティングデバイス100は、単一のプロセッサ120を含むが、いくつかの実施形態において、コンピューティングデバイス100は、1つよりも多くのプロセッサ120を含み得る。例えば、コンピューティングデバイス100は、共有メモリ相互接続を備えた対称型マルチプロセッシングシステムとして具現化され得る。
例示的なプロセッサ120はさらに、ハードウェアトランザクショナルメモリサポート124を含み、これはプロセッサ120がトランザクションとして知られるコードセグメントを投機的に実行するのを可能にする。トランザクションは、アトミックであり、これはトランザクションが未決定の間にトランザクションによって実行されるメモリ操作が、他のトランザクション、コア122、論理プロセッサおよび/またはプロセッサ120のスレッドに対して見えないことを意味する。コミット済みとしても知られる、トランザクションが完了した場合、このトランザクションのメモリ操作の全てが直ちにコンピューティングデバイス100のその他のものに対して利用可能となる。トランザクション内のメモリアクセスが、別のトランザクションまたはスレッドと競合する場合、例えば、スレッドがコミットされていないトランザクションによって書き込まれたメモリ位置から読み取られる場合(または、2つのトランザクションおよび/またはスレッドが同じメモリ位置に書き込まれる場合)、プロセッサ120は競合しているトランザクションをアボートし得、関連付けられた進行中のあらゆるトランザクショナルメモリの変更を破棄する。特に、プロセッサ120は、トランザクションがコミットしようとするのを待つことなく、メモリ競合を検出した時点で直ちに競合するトランザクションを「積極的に」アボートし得る。プロセッサ120は、熱心な競合検出を実装すべくキャッシュコヒーレンシ機構を使用し得る。プロセッサ120は、例えば、キャッシュライン毎、ワード毎、またはメモリセル毎に、任意の粒度レベルで、メモリ位置の競合を検出し得る。アボート時に、プロセッサ120は、アボートハンドラを呼び出しても、トランザクション(一回または複数回)を再開しても、またはアボートされたトランザクションに応答して非トランザクションフォールバックコードを発動してもよい。いくつかの実施形態において、トランザクショナルメモリサポート124は、インテル(登録商標)社製の特定のプロセッサ120で利用可能な「Transactional Synchronization Extensions」(インテル(登録商標)TSX)として具現化され得る。
メモリ128は、本明細書で説明される機能を実行可能な、任意の種類の揮発性若しくは不揮発性メモリまたはデータストレージとして具現化されてもよい。動作時に、メモリ128は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、およびドライバ等のコンピューティングデバイス100の動作中に使用される様々なデータおよびソフトウェアを格納し得る。例示的なメモリ128は、1または複数の監視メモリ領域130およびアボートハンドラ132を含む。さらに以下に述べられるように、監視メモリ領域130は、不正試行されたメモリアクセスに対し監視される特定のメモリ領域である。そのような監視メモリ領域130は、ロードされたまたはメモリマップされたライブラリ、実行可能イメージ、カーネルデータ構造または他の重要なメモリ領域を含み得る。アボートハンドラ132は、さらに以下に述べられるように、潜在的なセキュリティ侵害を処理すべく、トランザクションアボートのイベント時に呼び出される1つのルーチンまたは複数のルーチンを含み得る。
メモリ128はI/Oサブシステム126を介してプロセッサ120に通信可能に結合され、I/Oサブシステム126は、コンピューティングデバイス100のプロセッサ120、メモリ128、および他のコンポーネントとの入力/出力動作を容易にする回路および/またはコンポーネントとして具現化され得る。例えば、I/Oサブシステム126は、メモリコントローラハブ、入出力制御ハブ、ファームウェアデバイス、通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路基板の配線等)および/または入力/出力動作を容易にする他のコンポーネント、ならびにサブシステムとして具現化され、またはそうでなければこれらを含み得る。いくつかの実施形態において、I/Oサブシステム126は、システムオンチップ(SoC)の部分を形成し得、コンピューティングデバイス100のプロセッサ120、メモリ128および他のコンポーネントと共に、単一の集積回路チップ上に組み込まれ得る。
データストレージデバイス134は、例えば、メモリデバイスおよび回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータストレージデバイス等のデータの短期的もしくは長期的な保存のために構成された任意の種類の1または複数のデバイスとして具現化され得る。データストレージデバイス134は、オペレーティングシステムソフトウェアおよびアプリケーションソフトウェアを含む実行用のソフトウェアまたは他のデータを格納するために使用され得る。そのようなソフトウェアは、例えば、第三者のベンダからダウンロードされた、最初は信頼されない、潜在的に悪意のあるソフトウェアであり得る。
コンピューティングデバイス100はさらに、通信サブシステム136を含み、これは、任意の通信回路、デバイスまたはそれらの集合として具現化され、コンピューティングデバイス100とリモートコンピューティングデバイスとの間の通信を可能とすることができる。通信サブシステム136は、そのような通信を達成すべく、任意の1または複数の通信技術(例えば、無線または有線通信)および関連したプロトコル(例えば、イーサネット(登録商標)、ブルートゥース(登録商標)、Wi−Fi(登録商標)、WiMAX(登録商標)、HSPA+、LTEなど)を使用するように構成され得る。通信サブシステム136は、無線ネットワークアダプタを含むネットワークアダプタとして具現化され得る。
例示的な実施形態において、コンピューティングデバイス100はさらに、ディスプレイ138を含む。コンピューティングデバイス100のディスプレイ138は、液晶ディスプレイ(LCD)、発光ダイオード(LED),プラズマディスプレイ、ブラウン管(CRT)、または他の種類のディスプレイデバイス等のデジタル情報を表示することが可能な任意の種類のディスプレイとして具現化され得る。ディスプレイ138は、例えば、セキュリティ解析の結果をユーザに伝えるために使用され得る。
ここで図2を参照すると、例示的な実施形態において、コンピューティングデバイス100は、動作中に環境200を確立する。例示的な環境200は、セキュリティモジュール202、セキュリティ支援スレッドモジュール204およびセキュリティレスポンスモジュール208を含む。環境200の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、または、それらの組み合わせとして具現化されてもよい。例えば、環境200の様々なモジュール、ロジックおよび他のコンポーネントは、コンピューティングデバイス100のプロセッサ120または他のハードウェアコンポーネントの部分を形成し得、あるいは別の方法でコンピューティングデバイス100のプロセッサ120または他のハードウェアコンポーネントによって確立され得る。このため、いくつかの実施形態において、環境200のモジュールのうち任意の1または複数のものは、電気デバイスの回路または集合(例えば、セキュリティ回路、セキュリティ支援スレッド回路など)として具現化され得る。
セキュリティモジュール202は、監視メモリ領域130を監視すべく1または複数のセキュリティ支援スレッド206を開始するように構成される。セキュリティモジュール202は、監視メモリ領域130にアクセスできる任意のセキュリティソフトウェアとして具現化され得、1または複数のオペレーティングシステム、ハイパーバイザ、オペレーティングシステムモジュール、ドライバ、信頼済みコードまたは他のセキュリティソフトウェアとして具現化され得る。各セキュリティ支援スレッド206は、オペレーティングシステムスレッド、軽量プロセス、オペレーティングシステムプロセス、オペレーティングシステムカーネルスレッド、またはユーザソフトウェアスレッド等の、コンピューティングデバイス100のコア122または論理プロセッサ上で実行可能な任意の独立した実行スレッドとして具現化され得る。作成時、各セキュリティ支援スレッド206は、監視メモリ領域130、または監視メモリ領域130の一部のアドレスを供給され得る。いくつかの実施形態において、セキュリティ支援スレッド206は新たに作成されるのではなく、スレッドプールから選択される、または別の方法で事前に生成され得る。
セキュリティ支援スレッドモジュール204は、セキュリティ支援スレッド206によって、プロセッサ120のトランザクショナルメモリサポート124を用いてトランザクションを開始するように構成される。セキュリティ支援スレッドモジュール204はさらに、セキュリティ支援スレッド206によって、トランザクション内から関連した監視メモリ領域130に任意のデータを書き込むように構成される。セキュリティ支援スレッドモジュール204は、監視メモリ領域130の外部からの読み取り、すなわち、トランザクションの外で実行されるコードから生じる監視メモリ領域130の読み取りによって引き起こされるトランザクションのトランザクションアボートを検出するように構成される。セキュリティ支援スレッドモジュール204は、トランザクションアボートの検出に応答して、トランザクションアボートハンドラ132を実行するように構成され得る。
セキュリティレスポンスモジュール208は、トランザクションアボートの検出に応答してセキュリティイベントが生じたかどうかを判定し、セキュリティイベントが生じた場合、1または複数のセキュリティオペレーションを実行するように構成される。それらの機能は、アボートハンドラ132によって、またはそれの一部として実行され得る。セキュリティレスポンスモジュール208は、セキュリティイベントが生じたという判定に応答して、セキュリティイベントを報告する、またはコンピューティングデバイス100を停止するように構成され得る。
ここで図3を参照すると、コンピューティングデバイス100は使用時に、不正メモリアクセスを検出するための方法300を実行し得る。方法300は、ブロック302で開始し、そこで、コンピューティングデバイス100は、監視すべきメモリ128の1または複数の領域130を特定する。それらの監視メモリ領域130は、マルウェアによって一般にスキャンされる任意のインメモリイメージ、実行可能ファイル、または他のデータ構造として具現化され得る。いくつかの実施形態において、監視メモリ領域130は、ロードされた(メモリマップされた)システムライブラリの一部または全てを含み得る。例えば、悪意のあるコードが、Windows(登録商標)オペレーティングシステムのKERNEL32.DLLライブラリなどのロード済みのオペレーティングシステムライブラリ用のメモリ128をスキャンするのは、一般的な手法である。悪意のあるコードは、PE(Portable Execuable)ヘッダ、セクションテーブルおよび/またはPEディレクトリなどのロード済みのイメージのデータ構造の読み取りおよび解釈によって、ロードされたPEがKERNEL32.DLLであることを検証する場合がある。悪意のあるコードは、例えば、ロードされたイメージ(例えば、PEまたはDLL)のファイル種類を判定し、エクスポートテーブルの位置を特定し、エクスポートテーブル中をループし得、さらなるシステム侵入のために関数に対するポインタを見出す。悪意のあるコードは一般に、LoadModuleおよびGetProcAddressといった関数のエクスポートを使用する。なぜならば、それらの関数は、標準のDLLから所望のAPIの名前による呼び出しを可能にするからである。通常の悪意のないソフトウェアは、ごくまれにしか監視メモリ領域130にアクセスする可能性がない。
ブロック304において、コンピューティングデバイス100は、1または複数のセキュリティ支援スレッド206を作成する。上記に説明されたように、各セキュリティ支援スレッド206は、オペレーティングシステムスレッド、軽量プロセス、オペレーティングシステムプロセス、オペレーティングシステムカーネルスレッド、またはユーザソフトウェアスレッド等の、コンピューティングデバイス100のコア122または論理プロセッサ上で実行可能な任意の独立した実行スレッドとして具現化され得る。各セキュリティ支援スレッド206は、監視メモリ領域130の一部または全てに割り当てられ得る。いくつかの実施形態において、コンピューティングデバイス100は、さらなるバックアップのセキュリティ支援スレッド206を作成し得、連続監視および適用範囲に途切れが生じないことを可能にする。
ブロック306において、コンピューティングデバイス100は、監視メモリ領域130と関連した各セキュリティ支援スレッド206を実行する。ブロック306のプロセス(例えば、ブロック308、310、312)は、セキュリティ支援スレッド206によって同時に、並列に、または別の方法で同時発生的に実行され得る。ブロック308において、セキュリティ支援スレッド206はトランザクションを開始し、関連付けられるアボートハンドラ132を特定する。いくつかの実施形態において、トランザクションは、特定の命令、例えばXBEGIN命令を実行することにより開始され得る。アボートハンドラ132のアドレスは、トランザクション開始命令へ引数として渡され得る。加えてまたは代わりに、別個の命令は、アボートハンドラ132のアドレスを特定するために存在し得る。上記に説明されたように、トランザクションアボートが、トランザクションの実行中に生じた場合、コンピューティングデバイス100のプロセッサ120は、アボートハンドラ132に実行を自動的に移す。
ブロック310において、セキュリティ支援スレッド206は、トランザクション内でまだ実行中であり、監視メモリ領域130を上書きする。セキュリティ支援スレッド206は、任意の値で監視メモリ領域130を上書きし得る。書き込み動作は、監視メモリ領域130と関連付けられたメモリキャッシュラインをトランザクションの書き込みセットへと加えることができる。トランザクションは分離されアトミックであるので、監視メモリ領域130に対する変更は、コンピューティングデバイス100によって実行される他のスレッドおよび/またはプロセスには見えない。
ブロック312において、セキュリティ支援スレッド206は、トランザクションをコミットすることなく無限の待機ループに入る。セキュリティ支援スレッド206は、トランザクションをコミットすることなく待機するために任意の技術を使用し得るが、トランザクションは、セキュリティ支援スレッド206のループの実行、休止、または別の方法で実行の中止(yielding)等である。待機している間、監視メモリ領域130の外部からのいかなる読み取り(例えば、別のスレッドおよび/またはトランザクションからの読み取り)も、読み取り/書き込みの競合を引き起こす。プロセッサ120は、読み取り/書き込みの競合を検出し、トランザクションをアボートする。メモリ競合の検出およびその後のトランザクションアボートの生成は、プロセッサ120のハードウェア、プロセッサ120のマイクロコード、ファームウェア、ソフトウェアまたはそれらの技術の任意の組み合わせによって実行され得る。メモリ競合および他のトランザクションアボートの検出は、プロセッサ120上で実行されるソフトウェアにはトランスペアレントであり、ソフトウェアは、アボートハンドラ132がプロセッサ120によって呼び出された後にだけトランザクションアボートを認識し得る。読み取り/書き込みの競合が生じない場合、方法300はブロック312の実行を継続する。読み取り/書き込みの競合が生じる場合、トランザクションはアボートされ、方法300はアボートハンドラ132に移行し、ブロック314を開始する。
いくつかの実施形態において、アボートハンドラ132から実行されるブロック314において、コンピューティングデバイス100は、1または複数のバックアップのセキュリティ支援スレッド206を開始する。上記に説明されたように、コンピューティングデバイス100は、監視メモリ領域130の連続監視を提供するために使用されるバックアップのセキュリティ支援スレッド206を作成し得、または別の方法でそれを初期化し得る。バックアップのセキュリティ支援スレッド206は、ブロック306と関連して上記に述べられたように、新たなトランザクションを開始し得、監視メモリ領域130に書き込み得る。したがって、バックアップのセキュリティ支援スレッド206は、アボートハンドラ132が実行されている間にコンピューティングデバイス100が監視メモリ領域130を監視し続けるのを可能にし得る。
ブロック316において、アボートハンドラ132で実行されるコンピューティングデバイス100は、セキュリティイベントが生じたかどうかを判定すべくトランザクションアボートに応答してセキュリティ解析を実行する。セキュリティイベントは、監視メモリ領域130からの不正読み取りなどの、監視メモリ領域130のうちの1または複数への任意の不正アクセスを含む。そのような不正のメモリ読み取りは、任意のAPIを呼び出すか、選択APIをフックするか、または別の方法でコンピューティングデバイス100の制御を破壊するかしようとする前に、オペレーティングシステムライブラリを特定しマップしようとするルートキットなどの悪意のあるソフトウェアによって実行され得る。コンピューティングデバイス100は、例えば、アボート状態レジスタまたはプロセッサ120のパフォーマンス監視ユニットを読み取ることにより、セキュリティイベントが生じたかどうかを判定すべくトランザクションアボートの原因を記述するデータを解析し得、アボートの原因、アボート命令のアドレス、競合データのアドレス、または他の情報を決定し得る。
ブロック318において、コンピューティングデバイス100は、セキュリティイベントが生じたかどうかを判定する。上記に説明されたように、セキュリティ支援スレッド206の外部からの悪意のあるコードが監視メモリ領域130から読み取られる場合、セキュリティイベントが生じ得る。セキュリティイベントが生じなかった場合、方法300は、ブロック306にループ・バックし、セキュリティ支援スレッド206を実行し、トランザクションを再開し、監視メモリ領域130の監視を継続する。セキュリティイベントが生じた場合、方法300は、にブロック320に進む。
ブロック320において、コンピューティングデバイス100は、セキュリティレスポンスを実行する。コンピューティングデバイス100は、セキュリティイベントの報告、トランザクションアボートを引き起こしたソフトウェアの終了、またはコンピューティングデバイス100の停止等の任意の適切なセキュリティレスポンスを実行し得、構成されるコードの潜在的な実行を防止し得る。セキュリティイベントは、インタラクティブアラートを表示すること、人が読み取り可能な報告を生成すること、または別のセキュリティオペレーションを実行することを含む任意の利用可能な技術を用いて報告され得る。セキュリティレスポンスを実行した後、方法300は、ブロック306にループ・バックし、セキュリティ支援スレッド206を実行し、トランザクションを再開し、監視メモリ領域130の監視を継続する。 [例]
本明細書にて開示される技術の説明的な例が、以下に提供される。技術の実施形態は、以下に説明される任意の1または複数の例、および、それらの任意の組み合わせを含んでもよい。
例1は、不正メモリアクセスを検出するためのコンピューティングデバイスを含み、コンピューティングデバイスは、トランザクショナルメモリサポートを含むプロセッサと、コンピューティングデバイスのセキュリティ支援スレッドによって、プロセッサのトランザクショナルメモリサポートを用いてトランザクションを開始し、セキュリティ支援スレッドによってトランザクションの開始に応答して、監視メモリ位置に書き込み、監視メモリ位置への書き込みに応答して、トランザクションのトランザクションアボートを検出するセキュリティ支援スレッドモジュールであって、トランザクションアボートは、監視メモリ位置の読み取りによって引き起こされ、読み取りは、トランザクションの外部で発生する、セキュリティ支援スレッドモジュールと、(i)セキュリティイベントがトランザクションアボートの検出に応答して生じたかどうかを判定し、(ii)セキュリティイベントが生じたという判定に応答してセキュリティオペレーションを実行するセキュリティレスポンスモジュールとを含む。
例2は、例1の主題を含み、セキュリティ支援スレッドを開始するセキュリティモジュールをさらに含み、トランザクションを開始することは、セキュリティ支援スレッドの開始に応答してトランザクションを開始することを含む。
例3は、例1および2のいずれかの主題を含み、監視メモリ位置は、メモリマップトオペレーティングシステムライブラリの一部を含む。
例4は、例1から3のいずれかの主題を含み、監視メモリ位置は、実行可能イメージの一部を含む。
例5は、例1から4のいずれかの主題を含み、監視メモリ位置は、オペレーティングシステムのカーネルデータ構造の一部を含む。
例6は、例1から5のいずれかの主題を含み、トランザクションアボートを検出することは、監視メモリ位置への書き込みに応答して、トランザクションのコミットなしで、セキュリティ支援スレッドが待機することを含む。
例7は、例1から6のいずれかの主題を含み、セキュリティ支援スレッドモジュールはさらに、トランザクションアボートの検出に応答して、トランザクションアボートハンドラを実行し、トランザクションアボートハンドラを実行することは、セキュリティイベントが生じたかどうかを判定することを含む。
例8は、例1から7のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定することは、コンピューティングデバイスのパフォーマンス監視ユニットから検索された競合データ位置の第1メモリアドレスと、監視メモリ位置の第2メモリアドレスとを比較することを含む。
例9は、例1から8のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定することは、コンピューティングデバイスのアボート状態レジスタに基づいてトランザクションアボートの原因を判定することを含む。
例10は、例1から9のいずれかの主題を含み、セキュリティオペレーションを実行することは、セキュリティイベントを報告することを含む。
例11は、例1から10のいずれかの主題を含み、セキュリティオペレーションを実行することは、コンピューティングデバイスを停止することを含む。
例12は、例1から11のいずれかの主題を含み、セキュリティ支援スレッドモジュールはさらに、セキュリティ支援スレッドによって、セキュリティイベントが生じていないという判定に応答して、トランザクションを再開する。
例13は、例2の主題を含み、セキュリティモジュールはさらに、トランザクションアボートの検出に応答して第2セキュリティ支援スレッドを開始し、セキュリティ支援スレッドモジュールはさらに、コンピューティングデバイスの第2セキュリティ支援スレッドによって、コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いて第2トランザクションを開始し、第2セキュリティ支援スレッドによって、第2トランザクションの開始に応答して監視メモリ位置に書き込む。
例14は、不正メモリアクセスを検出するための方法を含み、方法は、コンピューティングデバイスのセキュリティ支援スレッドが、コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いてトランザクションを開始する工程と、セキュリティ支援スレッドが、トランザクションの開始に応答して、監視メモリ位置に書き込む工程と、コンピューティングデバイスが、監視メモリ位置への書き込みに応答して、トランザクションのトランザクションアボートを検出する工程であって、トランザクションアボートは、監視メモリ位置の読み取りによって引き起こされ、読み取りは、トランザクションの外部で発生する、工程と、コンピューティングデバイスが、トランザクションアボートの検出に応答してセキュリティイベントが生じたかどうかを判定する工程と、コンピューティングデバイスが、セキュリティイベントが生じたとの判定に応答してセキュリティオペレーションを実行する工程とを備える。
例15は、例14の主題を含み、コンピューティングデバイスが、セキュリティ支援スレッドを開始する工程をさらに含み、トランザクションを開始する工程は、セキュリティ支援スレッドの開始に応答してトランザクションを開始する工程を含む。
例16は、例14および15の主題のいずれかを含み、監視メモリ位置は、メモリマップトオペレーティングシステムライブラリの一部を含む。
例17は、例14から16のいずれかの主題を含み、監視メモリ位置は、実行可能イメージの一部を含む。
例18は、例14から17のいずれかの主題を含み、監視メモリ位置は、オペレーティングシステムカーネルデータ構造の一部を含む。
例19は、例14から18のいずれかの主題を含み、トランザクションアボートを検出する工程は、監視メモリ位置への書き込みに応答してトランザクションをコミットしないで、セキュリティ支援スレッドが待機する工程を含む。
例20は、例14から19のいずれかの主題を含み、コンピューティングデバイスが、トランザクションアボートの検出に応答して、トランザクションアボートハンドラを実行する工程をさらに含み、トランザクションアボートハンドラを実行する工程は、セキュリティイベントが生じたかどうかを判定する工程を含む。
例21は、例14から20のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定する工程は、コンピューティングデバイスのパフォーマンス監視ユニットから検索された競合データ位置の第1メモリアドレスと、監視メモリ位置の第2メモリアドレスとを比較する工程を含む。
例22は、例14から21のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定する工程は、コンピューティングデバイスのアボート状態レジスタに基づいてトランザクションアボートの原因を判定する工程を含む。
例23は、例14から22のいずれかの主題を含み、セキュリティオペレーションを実行する工程は、セキュリティイベントを報告する工程を含む。
例24は、例14から23のいずれかの主題を含み、セキュリティオペレーションを実行する工程は、コンピューティングデバイスを停止する工程を含む。
例25は、例14から24のいずれかの主題を含み、セキュリティイベントが生じていないとの判定に応答して、セキュリティ支援スレッドが、トランザクションを再開する工程をさらに含む。
例26は、例14から25のいずれかの主題を含み、トランザクションアボートの検出に応答して、コンピューティングデバイスが、第2セキュリティ支援スレッドを開始する工程と、コンピューティングデバイスの第2セキュリティ支援スレッドが、コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いて第2トランザクションを開始する工程と、第2トランザクションの開始に応答して、第2セキュリティ支援スレッドが、監視メモリ位置に書き込む工程とをさらに含む。
例27は、プロセッサと、プロセッサにより実行された場合、コンピューティングデバイスに例14から26のいずれかに記載の方法を実行させる複数の命令をそれに格納したメモリとを含む、コンピューティングデバイスを含む。
例28は、実行されたことに応答してコンピューティングデバイスが例14から26のいずれかに記載の方法を実行することになる複数の命令を格納されて備える、1または複数の機械可読記憶媒体を含む。
例29は、例14から26のいずれかに記載の方法を実行するための手段を備えるコンピューティングデバイスを含む。
例30は、不正メモリアクセスを検出するためのコンピューティングデバイスを含み、コンピューティングデバイスは、コンピューティングデバイスのセキュリティ支援スレッドが、コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いてトランザクションを開始するための手段と、セキュリティ支援スレッドが、トランザクションの開始に応答して、監視メモリ位置に書き込むための手段と、監視メモリ位置への書き込みに応答して、トランザクションのトランザクションアボートを検出するための手段であって、トランザクションアボートは、監視メモリ位置の読み取りによって引き起こされ、読み取りは、トランザクションから外部で発生される、手段と、セキュリティイベントがトランザクションアボートの検出に応答して生じたかどうかを判定するための手段と、セキュリティイベントが生じたという判定に応答してセキュリティオペレーションを実行するための手段とを含む。
例31は、例30の主題を含み、セキュリティ支援スレッドを開始するための手段をさらに含み、トランザクションを開始するための手段は、セキュリティ支援スレッドの開始に応答してトランザクションを開始するための手段を含む。
例32は、例30および31のいずれかの主題を含み、監視メモリ位置は、メモリマップトオペレーティングシステムライブラリの一部を含む。
例33は、例30から32のいずれかの主題を含み、監視メモリ位置は、実行可能イメージの一部を含む。
例34は、例30から33のいずれかの主題を含み、監視メモリ位置は、オペレーティングシステムカーネルデータ構造の一部を含む。
例35は、例30から34のいずれかの主題を含み、トランザクションアボートを検出するための手段は、監視メモリ位置への書き込みに応答してトランザクションをコミットしないで、セキュリティ支援スレッドが、待機するための手段を含む。
例36は、例30から35のいずれかの主題を含み、トランザクションアボートの検出に応答して、トランザクションアボートハンドラを実行するための手段をさらに含み、トランザクションアボートハンドラを実行するための手段は、セキュリティイベントが生じたかどうかを判定するための手段を含む。
例37は、例30から36のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定するための手段は、コンピューティングデバイスのパフォーマンス監視ユニットから検索された競合データ位置の第1メモリアドレスと、監視メモリ位置の第2メモリアドレスとを比較するための手段を含む。
例38は、例30から37のいずれかの主題を含み、セキュリティイベントが生じたかどうかを判定するための手段は、コンピューティングデバイスのアボート状態レジスタに基づいてトランザクションアボートの原因を判定するための手段を含む。
例39は、例30から38のいずれかの主題を含み、セキュリティオペレーションを実行するための手段は、セキュリティイベントを報告するための手段を含む。
例40は、例30から39のいずれかの主題を含み、セキュリティオペレーションを実行するための手段は、コンピューティングデバイスを停止するための手段を含む。
例41は、例30から40のいずれかの主題を含み、セキュリティイベントが生じていないとの判定に応答して、セキュリティ支援スレッドが、トランザクションを再開するための手段をさらに含む。
例42は、例30から41のいずれかの主題を含み、トランザクションアボートの検出に応答して第2セキュリティ支援スレッドを開始するための手段と、コンピューティングデバイスの第2セキュリティ支援スレッドが、コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いて第2トランザクションを開始するための手段と、第2セキュリティ支援スレッドが、第2トランザクションの開始に応答して監視メモリ位置に書き込むための手段とをさらに含む。

Claims (25)

  1. 不正メモリアクセスを検出するためのコンピューティングデバイスであって、
    トランザクショナルメモリサポートを含むプロセッサと、
    セキュリティ支援スレッドモジュールと、
    (i)セキュリティイベントがトランザクションアボートの検出に応答して生じたかどうかを判定し、(ii)セキュリティイベントが生じたという判定に応答してセキュリティオペレーションを実行するセキュリティレスポンスモジュールと
    を備え、
    前記セキュリティ支援スレッドモジュールは、
    前記コンピューティングデバイスのセキュリティ支援スレッドによって、前記プロセッサの前記トランザクショナルメモリサポートを用いてトランザクションを開始し、
    前記セキュリティ支援スレッドによって、前記トランザクションの前記開始に応答して、監視メモリ位置に書き込み、
    前記監視メモリ位置への前記書き込みに応答して、前記トランザクションのトランザクションアボートを検出し、
    前記トランザクションアボートは、前記監視メモリ位置の読み取りによって引き起こされ、前記読み取りは、前記トランザクションの外部で発生する、
    コンピューティングデバイス。
  2. 前記セキュリティ支援スレッドを開始するセキュリティモジュールをさらに備え、
    前記トランザクションを開始することは、前記セキュリティ支援スレッドの前記開始に応答して前記トランザクションを開始することを含む、
    請求項1に記載のコンピューティングデバイス。
  3. 前記監視メモリ位置は、メモリマップトオペレーティングシステムライブラリの一部を含む、
    請求項1に記載のコンピューティングデバイス。
  4. 前記監視メモリ位置は、実行可能イメージの一部を含む、
    請求項1に記載のコンピューティングデバイス。
  5. 前記監視メモリ位置は、オペレーティングシステムのカーネルデータ構造の一部を含む、
    請求項1に記載のコンピューティングデバイス。
  6. 前記トランザクションアボートを検出することは、前記監視メモリ位置への前記書き込みに応答して、前記トランザクションのコミットなしで、前記セキュリティ支援スレッドが待機することを含む、
    請求項1に記載のコンピューティングデバイス。
  7. 前記セキュリティ支援スレッドモジュールはさらに、前記トランザクションアボートの前記検出に応答して、トランザクションアボートハンドラを実行し、
    前記トランザクションアボートハンドラを実行することは、セキュリティイベントが生じたかどうかを判定することを含む、
    請求項1に記載のコンピューティングデバイス。
  8. 前記セキュリティイベントが生じたかどうかを判定することは、前記コンピューティングデバイスのパフォーマンス監視ユニットから検索された競合データ位置の第1メモリアドレスと、前記監視メモリ位置の第2メモリアドレスとを比較することを含む、
    請求項1から7のいずれか一項に記載のコンピューティングデバイス。
  9. 前記セキュリティイベントが生じたかどうかを判定することは、前記コンピューティングデバイスのアボート状態レジスタに基づいて前記トランザクションアボートの原因を判定することを含む、
    請求項1から7のいずれか一項に記載のコンピューティングデバイス。
  10. 前記セキュリティオペレーションを実行することは、前記セキュリティイベントを報告することを含む、
    請求項1から7のいずれか一項に記載のコンピューティングデバイス。
  11. 前記セキュリティオペレーションを実行することは、前記コンピューティングデバイスを停止することを含む、
    請求項1から7のいずれか一項に記載のコンピューティングデバイス。
  12. 前記セキュリティ支援スレッドモジュールはさらに、前記セキュリティ支援スレッドによって、セキュリティイベントが生じていないという判定に応答して、前記トランザクションを再開する、
    請求項1から7のいずれか一項に記載のコンピューティングデバイス。
  13. 前記セキュリティモジュールはさらに、前記トランザクションアボートの検出に応答して第2セキュリティ支援スレッドを開始し、
    前記セキュリティ支援スレッドモジュールはさらに、
    前記コンピューティングデバイスの前記第2セキュリティ支援スレッドによって、前記コンピューティングデバイスの前記プロセッサのトランザクショナルメモリサポートを用いて第2トランザクションを開始し、
    前記第2セキュリティ支援スレッドによって、前記第2トランザクションの前記開始に応答して前記監視メモリ位置に書き込む、
    請求項2に記載のコンピューティングデバイス。
  14. 不正メモリアクセスを検出するための方法であって、
    コンピューティングデバイスのセキュリティ支援スレッドが、前記コンピューティングデバイスのプロセッサのトランザクショナルメモリサポートを用いてトランザクションを開始する段階と、
    前記セキュリティ支援スレッドが、前記トランザクションの開始に応答して、監視メモリ位置に書き込む段階と、
    前記コンピューティングデバイスが、前記監視メモリ位置への書き込みに応答して、前記トランザクションのトランザクションアボートを検出する段階であって、前記トランザクションアボートは、前記監視メモリ位置の読み取りによって引き起こされ、前記読み取りは、前記トランザクションの外部で発生する、段階と、
    前記コンピューティングデバイスが、前記トランザクションアボートの検出に応答してセキュリティイベントが生じたかどうかを判定する段階と、
    前記コンピューティングデバイスが、セキュリティイベントが生じたとの判定に応答してセキュリティオペレーションを実行する段階と
    を備える方法。
  15. 前記コンピューティングデバイスが、前記セキュリティ支援スレッドを開始する段階をさらに備え、前記トランザクションを開始する段階は、前記セキュリティ支援スレッドの開始に応答して前記トランザクションを開始する段階を含む、
    請求項14に記載の方法。
  16. 前記監視メモリ位置は、メモリマップトオペレーティングシステムライブラリの一部を含む、
    請求項14に記載の方法。
  17. 前記監視メモリ位置は、実行可能イメージの一部を含む、
    請求項14に記載の方法。
  18. 前記監視メモリ位置は、オペレーティングシステムカーネルデータ構造の一部を含む、
    請求項14に記載の方法。
  19. 前記トランザクションアボートを検出する段階は、前記監視メモリ位置への書き込みに応答して前記トランザクションをコミットしないで、前記セキュリティ支援スレッドが待機する段階を含む、
    請求項14に記載の方法。
  20. 前記コンピューティングデバイスが、前記トランザクションアボートの検出に応答して、トランザクションアボートハンドラを実行する段階をさらに備え、
    前記トランザクションアボートハンドラを実行する段階は、前記セキュリティイベントが生じたかどうかを判定する段階を含む、
    請求項14に記載の方法。
  21. 前記セキュリティイベントが生じたかどうかを判定する段階は、前記コンピューティングデバイスのパフォーマンス監視ユニットから検索された競合データ位置の第1メモリアドレスと、前記監視メモリ位置の第2メモリアドレスとを比較する段階を含む、
    請求項14に記載の方法。
  22. 前記トランザクションアボートの検出に応答して、コンピューティングデバイスが、第2セキュリティ支援スレッドを開始する段階と、
    前記コンピューティングデバイスの前記第2セキュリティ支援スレッドが、前記コンピューティングデバイスの前記プロセッサのトランザクショナルメモリサポートを用いて第2トランザクションを開始する段階と、
    前記第2トランザクションの開始に応答して、前記第2セキュリティ支援スレッドが、前記監視メモリ位置に書き込む段階と
    をさらに備える請求項14に記載の方法。
  23. プロセッサと、
    前記プロセッサにより実行された場合、コンピューティングデバイスに請求項14から22のいずれか一項に記載の方法を実行させる複数の命令を格納したメモリと
    を備える、コンピューティングデバイス。
  24. コンピューティングデバイスに、請求項14から22のいずれか一項に記載の方法を実行させるためのプログラム。
  25. 請求項14から22のいずれか一項に記載の方法を実行するための手段を備えるコンピューティングデバイス。
JP2017534563A 2014-12-31 2015-11-30 プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護 Active JP6367490B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462098641P 2014-12-31 2014-12-31
US62/098,641 2014-12-31
US14/670,982 2015-03-27
US14/670,982 US10540524B2 (en) 2014-12-31 2015-03-27 Memory access protection using processor transactional memory support
PCT/US2015/062903 WO2016109071A1 (en) 2014-12-31 2015-11-30 Memory access protection using processor transactional memory support

Publications (2)

Publication Number Publication Date
JP2018500687A JP2018500687A (ja) 2018-01-11
JP6367490B2 true JP6367490B2 (ja) 2018-08-01

Family

ID=56164212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017534563A Active JP6367490B2 (ja) 2014-12-31 2015-11-30 プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護

Country Status (5)

Country Link
US (1) US10540524B2 (ja)
EP (1) EP3241116B1 (ja)
JP (1) JP6367490B2 (ja)
CN (1) CN107408016B (ja)
WO (1) WO2016109071A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540524B2 (en) * 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US10613897B1 (en) * 2016-12-21 2020-04-07 Ca, Inc. Systems and methods for creating program-specific execution environments
US10713357B2 (en) * 2017-11-23 2020-07-14 Nicira, Inc. Detecting lateral movement using a hypervisor
US10678922B2 (en) * 2017-11-23 2020-06-09 Nicira, Inc. Detecting arbitrary code execution using a hypervisor
US10824751B1 (en) * 2018-04-25 2020-11-03 Bank Of America Corporation Zoned data storage and control security system
US10929556B1 (en) 2018-04-25 2021-02-23 Bank Of America Corporation Discrete data masking security system
US11115383B2 (en) * 2018-05-24 2021-09-07 Texas Instruments Incorporated System on chip firewall memory architecture

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
EP1248200A1 (de) 2001-04-06 2002-10-09 Micronas GmbH Verriegelungsschaltung zur Verhinderung eines unzulässigen Zugriffs auf die Speichereinrichtung eines Prozessors
US20030115479A1 (en) 2001-12-14 2003-06-19 Jonathan Edwards Method and system for detecting computer malwares by scan of process memory after process initialization
US7130911B2 (en) 2002-02-11 2006-10-31 Intel Corporation Method for monitoring unauthorized access to data stored in memory buffers
US7490187B2 (en) * 2002-05-15 2009-02-10 Broadcom Corporation Hypertransport/SPI-4 interface supporting configurable deskewing
US7418729B2 (en) * 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
DE102004014940A1 (de) * 2003-03-26 2004-10-21 Kyocera Corp. Halbleitervorrichtung, Verfahren zum Aufwachsen eines Nidridhalbleiters und Verfahren zur Herstellung einer Halbleitervorrichtung
DE60320649D1 (de) * 2003-08-15 2008-06-12 Sgs Thomson Microelectronics Datenspeicher mit beschränktem Zugang
US9384348B2 (en) * 2004-04-29 2016-07-05 James A. Roskind Identity theft countermeasures
US7971246B1 (en) * 2004-04-29 2011-06-28 James A. Roskind Identity theft countermeasures
US8145816B2 (en) * 2004-09-15 2012-03-27 Intel Corporation System and method for deadlock free bus protection of resources during search execution
US8417814B1 (en) 2004-09-22 2013-04-09 Symantec Corporation Application quality of service envelope
EP1894101A1 (de) 2005-06-23 2008-03-05 Bayerische Motorenwerke Aktiengesellschaft Verfahren und vorrichtung zum überwachen eines unerlaubten speicherzugriffs einer rechenvorrichtung, insbesondere in einem kraftfahrzeug
US7536517B2 (en) * 2005-07-29 2009-05-19 Microsoft Corporation Direct-update software transactional memory
US8180971B2 (en) * 2005-12-09 2012-05-15 University Of Rochester System and method for hardware acceleration of a software transactional memory
US7890612B2 (en) * 2006-05-08 2011-02-15 Electro Guard Corp. Method and apparatus for regulating data flow between a communications device and a network
US8270588B2 (en) * 2006-10-04 2012-09-18 Ronald Schwartz Method and system for incoming call management
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US20080083031A1 (en) 2006-12-20 2008-04-03 Microsoft Corporation Secure service computation
EP2118274A4 (en) * 2007-01-29 2010-09-01 Univ Ohio State Res Found GENE EXPRESSION SYSTEM IN PLANTS WITH A VIRUS-BASED EXPRESSION VECTOR
US8396937B1 (en) * 2007-04-30 2013-03-12 Oracle America, Inc. Efficient hardware scheme to support cross-cluster transactional memory
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
JP2009284024A (ja) * 2008-05-19 2009-12-03 Fujitsu Ltd フレーム伝送装置およびフレーム伝送方法
EP2332043B1 (en) 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US8776063B2 (en) 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8161247B2 (en) 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US20120079245A1 (en) 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
US8640230B2 (en) 2011-12-19 2014-01-28 International Business Machines Corporation Inter-thread communication with software security
GB2503583B (en) * 2012-06-27 2015-06-17 Nordic Semiconductor Asa Memory Protection
US20140282891A1 (en) * 2013-03-15 2014-09-18 Stephen Frechette Method and system for unique computer user identification for the defense against distributed denial of service attacks
US9384148B2 (en) * 2013-12-17 2016-07-05 Intel Corporation Detection of unauthorized memory modification and access using transactional memory
US20150278123A1 (en) 2014-03-28 2015-10-01 Alex Nayshtut Low-overhead detection of unauthorized memory modification using transactional memory
US9756118B2 (en) * 2014-04-28 2017-09-05 Vmware, Inc. Virtual performance monitoring decoupled from hardware performance-monitoring units
US9323701B2 (en) * 2014-07-29 2016-04-26 Netapp, Inc. Technique for synchronizing IOMMU memory de-registration and incoming I/O data
US9507938B2 (en) * 2014-12-23 2016-11-29 Mcafee, Inc. Real-time code and data protection via CPU transactional memory support
US10540524B2 (en) * 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support

Also Published As

Publication number Publication date
WO2016109071A1 (en) 2016-07-07
CN107408016A (zh) 2017-11-28
EP3241116B1 (en) 2019-10-23
US10540524B2 (en) 2020-01-21
EP3241116A4 (en) 2018-07-25
US20160188243A1 (en) 2016-06-30
JP2018500687A (ja) 2018-01-11
CN107408016B (zh) 2020-05-12
EP3241116A1 (en) 2017-11-08

Similar Documents

Publication Publication Date Title
JP6367490B2 (ja) プロセッサトランザクショナルメモリサポートを用いるメモリアクセス保護
KR101835250B1 (ko) 트랜잭셔널 메모리를 사용한 비인가 메모리 수정 및 액세스의 검출
TWI612439B (zh) 用以偵測未經授權之記憶體存取的計算裝置、方法及機器可讀儲存媒體
US10387649B2 (en) Detecting malware when executing in a system
US10387261B2 (en) System and method to capture stored data following system crash
US9355002B2 (en) Capturing trace information using annotated trace output
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
KR101701014B1 (ko) 운영 체제에의 악성 활동 보고
US20130061005A1 (en) Method for power optimized multi-processor synchronization
TWI779515B (zh) 用於判定有無篡改統一可擴展韌體介面(uefi)之方法及系統、及相關非暫時性電腦可讀媒體
US8429322B2 (en) Hotplug removal of a device in a virtual machine system
WO2015101148A1 (zh) 一种实现虚拟机自省的方法和装置
US9864708B2 (en) Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
EP2869189A1 (en) Boot up of a multiprocessor computer
US9535772B2 (en) Creating a communication channel between different privilege levels using wait-for-event instruction in systems operable at multiple levels hierarchical privilege levels
KR102443089B1 (ko) 컴퓨팅 디바이스에서의 동기화
US9880931B2 (en) Safepoints for guest languages on a virtual machine
WO2024220088A1 (en) Emergency system management mode handler

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180704

R150 Certificate of patent or registration of utility model

Ref document number: 6367490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250