JP2010517164A - オペレーティングシステム資源の保護 - Google Patents

オペレーティングシステム資源の保護 Download PDF

Info

Publication number
JP2010517164A
JP2010517164A JP2009547246A JP2009547246A JP2010517164A JP 2010517164 A JP2010517164 A JP 2010517164A JP 2009547246 A JP2009547246 A JP 2009547246A JP 2009547246 A JP2009547246 A JP 2009547246A JP 2010517164 A JP2010517164 A JP 2010517164A
Authority
JP
Japan
Prior art keywords
operating system
virtual machine
protection agent
resources
machine monitor
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.)
Pending
Application number
JP2009547246A
Other languages
English (en)
Other versions
JP2010517164A5 (ja
Inventor
ベーカー ブランドン
エー.フィールド スコット
トラウト エリック
シンハ スヤシュ
ガングリ ジョイ
フォルツ フォレスト
カトラー デイビッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010517164A publication Critical patent/JP2010517164A/ja
Publication of JP2010517164A5 publication Critical patent/JP2010517164A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/468Specific access rights for resources, e.g. using capability register
    • 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/2105Dual mode as a secondary aspect
    • 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
    • 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/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

本文書は、保護エージェントを有効にして、オペレーティングシステムの特権モードからアクセス不可能なメモリから、1つ又は複数のオペレーティングシステムの資源が、変更されたかどうかを判断することが可能なツールについて説明する。いくつかの例において、これらのツールは、保護エージェントが仮想マシンモニター内に存在することを可能にすることができる。他の例において、ツールは、保護エージェントが仮想マシンモニターにより提供される明確な仮想パーティション内に存在することを可能にすることができる。オペレーティングシステムの特権モードの外で動作することにより、保護エージェントは、オペレーティングシステムの特権モード内で動作するエンティティーによる攻撃に対して強くなることができる。

Description

本発明は、オペレーティングシステム資源の保護に関する。
コンピューターデバイス内のプロセッサーは、特権モード及び非特権モードを含むことが多い。特権モードで稼動するソフトウェアは、一般にプロセッサーによってサポートされる全ての命令を実行することができる。典型的には、オペレーティングシステムのカーネルは、特権モード内で稼動するが、この特権モードは、時には「リング0」、「スーパーバイザーモード」又は「カーネルモード」とも呼ばれる。
一方、コンピューターデバイス上で稼動するソフトウェアには、非特権モードのみで稼動するよう制約されるものがある。このモードでは、一般にソフトウェアはプロセッサーの命令のサブセットを実行することが可能である。オペレーティングシステムは、従って、非特権モードを使用して、このモードで稼動するソフトウェアの活動を制限することができる。例えば、ソフトウェアは、コンピューターデバイスのメモリの特定のサブセットに制限される場合がある。この非特権モードは、「リング3」又は「ユーザーモード」としても知られる。一般に、コンピューターデバイス・ユーザーアプリケーションは、この非特権モードで動作する。
ソフトウェアアプリケーションが、この非特権モードで動作する場合、そのアプリケーションは、非特権モードからは直接アクセスできないメモリの一部分へのアクセスを要求することができる。そのアプリケーションが、例えば、このメモリの一部分での動作「新しいファイルの作成」等を実行したいとする。典型的には、この要求はこの非特権モードのコードを特権モードのコードに移行する、コールゲート又は他のシステムコール命令を通して行われる。この移行により、特権モードのみからアクセス可能として指定されるメモリに、非特権モードが直接アクセスしないことを確実にする。
これらのモードに従って、悪意のあるコードの製作者は、特権モードにアクセスし、コンピューターデバイスの動きを変えるマルウェアをインストールすることができる。このマルウェアは、例えば、ファイルの位置の改変、ファイルの隠蔽、ファイルの変更、キー・ストロークの改変などをすることができる。このマルウェアには、「ルートキット」を含むものがあり、ルートキットはコンピューターデバイスの動きを変えるだけでなく、特権モードのメモリ内にそれ自身を隠してしまう。コンピューターデバイス上で稼動するアンチウィルスアプリケーションは、それ故この隠れたルートキットを発見することができず、従ってマルウェアはその悪意のある行いを続けることができる。さらに、以下で検討するように、そのようなマルウェアを、オペレーティングシステムの内蔵保護システム全体でパッチすることができる。
マルウェアの製作者は、特権モードにアクセスし、マルウェアをコンピューターデバイスに種々の方法でロードすることができ、その方法にはコンピューターデバイスのユーザーをだまして、知らないうちにマルウェアをユーザー所有のコンピューターデバイスにインストールすることが含まれる。その結果、現在のオペレーティングシステムは、そのようなマルウェアを検出するための1つ又は複数の保護システムを用いることが多い。これらの保護システムは、一般に特定の重要なオペレーティングシステムの資源を監視して、これらの資源に対するいかなる変化も検出する。そのような保護システムがそのような変化を検出すると、保護システムは、特定の資源がマルウェアに感染されたと判断することができる。これらの保護システムは、また、ユーザーのアンチウィルスアプリケーションに、非特権モードのメモリ内に現在存在するアプリケーションの一覧を提供することができる。もちろん、マルウェアが隠れることに成功していると、提供される一覧には現れない。さらに、マルウェアが保護システムのパッチに成功していると、保護システムは、稼動することができない、又は重要なオペレーティングシステムの資源に対するいかなる変化も検出することができない。
これらの保護システムは効果的である一方、いくつかの弱点にも悩まされる。第一に、これらのシステムは遮蔽をすることに依存していることが多く、それ故マルウェアに識別された場合はセキュリティ上の弱点には脆弱である。すなわち、マルウェアが保護システムのアイデンティティを解明し、保護システムの位置を見つけた場合は、保護システムそのものを無効にすることができる。マルウェアの製作者は、また、他のものに対しても同じことを行う方法について指示することができる。さらに、第一の点に関して、これらの保護システムは、一般に、オペレーティングシステム(例えば、特権モード自身の内部で)の保護ドメインと同じ保護ドメインで動作する。従って、マルウェアが特権モードへのアクセスを獲得し、遮蔽された保護システムの姿を暴露することができると、保護システムは、自分自身が攻撃にさらされる。最終的には、これらの保護システムは、オペレーティングシステム又は特権モードと同時に初期化する。従って、マルウェア又はマルウェアの製作者は、この初期化の前にコンピューターデバイスの制御を掌握すれば、保護システムが初期化するのを阻止することができる。
本文書は、保護エージェントを有効にして、オペレーティングシステムの特権モードからアクセス不可能なメモリから、1つ又は複数のオペレーティングシステムの資源が変更されたかどうかを判断することが可能なツールについて説明する。いくつかの実施形態において、これらのツールにより、保護エージェントが仮想マシンモニター内に存在することができる。他の実施形態において、それらのツールにより、保護エージェントが仮想マシンモニターにより提供される明確な仮想パーティション内に存在することができる。オペレーティングシステムの特権モードの外で動作することにより、保護エージェントは、オペレーティングシステムの特権モード内で動作するエンティティーによる攻撃に対して強くなることができる。
本要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。本要約は、請求の主題の重要な特徴又は主要な特徴を確認することを意図しておらず、また請求の主題の範囲を決定するために助言するものとして意図してもいない。用語「ツール」は、例えば、上記の及び本文書全体の文脈により認められるような、システム、方法、コンピューター可読命令及び/又は技術に言及することができる。
ツールの種々の実施形態が動作する、例示の動作環境を示す図である。 図1に例示されるモジュールの変化するコンピューターデバイスのメモリの権利を示す図である。 図1に例示されるいくつかのモジュールが存在するコンピューターデバイスメモリの変化する部分を表す図である。 仮想マシンモニターが保護エージェントに関連するメモリの一部分を保護し、タイマーをセットしてエージェントを稼動することができる例示の方法を示すフロー図である。 物理的なプロセッサーを、多数のオペレーティングシステム仮想プロセッサー及び保護エージェント仮想プロセッサーに仮想化することができる仮想マシンモニターを有する例示のアーキテクチャーを示す図である。 図5の物理的プロセッサーの帯域幅をどのように種々の仮想プロセッサーの間に割り当てるかを例示する図である。 ツールが、オペレーティングシステムの特権モードからアクセス不可能な位置に存在する保護エージェントを有効にして稼動するいくつかの方法を示す例示のプロセスの図である。 ツールが、仮想マシンモニターを改変してオペレーティングシステムの特権モードからアクセス不可能な位置に存在する保護エージェントを有効にして稼動するいくつかの方法を示す例示のプロセスの図である。 ツールが仮想マシンモニターに要求を出すことにより保護エージェントの特権モードを形成するいくつかの方法を示す例示のプロセスの図である。 ツールが現実のコンピュータープロセッサーを仮想コンピュータープロセッサーに仮想化することにより保護エージェントの特権モードを形成し、仮想コンピュータープロセッサーの少なくとも1つが保護エージェントを稼動するいくつかの方法を示す例示のプロセスの図である。 ツールが根底にある物理的プロセッサー上には存在しない特権モードの追加を有効にするいくつかの方法を示す例示のプロセスの図である。
同じ数字は、本開示及び図面を通して使用し、同様の構成要素及び特徴に言及する。
概要
以下の文書は、保護エージェントをオペレーティングシステム特権モードから改変不可能又はアクセス不可能にする方法で、保護エージェントを動作することが可能なツールについて説明する。これらのツールは、従って、保護エージェント自身の保護を可能にし、それによって、重要なオペレーティングシステムの資源に対する改変を検出する保護エージェントの能力を確実にする。加えて、これらのツールは、資源の改変の検出に応答して、又は保護エージェント自身の変更が企てられたことに応答して、オペレーティングシステム又はオペレーティングシステム特権モードをシャットダウンすることができる。さらに、これらのツールは、その後の資源の変更を検出する必要なしに、保護エージェントがオペレーティングシステムの資源に対する不変性を強化することを可能にする。
ツールがこれらの行為及び他の行為を有効にする環境については、以下の「例示の動作環境」と題される章に説明される。その後に「自律的な保護エージェント」と題される章が続き、これは2つの下位の章を含む。第1の下位の章は、「仮想マシンモニター保護エージェント」と題され、保護エージェントが仮想マシンモニター内に存在し、仮想マシンモニター内で実行することができる一例示の方法を説明する。次に、「仮想パーティション保護エージェント」と題される別の下位の章が続き、オペレーティングシステムのパーティションとは別個の仮想パーティション内に存在し、その仮想パーティション内で実行することができる一例示の方法を説明する。
次に「自律的な保護エージェントの特権モード」と題される別の章が続き、これもまた2つの下位の章を含む。第1の下位の章は、仮想マシンモニターのタイマーが、根底にあるプロセッサーに保護エージェントの特権モードを追加する一例示の方法を説明し、「仮想マシンモニターに対する保護要求」と題される。次に「保護エージェントの仮想プロセッサー」と題される下位の章が続き、保護エージェント特権モードを形成することができる別の方法が説明されるが、この場合、保護エージェントの特権モードで保護エージェントを稼動するように構成されるものを含む多数の仮想プロセッサーが使用される。次に「ツールの例示の使用」と題される章が続き、先に説明したツールの動作中の例を説明する。最後に、「ツールの他の実施形態」と題される章では、種々の他の実施形態、及びツールが動作する方法を説明する。本概要は、これらの章の題名と要約とを含むが、読み手の便宜のために提供されるものであり、請求項又は表題の章の範囲を制限することを意図しない。
例示の動作環境
ツールについて詳細に述べる前に、以下の、例示の動作環境についての検討が提供され、ツールの種々の発明の態様が採用されるいくつかの方法を読み手が理解することを支援する。以下に説明される環境は、ほんの一例を構成するが、ツールの応用を任意の特定の動作環境に限定することを意図しない。他の環境を、請求の主題の精神及び範囲から逸脱することなく使用することができる。例えば、後続の章は、単一の保護エージェントを用いる実施形態を説明するが、多数の保護エージェントを利用することもできる。ある場合には、これらの保護エージェントは、独立に並列して稼動することができる。そのような場合、保護エージェントは、典型的には、それぞれのパーティション内のメモリにアクセスできるだけである。さらに、以下に説明する技術は同時に利用可能である。すなわち、様々な保護エージェントが、同じ動作環境内で様々な技術を利用することができる。
現在の例に戻ると、図1は、そのような一例示の動作環境の全体を100として例示する。この環境はコンピューターデバイス102を含み、それ自身が1つ又は複数のプロセッサー104及びコンピューター可読媒体106を含む。コンピューター可読媒体106は、仮想マシンモニター108(例えば、ハイパーバイザー)を含み、これは1つ又は複数のプロセッサーを多数の仮想プロセッサーに仮想化することが可能である。仮想マシンモニター108は、また、多数の仮想パーティションを有効にすることができる。1つ又は複数の仮想プロセッサーは、各パーティションと関連付けられることが可能で、これらの仮想プロセッサーは、利用可能な物理的プロセッサー上にスケジューリングされる。例示するように、いくつかの実施形態においては、仮想マシンモニターは、第1の仮想パーティション110及び第2の仮想パーティション112を有効にすることができる。以下で詳細に検討するように、これらのパーティションは、オペレーティングシステムの機能を保護エージェントサービスから切り離す働きをすることができる。
また例示するように、コンピューター可読媒体106は、OS(オペレーティングシステム)114及び1つ又は複数のユーザーアプリケーション116をさらに含む。オペレーティングシステム114は、オペレーティングシステムサービス118をユーザーアプリケーション116に提供し、そのアプリケーションをコンピューターデバイス上で稼動することを可能にする。加えて、1つ又は複数のオペレーティングシステムの資源120は、オペレーティングシステム上に存在する。例示の資源は、システムサービスディスパッチテーブル(SSDT)、割り込みディスパッチテーブル(IDT)、グローバル記述子テーブル(GDT)等を含む。また例示するように、オペレーティングシステムは、マルウェア122(すなわち、悪意のあるコード)を含むことができ、これが上記で検討した方法又は他の方法でコンピューターデバイス上にロードされる場合がある。1つ又は複数の保護エージェントは、以下で検討するが、オペレーティングシステムの資源に対してマルウェアにより及ぼされる変化を検出し、その検出に応答して防御の行動をとることができる。エージェントがそのような判断を行うと、保護エージェントは、オペレーティングシステム及び/又はコンピューターデバイスをシャットダウンするか、又は他の対応策をとることができる。
コンピューターデバイス構造について検討してきたが、ここで、根底にある1つ又は複数の物理的プロセッサー104上に存在する、変化する特権モードに注目する。仮想マシンモニター特権モード124は、図1に例示する最も高い特権モードを表す。この特権モードは、全て又はほとんど全てのデバイスの資源及びメモリに対してアクセスすることができる。仮想マシンモニター特権モード124から、仮想マシンモニターは、プロセッサーを指定し、各仮想パーティションのためのメモリの領域へのアクセスを許可することができる。パーティション内で稼動しているオペレーティングシステムは、物理的プロセッサーの全ての資源を制御しているとするであろうが、実際は、仮想マシンモニターにより判断される一部分を制御しているだけである。
仮想マシンモニター特権モードより特権が低いオペレーティングシステム特権モード126は、全てのオペレーティングシステムの資源120、及び、ほとんど又は全てのオペレーティングシステムのメモリに対するアクセスを有する。この特権モードは、しかしながら、第2の仮想パーティション112等の他のパーティションに関連する資源又はメモリへのアクセスを有さない。それにもかかわらず、この特権モードは一般に全てのオペレーティングシステムのメモリに対するアクセスを有するため、「特権モード」と呼ばれることがある。「リング0」、「スーパーバイザーモード」又は「カーネルモード」もまた、この特権モードを表現する。上記で検討したように、オペレーティングシステム特権モード126内で動作するユーザーアプリケーションは、一般に、仮想マシンモニターモードに対して予約される命令を除いて、プロセッサーにより与えられるほとんどの命令を実行することができる。
このオペレーティングシステム特権モードは、ユーザー特権モード128と対比されて、「非特権モード」、「リング3」又は単に「ユーザーモード」と呼ばれることがある。また上記で検討したように、ユーザーアプリケーションは、特権モード128から動作しているときは、オペレーティングシステムに関連する特定のメモリにアクセスすること又はそのメモリを改変することができない。一般に、基本の動作を実行するときには、コンピューターデバイス・ユーザーアプリケーションは、このユーザー特権モードで動作する。
上記で検討したモードに加えて、図1は、第2の仮想パーティション特権モード130及び保護エージェント特権モード132もまた例示している。以下で詳細に検討するように、保護エージェント特権モード132は、オペレーティングシステム特権モードがアクセスできない、メモリの一部分へのアクセスを有するが、一方で、仮想マシンモニター特権モードができるようなメモリアクセスを一般に有さない。そのように、この特権モードは、オペレーティングシステム特権モードより特権が高く、仮想マシンモニター特権モードより特権が低い。
また以下に詳細に検討するように、第2の仮想パーティション特権モードは、一般に、第2の仮想パーティション112に関連するメモリへのアクセスを有する。加えて、このモードは、第1の仮想パーティションへのアクセスを有することができる。そのような追加のアクセスにより、例えば、第2の仮想パーティションに存在する保護エージェントが、第1の仮想パーティション及びその対応するオペレーティングシステムに関連するメモリをスキャンすることが可能になる。このモードは、一般に、仮想マシンモニターへのアクセスを有さず、従って仮想マシンモニター特権モードより特権が低い。それにもかかわらず、第2の仮想パーティション特権モードは、さらにオペレーティングシステム特権モードがアクセスできない、メモリの一部分へのアクセスを有する。
その一方、図2は、コンピューターデバイスのメモリの権利200を例示する。この図は従って、図1のモジュールがアクセス可能なメモリの量を表す。例示するように、仮想マシンモニター特権モード124で動作する仮想マシンモニター108は、例示される全てのモジュールの中で最も大きなメモリの権利を有する。実際、仮想マシンモニターは、メモリの一部分202に存在し、唯一、メモリの一部分202へのアクセスを有する。次に、保護エージェント204(例えば、図1に例示する任意の保護エージェント)は、保護エージェント特権モード132で動作し、仮想マシンモニターに対応する部分202以外の全てのメモリへのアクセスを有する。保護エージェントは、しかしながら、メモリの一部分206へのアクセスを有するが、これは保護エージェント自身が存在するメモリの一部分である。
オペレーティングシステム114は、一方、オペレーティングシステム特権モード126で動作し、部分202及び部分206以外の全てのメモリへのアクセスを有する。オペレーティングシステムは、保護エージェントに関連するメモリの一部分206へのアクセスを有さないが、一方、オペレーティングシステム及びその関連する特権モードは、メモリの一部分208へのアクセスを有するのである。このメモリの一部分208は、時にはカーネルメモリ又はオペレーティングシステムの最下位レベルのコンポーネントとして知られ、一般に、図1に示す資源を含む。しかしながら、マルウェアがメモリの一部分208にロードされて動作するとしても、マルウェアは保護エージェントに関連するメモリの一部分206にアクセスすることができない。
最後に、図2は、ユーザーアプリケーション116がメモリの一部分210へのアクセスを有するだけであることを例示している。これらのユーザーアプリケーション及び対応するユーザー特権モードは、オペレーティングシステムの最下位レベルのコンポーネントに関連するメモリの一部分208へのアクセスを有さない。この動作環境を念頭に置いて、以下の4つの章では、保護エージェントを、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にする例示の方法を詳細に説明する。
自律的な保護エージェント
以下の章は、オペレーティングシステム特権モード内で動作するエンティティーによってアクセス不可能なメモリから、1つ又は複数のオペレーティングシステムの資源が変更されたかどうかを判断することが可能なツールについて説明する。上記のように、そのツールは、保護エージェントがオペレーティングシステムのメモリ自身の位置以外の位置に存在することを可能にする。さらに特には、以下の下位の章では、保護エージェントがどのように仮想マシンモニター内又は自律的な仮想パーティション内に存在することができるかを説明する。
仮想マシンモニター保護エージェント
この下位の章では、図1に例示するように、保護エージェント134が、どのように仮想マシンモニター自身の内部に存在することができるかを説明する。オペレーティングシステム特権モードが仮想マシンモニターにアクセスできないため、この位置では、保護エージェントがオペレーティングシステムのメモリ内に置かれる任意のマルウェアから保護される。この位置から動作するために、保護エージェントは、保護エージェント134が監視することができる1つ又は複数のオペレーティングシステムの資源120の識別を受け取る。この識別を、資源識別子136を介して受け取ることができる。例示するように、オペレーティングシステムは、この情報を仮想マシンモニターへのアプリケーションプログラミングインターフェース(API)コールを介して提供することができ、又はそのオペレーティングシステムは、マニフェスト(一覧)138の形式の情報を提供することができる。上記で検討したように、これらの資源は、SSDT、IDT、及びGDTを含むことができる。
保護エージェント134は、資源の識別を受け取ると、保護エージェントサービス140をオペレーティングシステム114まで拡大する。これらの保護エージェントサービスは、一般に、任意の識別された資源が改変されたかどうかを判断することを含む。そのような判断がなされると、保護エージェント又は仮想マシンモニターは、例えば、オペレーティングシステムをシャットダウンすることができる。保護エージェントサービスは、改変不可能である(例えば、「読み出し専用」)とされるどのような資源に対しても不変性を強化することを含むこともできる。
そのようなアーキテクチャーを採用することは、仮想マシンモニターをロード又は初期化することにより始まり、仮想マシンモニターは、1つ又は複数のオペレーティングシステムをホスティングすることが可能である。この例において、仮想マシンモニターは、単一のオペレーティングシステム114をホスティングするが、このオペレーティングシステム114は仮想マシンモニターにロードされた後、自分自身で初期化を開始する。オペレーティングシステムの初期化の間、オペレーティングシステムの最下位レベルのコンポーネント(例えば、カーネル)に関連するメモリの一部分208が最初にロードする。オペレーティングシステムの資源120のあるもの又は全て(例えば、SSDT、GDT、IDT)は、一般に、このメモリの一部分208に存在する。
オペレーティングシステムが初期化する前、又はその間、保護エージェント134は仮想マシンモニター内から稼動を開始することができる。上記で検討したように、保護エージェントは、一般に、1つ又は複数のオペレーティングシステムの資源の組の識別を受け取り、1つ又は複数の識別された資源が改変されたかどうかを判断する。各々の識別された資源は多くの場合、多数の位置に多数のコンポーネントを含み、保護エージェントは、資源全体を完全に保護するために各コンポーネントを監視することができることに留意すべきである。例えば、マニフェストが、SSDTを監視かつ保護すべき資源として識別すると、保護エージェントは、実際のテーブルだけでなく、SSDTの他のコンポーネントも保護する。例えば、保護エージェントは、また、テーブルの位置を指し示すレジスターを監視及びスキャンすることができる。さらに、保護エージェントは、SSDTの仮想アドレスを物理アドレスに変換するメモリ変換のデータ構造(例えば、ページテーブル)を監視することもできる。保護エージェントがそれをできないと、悪意のあるコードは、様々なページのテーブルマッピングで別のテーブルを作成することができる(すなわち、SSDT自身をバイパスする)。
識別に加えて、保護エージェントは、対応する資源をどのように保護するかについて保護エージェントに命令する保護属性を受け取ることもできる。例えば、保護エージェントは、SSDT資源の識別、及び、「読み出し専用」の対応する保護属性を受け取ることができる。保護エージェントは、従って、SSDTが読み出し専用であるべきこと、及び、そのことにより改変されるべきではないことを知る。「初期後読み出し専用(Init read−only)」は、他の考えられる保護属性であり、対応する資源は、初期化の間に1回書き込むことができ、その後は読み出し専用であるべきことを保護エージェントに命令する。
保護エージェントは、資源及び資源の保護属性のこの識別を、積極的にも受動的にも多数の方法で受け取ることができる。例えば、オペレーティングシステムは、保護エージェントが監視することができる資源を識別する、デジタル署名されたマニフェストを提供することができる。このデジタル署名されたマニフェストは、メモリの一部分208の対応する位置に資源をマッピングする、名称(例えば、SSDT、IDT、GDT等)によって、又はアドレスによってなど多数の方法で、資源を識別することができる。後者の例において、マニフェストは、資源のゲストの物理アドレス、資源のゲストの仮想アドレス、又は資源のシステムの物理アドレスを識別することができる。いくつかの例において、ゲストの物理アドレスは、対応する資源コンポーネントの実際の物理的位置を発見するために、実際のシステムの物理アドレスにマッピングすることができる。
仮想マシンモニター又は保護エージェントがマニフェストを受け取った後、これらのコンポーネントは、マニフェストが改ざん又は変更されたかどうかを判断することができる。仮想マシンモニター又は保護エージェントがそのような判断をすると、仮想マシンモニター又は保護エージェントは、オペレーティングシステムの開始を行わないという選択をすることができる。加えて、資源のリストに関連する暗号化が無効にされ、こうしてそのセキュリティを保護することができる。
マニフェストに加えて、又はその代替として、保護エージェントは、資源及び保護属性の識別を仮想マシンモニターへの1つ又は複数のアプリケーションプログラミングインターフェース(API)コール(例えば、「ハイパーコール」)を介して受け取ることができる。オペレーティングシステムが初期化するときに、オペレーティングシステム(及び、おそらくオペレーティングシステム208の最下位レベルのコンポーネント)は、監視又は保護することができる特定の資源の保護エージェントを通知する仮想マシンモニターにハイパーコールを行うことができる。これらのハイパーコールは、上記で検討したのと同じ方法で、関連資源を識別することができる。また、上記で検討したように、これらのハイパーコールは、資源の保護属性も識別することができる。
デジタル署名されたマニフェスト及び1つ又は複数のハイパーコールを利用する実施形態において、保護エージェントは、最初に、オペレーティングシステムがブートする前又はその間に、マニフェスト内で識別される資源をスキャンすることができる。この初期スキャンの後、オペレーティングシステムは、次に、保護エージェントに命令する仮想マシンモニターへのハイパーコールを行い、ハイパーコール識別されるページが改変されたかどうかを判断することができる。このように、マニフェストは、オペレーティングシステムのブート毎に資源を識別してスキャンし、一方で、ハイパーコールは、それぞれの初期化時に資源を識別して動的にスキャンする。
監視すべき資源を識別すると、保護エージェントは、次に、資源(例えば、上記で検討したSSDTの全ての部分)が改変されたか否かを判断する。保護エージェントは、識別された資源に対する不変性を強化することもできる。例えば、保護エージェントは、「読み出し専用」に指定される任意の資源が「書き込み可能」に変わらないことを確実にすることができる。
資源をこのように監視及び保護するために、仮想マシンモニター内で実行するコードは、仮想マシン・モニター・インターセプト・マネージャー(例えば、図1のマネージャー146)を採用することができる。そのように命令されると、このインターセプトマネージャーを、識別された資源の種々のコンポーネント上でインターセプトするために登録することができる。この登録によって、仮想マシンモニター内の保護エージェントは、これらの識別された資源にアクセス又はその資源を変更しようとする企てがなされると、今度はインターセプトを受け取ることができる。そのようにして、保護エージェントは、識別された資源の種々のコンポーネントを検査及びスキャンすることができる。保護エージェントは、これらの資源を変更しようとする企てを積極的に阻止することもできる。
いくつかの実施形態において、保護エージェントは、資源をスキャンし、将来のスキャンの結果の比較に使用するために資源の初期状態を判断する。他の実施形態において、保護エージェントは、既に、将来のスキャンの結果の比較のための資源の初期状態を知っている。任意の事象において、保護エージェントは、この初期状態のハッシュ値又はチェックサム値を計算することができる。この計算の後、保護エージェントは、オペレーティングシステムのブート前、後又はその間に、資源をスキャンする。スキャン後、保護エージェントは、結果のハッシュ値又はチェックサム値を計算し、これを初期状態のハッシュ値又はチェックサム値と比較する。等しければ、保護エージェントは、対応する資源が改変されていないと判断する。もちろん、保護エージェントは、ハッシュ値又はチェックサム値をバイパスし、代わりに直接初期状態とスキャンを比較しても良い。
しかしながら、値が異なる場合、保護エージェント及び/又は仮想マシンモニターは、1つ又は複数に対応する行動をとることができる。最初に、保護エージェント自身が、オペレーティングシステム又はオペレーティングシステム特権モードをシャットダウンするか、又は、仮想マシンモニターにそうするように命令することができる。また、保護エージェントが仮想マシンモニターに存在するので、又は仮想マシンモニターがオペレーティングシステムをホスティングするので、これらの2つのコンポーネントは、オペレーティングシステムをそのようにシャットダウンすることが可能である。さらに、保護エージェントが仮想マシンモニター内に存在するので、オペレーティングシステムのシャットダウンをオペレーティングシステム特権モードからでさえ改ざんすることができない。
オペレーティングシステムのシャットダウンに加えて、保護エージェント及び/又は仮想マシンモニターは、最初に、オペレーティングシステムにシャットダウンが迫っていることを警告することができる。仮想マシンモニターとオペレーティングシステムとの間の通信チャネルにより、そのような通信を可能にすることができる。代替として、保護エージェント及び/又は仮想マシンモニターは、メモリの位置に警告を書き込むこと、又はオペレーティングシステムが監視する事象を信号で伝えることができる。
警告が与えられたか否かに関わらず、オペレーティングシステムのシャットダウンは、突然又は正常のどちらかであり得る。前者の場合、仮想マシンモニターは、異種のハッシュ値又はチェックサム値を察知した直後、単にオペレーティングシステムの電源を突然切ることができる。後者の場合、仮想マシンモニターは、オペレーティングシステムが一定の時間システム自身を適正にシャットダウンすることを可能にすることができる。この時、オペレーティングシステムは、例えば、任意のオープンファイルを閉じ、任意の対応するデータを一度に消去することができる。オペレーティングシステムは、割り当てられた資源を解放することもできる。さらに、シャットダウンは両方のアプローチを利用することができる。例えば、多数のパーティションをホスティングする場合、仮想マシンモニターは、異種のハッシュ値又はチェックサム値を有するパーティションを突然シャットダウンすることができる一方で、他のパーティションが適正にシャットダウンする時間を許容する。任意の事象において、シャットダウンの方法は、規定により設定することができ、調整可能である。
シャットダウン及び対応する警告に加えて、保護エージェント及び/又は仮想マシンモニターは、識別された資源の無許可の改変に応じて、ブート後の行動をとることができる。例えば、仮想マシンモニター及び/又は保護エージェントは、オペレーティングシステムのリブート時、オペレーティングシステムに資源の改変を通知することができる。それに応じて、オペレーティングシステムは、アンチウィルススキャンを実行して、任意のマルウェアが部分208(例えば、カーネル)等のオペレーティングシステムのメモリ内に実際に存在するかどうかを検出することができる。さらに、仮想マシンモニターは、オペレーティングシステムをブートしてセーフモードにするか、又はオペレーティングシステム自身がブートしてセーフモードにすることを選択することができる。また、その通知に応じて、オペレーティングシステムは自分自身が攻撃されたと認識し、そのため、接続する任意のネットワークに自分自身がアクセスすることを可能にできないようにする。
仮想パーティションの保護エージェント
仮想マシンモニター自身の内部に存在する代わりに、保護エージェント(例えば、図1の保護エージェント142)が、別個の仮想パーティション(例えば、図1の第2の仮想パーティション112)に存在することができる。これらの実施形態において、この別個のパーティションは、仮想マシンモニターの信頼されたデリゲート(delegate)として行動する。保護エージェント142は、従って、オペレーティングシステム特権モードからはアクセス不可能である。上記で検討したように、仮想マシンモニター108は、コンピューターデバイス102のそのような仮想化の準備を行う。仮想マシンモニターがコンピューターデバイスを任意の数のパーティションに仮想化することができる一方で、図1は、オペレーティングシステムをホスティングする第1のパーティションと保護エージェントをホスティングする第2のパーティションとを例示する。保護エージェントが存在する第2の仮想パーティションは、ある場合には、その主要な機能又は唯一の機能が保護エージェントを稼動することである、デリゲートされたセキュリティパーティションとすることができる。他の実施形態において、この第2の仮想パーティションは、別のオペレーティングシステムをホスティングする等の追加の機能を実行することができる。
第2の仮想パーティション内に存在する保護エージェント142は、仮想マシンモニター内に存在する保護エージェント134に関して上記で説明したような多くの又は全ての同様の機能を実行することが可能である。すなわち、保護エージェント142は、積極的又は受動的に、1つ又は複数のオペレーティングシステムの資源120の識別を受け取ることができる。識別に応答して、保護エージェントは保護エージェントサービス140を拡大することができ、この保護エージェントサービス140は、一般に、1つ又は複数の識別された資源が改変されたか否かを判断することを含み、改変されたと判断した場合、対応する行動をとる。これらのサービスは、特定の資源の不変性を強化することも含むことができる。保護エージェント142は、これらの機能を、上記で説明したものと同様の技術を介して実行することができる。
例示するように、保護エージェント142は、第2の仮想パーティション特権モード130からアクセス可能であるが、オペレーティングシステム特権モード126からはアクセス不可能である。その上で、その結果としてのアーキテクチャーは、マルウェアがオペレーティングシステムの最下位レベルのコンポーネントに関連するメモリの一部分208内に存在する場合でも、保護エージェント自身を、そのオペレーティングシステム内に存在する任意のマルウェアから保護することができる。
自律的な保護エージェント特権モード
この章では、保護エージェントに関連するオペレーティングシステムのメモリの一部分を、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にすることが可能な一方で、このメモリの一部分をオペレーティングシステムの物理的メモリ空間に物理的に存在させたままにすることを可能にする、ツールについて説明する。これらのツールは、従って、保護エージェントに関連するメモリの一部分、同様に、オペレーティングシステム特権モード内でアクセス可能なメモリの残りの部分にもアクセスできる、自律的な保護エージェント特権モードを形成する。この特権モードは、従って、オペレーティングシステム特権モードより特権が高い。
第1の下位の章では、仮想マシンモニターにより保護エージェントに関連するメモリの一部分が保護されることを要求することによって、保護エージェント特権モードを形成することが可能なツールについて説明する。一方、第2の下位の章では、保護エージェントを稼動するデリゲートされた仮想プロセッサーを含む多数の仮想プロセッサーに、物理的なプロセッサーを仮想化することによって、保護エージェント特権モードの形成を可能にするツールについて説明する。
仮想マシンモニターに対する保護要求
この下位の章では、保護エージェントがどのように仮想マシンモニターに要求して、保護エージェントに関連するメモリを保護することができるか、またその上でどのように保護エージェント自身を保護することができるか、について説明する。この保護の結果、図1に例示するように、保護エージェント144が保護エージェント特権モード132で動作することになる。例示するように、保護エージェント144は、保護エージェント特権モードに移動する前、最初はオペレーティングシステム特権モード内に存在することができる。この後者の保護エージェントの特権モードでの動作時は、保護エージェントは、一般に、オペレーティングシステム特権モード126で動作するエンティティーからの攻撃には影響されない。
保護エージェント特権モード132での動作時は、エンティティーはオペレーティングシステム特権モード126で動作する場合よりもわずかに高い特権を有するが、まだ仮想マシンモニター特権モード124よりも特権が低い。図2に例示するように、この仮想マシンモニター特権モードで動作する保護エージェントは、保護エージェント自身に関連するメモリの一部分206に加えて、オペレーティングシステムに関連するメモリの全てへのアクセスを有する。仮想マシンモニター108は、追加の保護エージェントのアクセス可能性を強化する。
図3及び図4は、この保護エージェント特権モードを形成する例示の方法を示す。図3は、全ての又はほとんど全てのコンピューターデバイスメモリ300を表す。コンピューターデバイスメモリ300は、オペレーティングシステム特権モード(例えば、カーネル)に関連するメモリの一部分302と、ユーザー特権モードに関連するメモリの一部分304と、を含む。メモリの一部分302は、また、例示するように、保護エージェント144に関連するメモリの一部分306、及びドライバーがロードされるメモリの一部分308を含む。
図4に例示するように、保護エージェント特権モード132を形成するプロセス400は、行動1でメモリの一部分302(例えば、カーネル)を初期化することにより開始される。行動2で、メモリの一部分306又は保護エージェント144自身が仮想マシンモニター108を呼び出して、仮想マシンモニターにより保護エージェントに関連するメモリの一部分が保護されることを要求する。そのように要求する際に、保護エージェント又は対応するメモリは、オペレーティングシステム特権モード内で稼動しているコードがメモリの一部分306を改変すること、又はメモリの一部分306に接触することを許可されないことを求める。保護エージェントは、自身を(例えば、デジタル署名により)仮想マシンモニター108に対して検証することもできる。このメモリの一部分、又は保護エージェント自身は、仮想マシンモニターがタイマーを設定し、タイマーの時間が来ると保護エージェントを稼動することを要求することもできる。行動3は、仮想マシンモニターがメモリをオペレーティングシステム特権モード内で動作するエンティティーから保護し、要求に応じてタイマーを設定することを表す。保護エージェントに関連するこのメモリの一部分306が、今度はオペレーティングシステム特権モードから改変不可能及び/又はアクセス不可能であるので、保護エージェントが保護エージェント特権モードに存在することになるということに留意されたい。
行動4において、ドライバーがメモリ308内にロードされる。マルウェアがドライバーの形式で存在することができるため、行動2の要求及び行動3の対応する保護は、一般に、ドライバーがメモリにロードされる前に起こる。「ツールの例示の使用」の章で検討したように、マルウェアの製作者は、しばしば、ユーザーをだまして悪意のあるドライバーをコンピューターデバイスにインストールする。メモリの一部分306が保護される前に、1つ又は複数の悪意のあるドライバーが実際にメモリ内にロードされると、悪意のあるドライバーは、保護そのものに対する要求全体を潜在的にパッチすることができる。そのようなパッチは、それによって仮想マシンモニターを介する保護エージェントの周期的な稼動を、従って保護エージェント特権モードの形成を遅らせる。しかしながら、仮想マシンモニターがタイマーを早く設定するよう要求することによって、このプロセスは、オペレーティングシステム特権モード内のコードが保護エージェントの周期的な稼動を不能にすることができないことを確実にする。
一方、行動5は、ドライバーがロードされた後に起こりやすい。例示するように、行動5は、仮想マシンモニターのタイマーの時間が来たこと、及び、従って保護エージェントの稼動を表す。稼動時、保護エージェント144は、先行する章で検討した機能と同様の又は同一の機能を実行する。また上記で検討したように、保護エージェントは、1つ又は複数の識別された資源が改変されたという判定に応答して行動をとることができる。保護エージェントは、オペレーティングシステム特権モード内で動作するエンティティーから、企てられたアクセス又は保護エージェントの改変又はその対応するメモリに応答して、そのような行動をとることもできる。
行動6は、稼動を終了するときに、保護エージェントが仮想マシンモニターに通知することを表す。最後に、行動7は、行動3、5、及び6が繰り返されることを表す。そのように、仮想マシンモニターは、そのタイマーをリセットし、保護エージェントを、100ms(ミリ秒)等の周期的な時間間隔で稼動することができる。
仮想マシンモニターでフェイルセーフタイマーを設定することにより、プロセス400は、保護エージェントに関連するメモリの一部分を改ざんするオペレーティングシステムコードの能力を除去する。そのように、この処理は保護エージェントが稼動を継続するか、又はオペレーティングシステム特権モード内で活動するマルウェアにより全体をパッチされないことを確実にする。代わりに、保護エージェントは、オペレーティングシステムに割り当てられた物理的なメモリ内に存在する間、自律的な特権モード内で稼動することになる。
保護エージェントの仮想プロセッサー
この下位の章では、仮想プロセッサーに保護エージェント144を稼動するようにスケジューリングすることにより、仮想マシンモニターがどのように保護エージェント特権モードを形成することができるかについて説明する。図5は、コンピューターデバイス102を、それぞれがオペレーティングシステムを含む2つのパーティションに仮想化する仮想マシンモニター108を含むアーキテクチャー500を例示する。例示するように、本例のコンピューターデバイスは、2つの現実のプロセッサー104(a)及び104(b)を含み、それぞれに対して仮想プロセッサーが多数の仮想プロセッサーをスケジューリングすることができる。また例示するように、仮想マシンモニターは、第1の仮想パーティション502及び第2の仮想パーティション504を作成する。第1の仮想パーティションは、第1のオペレーティングシステムを稼動する第1の仮想プロセッサー506を含む。同様に、第2の仮想パーティションは、第2のオペレーティングシステムを稼動する第2の仮想プロセッサー508を含む。しかしながら、この例においては、仮想マシンモニターは、図1の保護エージェント144等の保護エージェントを稼動する保護エージェントの仮想プロセッサー510も含む。
アーキテクチャー500を作成するために、仮想マシンモニターは最初にロードされ、初期化を行う。図6に例示するように、次に、仮想マシンモニターは種々の仮想プロセッサーを仮想化し、そうする際に現実のプロセッサーの帯域幅600を割り当てる。この仮想化及び割り当てを始めるために、仮想マシンモニターは、第1の仮想プロセッサーを第1の現実のプロセッサー上に仮想化する。この例において、この仮想化は、図6に例示するように1対1で行われる。すなわち、この1つの仮想プロセッサー506のみが現実のプロセッサー104(a)に対応し、そのように、仮想マシンモニターが全ての現実のプロセッサーの帯域幅をこの仮想プロセッサーに割り当てる。次に、仮想マシンモニターは第2の仮想プロセッサー508を、第2の現実のプロセッサー104(b)上に仮想化する。しかしながら、1対1の代わりに、仮想マシンモニターは、第2の現実のプロセッサーの帯域幅のある部分を保持する。次に、仮想マシンモニターは図6にも例示するように、保護エージェントの仮想プロセッサー510を第2の現実のプロセッサー104(b)の残りの帯域幅上に仮想化する。
第2の現実のプロセッサー上で動作する各仮想プロセッサーは、一般に、タイムスライス(time-sliced)で行動する。すなわち、第2の仮想プロセッサーは、第2の仮想プロセッサーの動作が中断する前に、第2の現実のプロセッサー上で、ある程度の時間動作できる。この時点で、第2の現実のプロセッサーは、別のある程度の時間は保護エージェントの仮想プロセッサーの動作に切り替わる。例えば、第2の仮想プロセッサーは、第2の現実のプロセッサー上で90ms間動作することができ、この時点で、この第2の仮想プロセッサーの動作が中断し、保護エージェントの仮想プロセッサーの動作が10ms間始まる。一般に、保護エージェントの仮想プロセッサーは、両オペレーティングシステムパーティション及び両第1と第2の仮想プロセッサーに対して透過的である。そのようなものとして、両オペレーティングシステムは、その対応する仮想プロセッサーがそれぞれの現実のプロセッサーと対応するとしている。
現実のプロセッサーの帯域幅を割り当てることに加えて、仮想マシンモニターは、各仮想プロセッサーがアクセスすることができるメモリの一部分も管理する。この例において、第1の仮想プロセッサーは、第1のオペレーティングシステムに関連する全てのメモリにアクセスすることができる。一方、第2の仮想プロセッサーは、保護エージェントに関連するメモリの一部分を除く、第2のオペレーティングシステムに関連する全てのメモリにアクセスすることができる。保護エージェントの仮想プロセッサーだけが、第2のオペレーティングシステムに割り当てられたメモリに加えて、保護エージェントに関連するメモリの一部分へのアクセスを有する。
さらに、第1及び第2の仮想プロセッサーのみが、それらの関連するメモリを改変する能力を有する。その上で、それぞれのオペレーティングシステムを動作する両仮想プロセッサーは、保護エージェントに関連するメモリの一部分を改変することはできない。しかしながら、保護エージェントの仮想プロセッサーは、保護エージェントに関連するメモリを改変することができ、いくつかの実施形態においては、第2の仮想プロセッサーに関連するメモリを同様に改変することができる。
そのプログラムされた性質上、保護エージェントの仮想プロセッサーは、周期的に保護エージェントを稼動することになる。いくつかの例において、保護エージェントの仮想プロセッサーは、他のアプリケーションを稼動することができるが、この例ではデリゲートされた保護エージェントの仮想プロセッサーを例示している。そのように、この仮想プロセッサーは、一般に、保護エージェントを周期的に稼動する働きをするのみである。この場合も、保護エージェントは、上述した保護エージェントのように、同様の又は同一の機能を、同様の又は同一の方法で稼動することができる。
デリゲートされた保護エージェントの仮想プロセッサーをスケジューリングすることにより、仮想マシンモニターは、保護エージェントがこのプロセッサーの制御下で、かつ自律的な保護エージェント特権モードで、周期的に稼動することを確実にする。さらに、この保護エージェントの仮想プロセッサーのみが、保護エージェントに関連するメモリの一部分へアクセスを有するため、仮想マシンモニターはこのメモリをオペレーティングシステム内のコードから保護する。従って、オペレーティングシステム特権モード内で動作するマルウェアは、保護エージェント全体をパッチすることは不可能であり、保護エージェントが稼動するのを阻止することは不可能である。そのように、この技術は、保護エージェントを改ざんするオペレーティングシステムの能力を本質的に除去するものである。
ツールの使用例
保護エージェントの保護を確実にすることが可能なツールについて先に説明したが、以下の章では、動作中のこれらのツールのほんの一例を説明する。最初に、コンピューターのユーザーがインターネットサーフィンを行っており、あるウェブサイトを見ている際に、悪意のあるダイアログボックスがユーザーのディスプレイにポップアップする場合を考えてみる。ダイアログボックスは、ある種のマルウェアをユーザーのコンピューター上にインストールするための、ユーザーからの許可を要求する。この要求は直接的な場合があるが、ダイアログボックスが、典型的な事例であるかのように偽装しているとする。例えば、このダイアログボックスは、偽って、ユーザーが賞金を獲得したとユーザーに通知することができる。そのように通知する際、ダイアログボックスは、賞金を受け取るためにダイアログボックスの「OK」ボタンをクリックするように、悪意を持ってユーザーに命令する。コンピューターデバイス上で稼動するソフトウェア(例えば、アンチウィルスアプリケーション)からの1つ又は複数の警告にもかかわらず、ユーザーが実際にOKボタンを選択し、要求される動作をユーザーが継続することを選択する場合を考えてみよう。
この時点で、コンピューターデバイスは、マルウェアを含むドライバーのインストールを開始する。一般にドライバーには当てはまることであるが、この悪意のあるドライバーは、オペレーティングシステム特権モードへのアクセスを許可され、この特権モード(例えば、カーネル)に関連するメモリにロードされる。カーネルにロードされると、悪意のあるドライバー及びそれに伴うマルウェアは、本質的にコンピューターのメモリ及びオペレーティングシステムに自由裁量なアクセスを有する。ユーザーにとっては残念ながら、このマルウェアが、ユーザーのキー・ストロークのログをとるキー・ロガーを含むとする。ここで、ユーザーが自分の銀行のウェブサイトへ進み、自分の銀行口座にサインインするとする。キー・ストロークのログをとるその能力により、キー・ロガーはユーザーの銀行口座のパスワードを学習し、このパスワードをインターネットを介して悪意のあるドライバーの製作者へ送出する。
状況をより悪くすることとして、マルウェアが「ルートキット」、すなわち保護エージェント及びユーザーのアンチウィルスソフトウェアから能動的に隠れようと企てるマルウェアであるとする。従来のシステムにおいては、保護エージェントは、カーネル内(すなわち、悪意のあるドライバーがアクセスできるメモリ内)に存在する。従って、これらの従来のシステムにおいて、マルウェアは、保護エージェントへのアクセスを有し、保護エージェントから自分自身を隠そうと企てることができる。それに成功すると、マルウェアが、カーネル内には存在しないかのように保護エージェントには見えるであろう。従って、ユーザーのアンチウィルスソフトウェアが保護エージェントを呼び出し、コンピューターのメモリに存在する全てのアプリケーションの一覧を要求すると、マルウェアは存在しないであろう。このマルウェアが存在しないということにより、マルウェアを認知し、除去するアンチウィルスソフトウェアは効果が無くなる。さらに、マルウェアは、保護エージェント全体をパッチすることができ、それによって、保護エージェントの稼動が完全に阻止される。そのように、保護エージェントは、マルウェアがどのオペレーティングシステムの資源を改変するかどうかを通知することができない。
しかしながら、従来のシステムのようにカーネル内に存在する代わりに、ユーザーのコンピューターデバイス上の保護エージェントが、オペレーティングシステム特権モードからはアクセス不可能なメモリ内に存在するか、又はオペレーティングシステム特権モードからはアクセス不可能なモードで稼動する場合を考える。それによると、悪意のあるドライバーがカーネル内にロードされると、保護エージェントが存在するメモリか、又は保護エージェントが稼動するモードへのアクセスを有さない。それ故に、ドライバー及びそれに伴うマルウェアは、保護エージェント自身へのアクセスを有さない。従って、マルウェアは保護エージェントから自分自身を隠すことは不可能であり、それ故、アンチウィルスソフトウェアからも同様である。この結果、アンチウィルスソフトウェアがコンピューターのメモリ内に存在する全てのアプリケーションの一覧を保護エージェントに求めるとき、返される一覧にはマルウェアは含む。次に、アンチウィルスソフトウェアは、このコードがマルウェアであることを認識し、それに応じてユーザーのコンピューターデバイスからそれを除去する。さらに、保護エージェントは、マルウェアがオペレーティングシステムの資源を改変するかどうかを自分自身に通知することができ、それに応答して、ユーザーのコンピューターデバイスをシャットダウンすることができる。
従って、オペレーティングシステム特権モードからアクセス不可能なメモリに存在すること、又はオペレーティングシステム特権モードからアクセス不可能なモードで稼動することにより、本明細書に説明される実施形態は、マルウェアが自分自身を隠すこと、又は保護エージェント全体をパッチすることを阻止する。上記の例において、ユーザーのコンピューターデバイスは、従って、マルウェアをマシンから除去し、ある例においては、マルウェアが重要な資源を改変すると、システムをシャットダウンすることが可能である。どちらの場合においても、これらの実施形態は、害を及ぼそうとするマルウェアの有効性を減少する働きをする。
ツールの他の実施形態
上記の章では、保護エージェントを、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にするいくつかの特定の例が説明されている。この章においては、特権モードを根底にあるプロセッサー上に存在しないプロセッサーに追加する等のツールの他の実施形態について説明される。
これらの例示の実施形態は、図7から図11のプロセス700から1100の一部として説明される。これらのプロセスは、図1から図6を参照して説明又は例示した例示のプロセスと同様に、任意の適切なハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せにおいて実装することができる。ソフトウェア及びファームウェアの場合、これらのプロセスは、コンピューター可読媒体に記憶される、及び1つ又は複数のプロセッサーにより実行可能であるコンピューター実行可能命令として実装される動作の組を表す。この章に説明されるツールのこれらの実施形態は、ツール又は請求項の範囲に限定されることを意図しない。
図7を参照すると、ブロック702は、1つ又は複数のオペレーティングシステムの資源を識別する実施方針を受け取る。この実施方針は、暗号化されたデータを含むことができ、デジタル署名されたマニフェストを介して、又はアプリケーションプログラムインターフェース(API)をオペレーティングシステム(例えば、ハイパーコール)に対して露出することにより、受け取ることができる。ブロック704は、オペレーティングシステム特権モード内で動作するエンティティーからではアクセス不可能なメモリから、1つ又は複数のオペレーティングシステムの資源を識別する。例示の資源は、システムサービスディスパッチテーブル(SSDT)、割り込みディスパッチテーブル(IDT)、及び/又はグローバル記述子テーブル(GDT)を含む。上記で説明したように、この識別は、仮想マシンモニター内で(例えば、図1の保護エージェント134により)、又は別個の仮想パーティション内で(例えば、図1の保護エージェント142により)起こることができる。
一方、ブロック706は、任意の識別された資源が改変されたかどうかを判断することを表す。この場合も、これは、仮想マシンモニター内、又は別個のパーティション内で起こることができる。ブロック706が、1つ又は複数の識別された資源が実際に改変されたと判断すると、ブロック708が、この判断に応答してオペレーティングシステムを終了する。最後に、ブロック710が、オペレーティングシステムのリブート時に、オペレーティングシステムに不正な動作について通知する。
図8は、保護エージェントが仮想マシンモニター内で稼動することを可能にするプロセス800を例示する。ブロック802は、仮想マシン・モニター・インターセプト・マネージャーを効果的に改変して、オペレーティングシステムの資源に関連するメモリのページ又はレジスターが改変されたという表示の受け取りを可能にする。この資源は、図7を参照して説明した資源のうちの1つを含むことができるか、又は別のオペレーティングシステムの資源とすることができる。任意の事象において、ブロック804は、オペレーティングシステムの資源、及び場合によっては1つ又は複数の他のオペレーティングシステムの資源を識別する実施方針を受け取る。その場合も、この識別は、上記で検討した技術を介して行うことができる。上述したように、資源の保護属性(例えば、「読み出し専用」又は「初期後読み出し専用」)は、資源の識別に付随することができる。一方、ブロック806は、オペレーティングシステムの資源に関連するメモリページ、又はレジスターが実際に改変されたという表示の受け取りを表す。それに応じて、ブロック808は、オペレーティングシステム特権モードを効果的にシャットダウンして、オペレーティングシステムの資源に関連するオペレーティングシステムをシャットダウンする。いくつかの例において、図1の仮想マシンモニター108が、オペレーティングシステム特権モードのこのシャットダウンを遂行することができる。
次に、図9は、図1に例示する保護エージェント特権モード132等の、保護エージェント特権モードを形成する例示のプロセス900を説明する。ブロック902は、特定のメモリ領域をオペレーティングシステム特権モードから改変不可能又はアクセス不可能にするという要求を受け取る。その場合も、仮想マシンモニターは、メモリ自身の領域から又はメモリの領域に存在する保護エージェントから生じることができるこの要求を受け取ることができる。ブロック904は、メモリの領域を保護し、タイマーを設定してメモリの領域に存在する保護エージェントを周期的に稼動する。その場合も、仮想マシンモニターは、そのようなタイマーを設定することができ、そのタイマーは、仮想マシンモニターに命令して保護エージェントを一定間隔で稼動することができる。
一方、ブロック906は、オペレーティングシステムの資源について説明する実施方針を受け取る。その場合も、実施方針及び説明した資源は、上記で検討したものと同様又は同一とすることができる。ブロック908は、保護エージェントを稼動するが、これは仮想マシンモニターにより達成することができる。判定のブロック910は、オペレーティングシステムの資源が改変されたかどうかを問う。その保護エージェントは、上記で詳述した方法で機能することにより、この判断を行うことができる。ブロック910が、改変が起こった、と実際に判断する場合、ブロック912は、オペレーティングシステムをシャットダウンする。しかしながら、そのような判断がなされない場合、ブロック914は、保護エージェントが稼動を終了した、という通知を受け取る。いくつかの例においては、上記で説明したように、保護エージェント自身が、仮想マシンモニターにそのように通知することができる。一方、ブロック916は、保護エージェントを稼動することと保護エージェントを非稼動にすることとの間の循環を表す。最後に、保護エージェントが稼動していない間、仮想マシンモニターが、保護エージェントに関連するメモリ領域の、オペレーティングシステム特権モード内で動作するエンティティーからのアクセスが企てられるのに応じて、オペレーティングシステムをシャットダウンすることができることに留意されたい。
図10は、図1に例示する保護エージェント特権モード132等の、保護エージェント特権モードを形成する別の例示のプロセス1000を示す。ブロック1002は、現実のコンピュータープロセッサーを多数の仮想コンピュータープロセッサーに仮想化する。これらの仮想プロセッサーは、図6に例示するように、1つ又は複数のオペレーティングシステムの仮想プロセッサーを含むことができ、そのそれぞれが所有するオペレーティングシステムのメモリを改変し、現実のプロセッサーの処理帯域幅の一部を使用する特権を有する。仮想プロセッサーは、所有する保護エージェントメモリを改変し、現実のプロセッサーの処理帯域幅の異なる一部を使用する特権を有する少なくとも1つの保護エージェントの仮想プロセッサーを含むことができる。全ての仮想プロセッサーを仮想マシンモニターによりスケジューリングすることができる一方で、保護エージェントの仮想プロセッサーは、オペレーティングシステムの仮想プロセッサーに対して透過的とすることができる。いくつかの場合において、オペレーティングシステムの仮想プロセッサーは、保護エージェントの仮想プロセッサーに割り当てられたメモリを改変することができない。さらに、保護エージェントの仮想プロセッサーは、上記で検討したように、その主要な目的又は唯一の目的が、保護エージェントに実行させることであるデリゲートされたプロセッサーとすることができる。
次に、ブロック1004は、保護エージェントの仮想プロセッサーに保護エージェントを実行させるが、これは前記オペレーティングシステムのメモリが改変されたか否かを判断するのに効果的であり得る。一方、ブロック1006は、オペレーティングシステムのメモリの一部分が改変されたという表示を受け取る。それに応答して、ブロック1008は、対応するオペレーティングシステムをシャットダウンする。
最後に、図11は、特権モードを現実のコンピュータープロセッサーに追加するプロセス1100を示す。ブロック1102は、根底にある物理的プロセッサー上に存在する1つ又は複数の特権モードの判断、識別、又は分類を表す。一般に、これらの特権モードは、根底にある物理的プロセッサー自身により定義される。いずれにせよ、ブロック1104は、根底にある物理的プロセッサー上に存在しない特権モードを追加する。いくつかの場合において、追加された特権モードは、1つ又は複数の存在する特権モードにより改変可能なメモリの一部分とは異なる、コンピューターデバイスのメモリの一部分を改変することが可能である。追加された特権モードは、それまでは根底にあるプロセッサーには存在しなかった、又はそこでは実行不可能であった命令を、追加及び実行することもできる。
さらに、根底にある物理的プロセッサー上に存在する1つ又は複数の特権モードは、ユーザー特権モード及びオペレーティングシステム特権モードを含むことができる。これらの実施形態において、追加された特権モードは、ユーザー特権モード及びオペレーティングシステム特権モードの両方よりも特権が高いか、ユーザー特権モードより特権が高いがオペレーティングシステム特権モードより特権が低いか、又は、ユーザー特権モード及びオペレーティングシステム特権モードの両方より特権が低いものとすることができる。最後に、特権モードを追加する一例は、保護エージェント特権モード(例えば、図1に説明する保護エージェント特権モード132)を、上記で検討した多数の方法で追加することを含むことができることに留意されたい。例えば、保護エージェント又はその関連するメモリ領域は、メモリ領域を、オペレーティングシステム特権モード内で動作するエンティティーからアクセス不可能にする、という要求をなすことができる。仮想マシンモニターは、保護エージェントを稼動するよう保護エージェントの仮想プロセッサーをスケジューリングすることにより、この特権モード形成することもできる。
結論
上述したツールは、保護エージェントがオペレーティングシステム特権モードからアクセス不可能な位置に存在できるようにすることにより、又は、保護エージェント特権モードを形成することのいずれかにより、保護エージェントをオペレーティングシステム特権モードから改変不可能又はアクセス不可能にすることが可能である。ツールは、構造的特徴及び/又は方法論的な行動に特有の言語で説明されたが、添付の請求項に定義されるツールはが必ずしもこの説明された特有の特徴又は行動に限定されないことは理解されるべきである。むしろ、特有の特徴及び行動は、ツールを実装する例示の形式として開示される。

Claims (20)

  1. コンピューター可読命令を自身内に有する1つ又は複数のコンピューター可読媒体であって、コンピューターデバイス(102)により実行されるとき、前記コンピューター可読命令は、コンピューターデバイス(102)に、
    オペレーティングシステム特権モード(126)内で動作するエンティティーによってアクセス不可能なメモリから、オペレーティングシステム(114)の1つ又は複数の資源(120)の組を識別するステップ(704)と、
    前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたかどうかを、前記メモリから判断するステップ(706)と
    を含む行動を実行させることを特徴とするコンピューター可読媒体。
  2. 前記1つ又は複数の資源(120)の組を識別するステップ(704)及び前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたかどうかを判断するステップ(706)は、前記オペレーティングシステム特権モード(126)よりも上位の特権を有する仮想マシンモニター(108)内で起こることを特徴とする請求項1に記載の媒体。
  3. 前記オペレーティングシステム(114)は、複数のパーティションを備える仮想マシンモニター(108)により提供される第1のパーティション(110)で動作し、前記1つ又は複数の資源(120)の組を識別するステップ(704)及び前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたかどうかを判断するステップ(706)は、仮想マシンモニター(108)により提供される第2のパーティション(112)内で起こることを特徴とする請求項1に説明の媒体。
  4. 前記オペレーティングシステム特権モード(126)内で動作するエンティティーによってアクセス不可能な前記メモリにおいて、前記1つ又は複数の資源(120)の組を識別する実施方針を受け取るステップ(702)をさらに含むことを特徴とする請求項1に記載の媒体。
  5. 前記実施方針はデジタル署名されたマニフェスト(138)を含み、デジタル署名されたマニフェスト(138)を受け取るステップ(702)及び前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたかどうかを判断するステップ(706)は、前記オペレーティングシステム(114)がブートする前又はその間に起こることを特徴とする請求項4に記載の媒体。
  6. アプリケーションプログラムインターフェース(API)を前記オペレーティングシステム(114)に対して露出するステップと、APIを介して前記1つ又は複数の資源(120)の1つ又は複数の組の識別を受け取るステップとをさらに含むことを特徴とする請求項1に記載の媒体。
  7. 前記1つ又は複数の資源(120)の組が、システムサービスディスパッチテーブル(SSDT)、割り込みディスパッチテーブル(IDT)、又はグローバル記述子テーブル(GDT)を含むことを特徴とする請求項1に記載の媒体。
  8. 前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたという判断に応答して、前記オペレーティングシステム(114)を終了するステップ(708)をさらに含むことを特徴とする請求項1に記載の媒体。
  9. 前記1つ又は複数の資源(120)の1つ又は複数の組が改変されたという判断に応答して、リブート時に、不正な動作についてオペレーティングシステム(114)に通知するステップ(710)をさらに含むことを特徴とする請求項1に記載の媒体。
  10. 仮想マシン・モニター・インターセプト・マネージャー(146)を効果的に改変して、オペレーティングシステムの資源(120)に関連するメモリのページ又はレジスターが改変されたという表示の受け取りを可能にするステップ(802)と、
    前記オペレーティングシステムの資源(120)に関連するメモリのページ又はレジスターが改変されたという表示を受け取るステップ(806)と、
    オペレーティングシステム特権モード(126)を効果的にシャットダウンして、前記表示の受け取りに応答して、前記オペレーティングシステムの資源(120)に関連するオペレーティングシステム(114)をシャットダウンするステップ(808)とを含むことを特徴とする方法。
  11. 前記オペレーティングシステムの資源(120)は前記メモリのページにおける割り込みディスパッチテーブル(IDT)であり、前記オペレーティングシステムの資源(120)に関連する前記レジスターが、IDTレジスターであることを特徴とする請求項10に記載の方法。
  12. 前記オペレーティングシステムの資源(120)は、システムサービスディスパッチテーブル(SSDT)又はグローバル記述子テーブル(GDT)であることを特徴とする請求項10に記載の方法。
  13. 前記オペレーティングシステム特権モード(126)をシャットダウンするステップ(808)は、仮想マシンモニター(108)により実行されることを特徴とする請求項10に記載の方法。
  14. 前記オペレーティングシステムの資源(120)と、1つ又は複数の追加のオペレーティングシステムの資源(120)とを識別する実施方針を受け取るステップ(804)をさらに含むことを特徴とする請求項10に記載の方法。
  15. 前記実施方針は、前記識別されたオペレーティングシステムの資源(120)のそれぞれに関連する保護属性も記述し、少なくとも1つの前記保護属性は、対応する資源(120)を読み出し専用として記述することを特徴とする請求項14に説明の方法。
  16. 読み出し専用の保護属性に関連する前記資源(120)に対する不変性を強化するステップをさらに含むことを特徴とする請求項15に記載の方法。
  17. オペレーティングシステム特権モード(126)内で動作するように設計された1つ又は複数のオペレーティングシステムの資源(120)を識別することと、前記1つ又は複数のオペレーティングシステムの資源(120)の1つ又は複数が改変されたかどうかを判断すること(706)とを可能にする1つ又は複数のコンピューター可読媒体であって、前記1つ又は複数のコンピューター可読媒体が、前記オペレーティングシステム特権モード(126)内からの攻撃にさらされないことを特徴とする媒体。
  18. 前記1つ又は複数のコンピューター可読媒体が、コンピューターデバイス(102)を1つ又は複数の仮想マシンのパーティションに仮想化することと、前記オペレーティングシステム特権モード(126)に関連するオペレーティングシステム(114)が動作するパーティション(110)を含む前記パーティションをホスティングすることとを可能にする仮想マシンモニター(108)内で動作することを特徴とする請求項17に記載の媒体。
  19. 前記1つ又は複数のコンピューター可読媒体は、仮想マシンモニター(108)を含むコンピューターデバイス(102)上で動作し、前記仮想マシンモニター(108)は、コンピューターデバイス(102)を少なくとも第1の仮想マシンのパーティション(110)と第2の仮想マシンのパーティション(112)とに仮想化し、前記第1の仮想マシンのパーティション(110)と前記第2の仮想マシンのパーティション(112)とをホスティングし、及び前記オペレーティングシステム特権モード(126)に関連するオペレーティングシステム(114)が前記第1のパーティション(110)内に存在し、前記1つ又は複数のコンピューター可読媒体が前記第2のパーティション(112)内に存在することを特徴とする請求項17に記載の媒体。
  20. 前記1つ又は複数のコンピューター可読媒体が、前記1つ又は複数のオペレーティングシステムの資源(120)の1つ又は複数が改変されたという判断に応答して、オペレーティングシステム特権モード(126)に関連するオペレーティングシステム(114)をシャットダウンすること(708)がさらに可能であることを特徴とする請求項17に記載の媒体。
JP2009547246A 2007-01-25 2007-12-19 オペレーティングシステム資源の保護 Pending JP2010517164A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/627,314 US7765374B2 (en) 2007-01-25 2007-01-25 Protecting operating-system resources
PCT/US2007/088219 WO2008091462A1 (en) 2007-01-25 2007-12-19 Protecting operating-system resources

Publications (2)

Publication Number Publication Date
JP2010517164A true JP2010517164A (ja) 2010-05-20
JP2010517164A5 JP2010517164A5 (ja) 2010-12-02

Family

ID=39644773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009547246A Pending JP2010517164A (ja) 2007-01-25 2007-12-19 オペレーティングシステム資源の保護

Country Status (10)

Country Link
US (1) US7765374B2 (ja)
EP (2) EP2106583B1 (ja)
JP (1) JP2010517164A (ja)
KR (1) KR101279683B1 (ja)
CN (1) CN101589365B (ja)
BR (1) BRPI0720700B1 (ja)
CL (1) CL2008000176A1 (ja)
RU (1) RU2462747C2 (ja)
TW (1) TWI470471B (ja)
WO (1) WO2008091462A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015522874A (ja) * 2012-06-08 2015-08-06 クラウドストライク インコーポレイテッド カーネルレベル・セキュリティ・エージェント
JP2017228136A (ja) * 2016-06-23 2017-12-28 日本電気株式会社 処理制御装置、処理制御方法、及び、処理制御プログラム
US9858626B2 (en) 2012-06-29 2018-01-02 Crowdstrike, Inc. Social sharing of security information in a group
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
DE102007030396B4 (de) * 2007-06-29 2014-11-27 Trumpf Werkzeugmaschinen Gmbh + Co. Kg Vorrichtung zur Steuerung einer Maschine sowie Fernkommunikationssystem
CN101334825B (zh) * 2007-06-29 2011-08-24 联想(北京)有限公司 应用程序管理和运行系统及方法
US8607020B2 (en) * 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
JP5166169B2 (ja) * 2008-08-27 2013-03-21 株式会社日立製作所 ハイパバイザを有する計算機システム
US8954897B2 (en) * 2008-08-28 2015-02-10 Microsoft Corporation Protecting a virtual guest machine from attacks by an infected host
US7975034B1 (en) * 2008-10-31 2011-07-05 Symantec Corporation Systems and methods to secure data and hardware through virtualization
US8776028B1 (en) * 2009-04-04 2014-07-08 Parallels IP Holdings GmbH Virtual execution environment for software delivery and feedback
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8955131B2 (en) 2010-01-27 2015-02-10 Mcafee Inc. Method and system for proactive detection of malicious shared libraries via a remote reputation system
US8819826B2 (en) 2010-01-27 2014-08-26 Mcafee, Inc. Method and system for detection of malware that connect to network destinations through cloud scanning and web reputation
US9104872B2 (en) * 2010-01-28 2015-08-11 Bank Of America Corporation Memory whitelisting
US9536089B2 (en) * 2010-09-02 2017-01-03 Mcafee, Inc. Atomic detection and repair of kernel memory
US8082585B1 (en) * 2010-09-13 2011-12-20 Raymond R. Givonetti Protecting computers from malware using a hardware solution that is not alterable by any software
US9032013B2 (en) * 2010-10-29 2015-05-12 Microsoft Technology Licensing, Llc Unified policy over heterogenous device types
US20120144489A1 (en) * 2010-12-07 2012-06-07 Microsoft Corporation Antimalware Protection of Virtual Machines
US8516509B2 (en) * 2011-02-08 2013-08-20 BlueStripe Software, Inc. Methods and computer program products for monitoring system calls using safely removable system function table chaining
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
WO2012135192A2 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8635615B2 (en) 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9529996B2 (en) 2011-10-11 2016-12-27 Citrix Systems, Inc. Controlling mobile device access to enterprise resources
US9280377B2 (en) * 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US9419802B2 (en) * 2011-12-01 2016-08-16 Intel Corporation Secure message filtering to vehicle electronic control units with secure provisioning of message filtering rules
CN102521016A (zh) * 2011-12-08 2012-06-27 中兴通讯股份有限公司 一种运行多个虚拟机的方法及系统
CN102779250B (zh) * 2012-06-29 2016-04-13 腾讯科技(深圳)有限公司 文件可控执行的检测方法及虚拟机
US20140109072A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Application wrapping for application management framework
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9201642B2 (en) * 2013-03-15 2015-12-01 International Business Machines Corporation Extending platform trust during program updates
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9197654B2 (en) * 2013-06-28 2015-11-24 Mcafee, Inc. Rootkit detection by using HW resources to detect inconsistencies in network traffic
GB2515736A (en) 2013-07-01 2015-01-07 Ibm Controlling access to one or more datasets of an operating system in use
FR3012643B1 (fr) * 2013-10-28 2017-03-17 Oberthur Technologies Systeme de detection d'intrusion dans un dispositif comprenant un premier systeme d'exploitation et un deuxieme systeme d'exploitation
US9772953B2 (en) * 2014-02-03 2017-09-26 Samsung Electronics Co., Ltd. Methods and apparatus for protecting operating system data
US10318765B2 (en) * 2014-05-02 2019-06-11 Avago Technologies International Sales Pte. Limited Protecting critical data structures in an embedded hypervisor system
US9760712B2 (en) * 2014-05-23 2017-09-12 Vmware, Inc. Application whitelisting using user identification
US10951655B2 (en) * 2014-09-26 2021-03-16 Oracle International Corporation System and method for dynamic reconfiguration in a multitenant application server environment
RU2585978C2 (ru) * 2014-09-30 2016-06-10 Закрытое акционерное общество "Лаборатория Касперского" Способ вызова системных функций в условиях использования средств защиты ядра операционной системы
US10664593B2 (en) 2015-10-29 2020-05-26 Hewlett-Packard Development Company, L.P. Checking a security value calculated for a part of a program code
RU2624554C1 (ru) * 2016-05-17 2017-07-04 Закрытое акционерное общество "Перспективный мониторинг" Способ обнаружения скрытого программного обеспечения в вычислительной системе, работающей под управлением POSIX-совместимой операционной системы
US20180004931A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Process management
KR102022168B1 (ko) * 2017-12-15 2019-09-18 이방훈 하드웨어 태스크 스위칭을 이용한 은닉 태스크의 감지 방법 및 장치
USD905765S1 (en) 2019-03-07 2020-12-22 Caterpillar Inc. Adapter for a ground engaging machine implement
RU2728504C1 (ru) * 2019-03-29 2020-07-29 Акционерное общество "Лаборатория Касперского" Система и способ поэтапного повышения информационной безопасности элементов технологической системы
US20220156879A1 (en) * 2020-11-18 2022-05-19 Intel Corporation Multi-tile graphics processing unit
US20230092808A1 (en) * 2021-09-17 2023-03-23 Mediatek Inc. Model protection system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263413A (ja) * 2002-03-07 2003-09-19 Fujitsu Ltd データサーバへの不正侵入対処方法、及びプログラム
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
JP2006178936A (ja) * 2004-12-21 2006-07-06 Microsoft Corp 仮想マシンまたは強化オペレーティングシステムなどにおけるコンピュータのセキュリティ管理

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4091447A (en) 1976-07-19 1978-05-23 Union Carbide Corporation Interrupt control system for a microcomputer
DE2744111A1 (de) 1977-09-30 1979-04-05 Siemens Ag Schaltungsanordnung zur eingabe von unterbrechungsbefehlen und ausgabe von unterbrechungsbestaetigungen fuer computer-systeme
US5469556A (en) * 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US7210040B2 (en) * 2000-07-14 2007-04-24 Computer Associates Think, Inc. Detection of suspicious privileged access to restricted computer resources
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
KR100389206B1 (ko) * 2001-04-25 2003-06-27 주식회사 성진씨앤씨 컴퓨터 운영 시스템 보호 방법 및 장치
GB2376761A (en) 2001-06-19 2002-12-24 Hewlett Packard Co An arrangement in which a process is run on a host operating system but may be switched to a guest system if it poses a security risk
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US7793286B2 (en) 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7222062B2 (en) 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US7802250B2 (en) 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US7694121B2 (en) * 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
WO2006014554A2 (en) * 2004-07-07 2006-02-09 University Of Maryland Method and system for monitoring system memory integrity
US7757231B2 (en) 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
JP4400448B2 (ja) * 2004-12-22 2010-01-20 コニカミノルタセンシング株式会社 分光輝度計の校正方法、及び校正システムの動作プログラム
US8533777B2 (en) * 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US8856473B2 (en) * 2005-07-01 2014-10-07 Red Hat, Inc. Computer system protection based on virtualization
AU2006100099A4 (en) * 2006-02-08 2006-03-16 Pc Tools Technology Pty Limited Automated Threat Analysis System
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263413A (ja) * 2002-03-07 2003-09-19 Fujitsu Ltd データサーバへの不正侵入対処方法、及びプログラム
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
JP2006178936A (ja) * 2004-12-21 2006-07-06 Microsoft Corp 仮想マシンまたは強化オペレーティングシステムなどにおけるコンピュータのセキュリティ管理

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015522874A (ja) * 2012-06-08 2015-08-06 クラウドストライク インコーポレイテッド カーネルレベル・セキュリティ・エージェント
US9904784B2 (en) 2012-06-08 2018-02-27 Crowdstrike, Inc. Kernel-level security agent
US10002250B2 (en) 2012-06-08 2018-06-19 Crowdstrike, Inc. Security agent
US10853491B2 (en) 2012-06-08 2020-12-01 Crowdstrike, Inc. Security agent
US9858626B2 (en) 2012-06-29 2018-01-02 Crowdstrike, Inc. Social sharing of security information in a group
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US11340890B2 (en) 2014-03-20 2022-05-24 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
JP2017228136A (ja) * 2016-06-23 2017-12-28 日本電気株式会社 処理制御装置、処理制御方法、及び、処理制御プログラム
US11086986B2 (en) 2016-06-23 2021-08-10 Nec Corporation Processing control apparatus, processing control method, and non-transitory recoding medium
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing

Also Published As

Publication number Publication date
BRPI0720700B1 (pt) 2019-05-21
WO2008091462A1 (en) 2008-07-31
EP2521062B1 (en) 2020-11-04
EP2106583A4 (en) 2012-01-25
EP2106583A1 (en) 2009-10-07
TWI470471B (zh) 2015-01-21
RU2462747C2 (ru) 2012-09-27
KR101279683B1 (ko) 2013-06-27
BRPI0720700A2 (pt) 2014-04-15
US20080183996A1 (en) 2008-07-31
CN101589365B (zh) 2012-07-04
BRPI0720700A8 (pt) 2017-01-17
EP2521062A1 (en) 2012-11-07
US7765374B2 (en) 2010-07-27
TW200842646A (en) 2008-11-01
CN101589365A (zh) 2009-11-25
KR20090107035A (ko) 2009-10-12
CL2008000176A1 (es) 2008-08-01
EP2106583B1 (en) 2015-11-11
RU2009128684A (ru) 2011-01-27

Similar Documents

Publication Publication Date Title
JP5249450B2 (ja) 保護エージェント及び特権モード
JP2010517164A (ja) オペレーティングシステム資源の保護
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
RU2703156C2 (ru) Системы и способы обеспечения компьютерной безопасности, использующие исключения асинхронной интроспекции
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
KR101536486B1 (ko) 오퍼레이팅 시스템(os) 독립 안티-바이러스(av) 스캐너에 대해 강제적 보안 정책을 시행하기 위한 방법 및 장치
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
Suzaki et al. Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101015

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101015

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110228

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110401