JP2017091497A - ハイパーバイザモードにおけるコードの安全な実行システムおよび方法 - Google Patents

ハイパーバイザモードにおけるコードの安全な実行システムおよび方法 Download PDF

Info

Publication number
JP2017091497A
JP2017091497A JP2016093164A JP2016093164A JP2017091497A JP 2017091497 A JP2017091497 A JP 2017091497A JP 2016093164 A JP2016093164 A JP 2016093164A JP 2016093164 A JP2016093164 A JP 2016093164A JP 2017091497 A JP2017091497 A JP 2017091497A
Authority
JP
Japan
Prior art keywords
hypervisor
token
hypercall
trusted program
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016093164A
Other languages
English (en)
Other versions
JP6282305B2 (ja
Inventor
エヌ. ルゴチ ニコレー
N Igotti Nikolay
エヌ. ルゴチ ニコレー
エー. エルショヴ ミハイル
A Ershov Mikhail
エー. エルショヴ ミハイル
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.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2017091497A publication Critical patent/JP2017091497A/ja
Application granted granted Critical
Publication of JP6282305B2 publication Critical patent/JP6282305B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】ハイパーバイザモードにおけるコードの安全な実行システムおよび方法を提供する。【解決手段】保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードし205、ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードし207、ハイパーバイザに対する第1のハイパーコールを信頼できるプログラムによって生成し、第1のハイパーコールに対応し、後のハイパーコールの間に信頼できるプログラムをハイパーバイザによって識別するために用いられるトークンをハイパーバイザによって生成し210、トークンとハイパーバイザのメモリアドレスを格納するためのメモリページを割り当て220、割り当てられたメモリページアドレスを信頼できるプログラムへ返す。【選択図】図2

Description

本開示は、一般的にコンピュータセキュリティの分野に関し、特にハイパーバイザモードにおけるコードの安全な実行システムおよび方法に関する。
コンピュータマルウェア(トロイの木馬、ウイルスやワームなど)の開発のペースは上昇し続けており、ウイルス対策アプリケーションを回避するための多くの方法が用いられている。そのような方法の一つは、コンピュータシステム(ファイルやレジストリブランチなど)の特定のリソースを、アンチウイルスチェックを行うウイルス対策アプリケーションから隠す。ウイルス対策企業の分類によれば、このような方法を利用する悪意あるプログラムは、ルートキットとして、またはルートキット技術を利用するものとして知られている。ルートキット技術は、カーネルレベルで動作するオペレーティングシステム(OS)のコンポーネント中の脆弱性を利用する場合にはより危険となる。今日のウイルス対策アプリケーションは、このような技術を利用する悪意あるプログラムを検出することができない。
このような状況を解決するための一つの方法は、互いに異なるOSを分離、実行中のOS間のリソースの分割、リソースの管理を行うハイパーバイザを使用することである。同時に、ハイパーバイザモードにおけるコードの実行は、カーネルレベルでのコードの実行より低レベルでも起こる。驚くことではないが、ウイルス対策アプリケーションを作成している企業は、このようなアプローチに興味を持っている。しかしながら、現在の解決策は効果がなく、一部のケースでは採用することができない。
ハイパーバイザモードにおけるコードの安全な実行システムおよび方法が開示される。例示的一態様による方法は、工程(A)〜工程(F)を含む。工程(A)では、保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードし、工程(B)では、ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードし、工程(C)では、ハイパーバイザに対する第1のハイパーコールを信頼できるプログラムによって生成し、工程(D)では、第1のハイパーコールに対応し、後のハイパーコールの間に信頼できるプログラムをハイパーバイザによって識別するために用いられるトークンをハイパーバイザによって生成し、工程(E)では、トークンとハイパーバイザのメモリアドレスを格納するためのメモリページを割り当て、工程(F)では、割り当てられたメモリページアドレスを信頼できるプログラムへ返す。
例示的な一態様においては、信頼できるプログラムは、ウイルス対策アプリケーションのコンポーネントである。
例示的な一態様においては、ハイパーバイザをロードする工程(A)は、1つ以上のゲストオペレーションシステムをロードする前にハイパーバイザをロードする工程を含む。
例示的な一態様においては、ハイパーバイザによってトークンを生成する工程(D)は、各ゲストオペレーティングシステムのためのユニークトークンをランダム生成する工程を含む。
例示的な一態様においては、上記方法は、メモリページの上書きを禁止するメモリページのためのセキュリティパラメータを設定する工程(G)をさらに含む。
例示的な一態様においては、上記方法は、工程(H)〜(J)をさらに含み、工程(H)では、ハイパーバイザによって生成される上記トークンを含む第2のハイパーコールを信頼できるプログラムによって生成し、工程(I)では、上記トークンを第2のハイパーコールが信頼できるプログラム由来であるかを確認するためのトークンであるかをハイパーバイザによって検証し、工程(J)では、上記トークンが正しいと確認された場合に、整合性チェックのための1つ以上の保護されたメモリページのハイパーバイザアドレスを信頼できるプログラムによって提供し、工程(K)では、保護されたメモリページの周期的冗長検査をハイパーバイザによって実行する。
例示的な一態様においては、上記方法は、保護されたメモリページの繰り返し周期的冗長検査をハイパーバイザによって設定する工程(L)をさらに含む。
ハイパーバイザの安全な実行のためのシステムの例示的一態様は、ハードウェアプロセッサを備え、該ハードウェアプロセッサは、保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードし、ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードし、ハイパーバイザに対する第1のハイパーコールを信頼できるプログラムによって生成し、第1のハイパーコールに対応し、後のハイパーコールの間に信頼できるプログラムをハイパーバイザによって識別するために用いられるトークンがハイパーバイザによって生成し、トークンとハイパーバイザのメモリアドレスを格納するためのメモリページを割り当て、割り当てられたメモリページアドレスを信頼できるプログラムへ返すように構成されている。
例示的一態様によるハイパーバイザの安全な実行のためのコンピュータ実行可能命令を格納する非一過性の記録媒体は、保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードする命令と、ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードする命令と、ハイパーバイザに対する第1のハイパーコールを信頼できるプログラムによって生成する命令と、第1のハイパーコールに対応し、後のハイパーコールの間に信頼できるプログラムをハイパーバイザによって識別するために用いられるトークンがハイパーバイザによって生成する命令と、トークンとハイパーバイザのメモリアドレスを格納するためのメモリページを割り当てる命令と、割り当てられたメモリページアドレスを信頼できるプログラムへ返す命令とを含む。
例示的態様における上記の簡単な概要は、本開示の基本的な理解を提供するのに役立つ。本概要は、すべての企図される態様の広範な概観ではなく、すべての態様の主要または重大な要素を特定することも意図しておらず、本開示における、任意又は全ての態様の範囲を線引きもしないということが意図される。その唯一の目的は、以下の本開示のより詳細な説明の前置きとして簡略化された形式で1または複数の態様を提示することである。前述の達成のために、本開示の1つまたは複数の態様について、説明され、部分的に特許請求の範囲に示してある特徴を含む。
添付図面は、詳細な説明と共に、本明細書に組み込まれ、その一部を構成し、本開示における1つまたは複数の実施態様を示しており、それらの原理及び実装を説明するのに役立つ。
図1は、ハイパーバイザモードにおける信頼されたコード呼出し機構が実現される例示的システムを示す。 図2は、信頼できるプログラムのためのハイパーバイザコールアドレスを提供する例示的一態様による方法を示す。 図3は、信頼できるプログラムからのコールのためのハイパーバイザアドレスを含むメモリページの例を示す。 図4は、ハイパーバイザを利用したメモリページ保護の例示的一態様による方法を示す。 図5は、本開示のシステム及び方法のいくつかの態様を実施することが可能な手段による汎用コンピュータシステムを示す。
詳細な説明
本開示の例示的な態様は、ハイパーバイザモードにおけるコードの安全な実行のために、システム、方法、及びコンピュータプログラム製品に関連して本明細書に開示される。当業者は、以下の説明は単なる例示であり、決して限定であることを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者にとって、容易に示唆となりえる。参照は、添付の図面に示されるように、現在の例示の態様の実装について詳細に説明するものである。同じ参照指標は、同一または同様の項目を参照するため、図面及び以下の説明の全体を通じて、可能な限り使用される。
ハイパーバイザは、複数のオペレーティングシステム(OS)を同じコンピュータ上で同時実行、並列実行することを可能とするプログラムである。ハイパーバイザには2つのタイプがあり、第1のタイプは独自の組み込みのデバイスドライバとスケジューラを有しているため特定のOSに依存しないが、一方で第2のタイプはメインOS(カーネルモードまたはリング0)のカーネルと同じリングで動作する。第1のタイプのハイパーバイザは、またベアメタルとして知られ、そして本発明におけるハイパーバイザを実現するための好ましい例である。ハイパーバイザモードにおけるコードの実行は、カーネルモードまたはリング0でのコードの実行よりもさらに低いレベルで発生する。
ハイパーバイザモードにおいて実行されるコードの呼出し(ハイパーコール)は、プロセッサの一部に仮想化技術のハードウェアサポートを必要とするハイパーバイザモードにおけるコードの実行(また、単に「実行」と呼ばれる)への移行である。
信頼できるOSは、アクセス権に違反することなく、ユーザーグループが異なる機密度の情報の同時処理を可能にするために適切なハードウェアおよびソフトウェアを使用するオペレーティングシステムである。一般的に、信頼できるOSは、ユーザデータの機密性と完全性を提供可能である。「AGuidetoUnderstandingConfigurationManagementinTrustedSystems(1988)」で高信頼性システムについての詳細を学ぶことができる。
信頼できるコード呼出しは、呼出しが、悪意のあるまたは信頼できないプログラムからの外部コードの呼出しの可能性を除外した信頼できるソース(信頼できるアプリケーションのプロセスに属しているメモリページ)からの呼出しであると保証されている間の外部コードの呼出しである。信頼できるアプリケーションは、実行可能ファイルがデジタル署名を有し、悪意のないプログラムである。
図1は、ハイパーバイザモードにおける信頼されたコード呼出し機構が実現される例示的システムを示す。オペレーティングシステム110は、様々なアプリケーション130を実行し、同様に信頼できるプログラム150および悪意のあるプログラム140も実行する。アプリケーション130は、ブラウザ、ワードプロセッサ、その他の種々のユーザアプリケーションを含む。ウイルス、ワーム、トロイの木馬などの悪意のあるプログラム140は、ウイルス対策アプリケーション(図1に図示せず。しかし、アプリケーション130の一つであってよい。)による検出を回避することを可能とするように、オペレーティングシステムにおいてその存在を隠蔽するさまざまな方法を使用できる(例えば、ルートキット技術を利用する)。この事実は、OS110が信頼できるとはいえず、ユーザデータへの脅威であることを意味する。オペレーティングシステムにおいて悪意あるプログラムの存在を隠蔽する方法について様々な情報源で読むことが可能であり、例えば「https://en.wikipedia.org/wiki/Rootkit」で読める。
悪意のあるプログラム140の存在を検出するため、そして悪意のあるプログラム140のユーザ情報へのアクセスの可能性を回避するため、信頼できるプログラム150およびハイパーバイザ120を用いることができる。信頼できるプログラム150は、セパレートアプリケーション形式及びウイルス対策アプリケーションのコンポーネント形式の両方で実現可能である。信頼できるプログラム150の主要特性は、ハイパーバイザ120のコードを実行する呼出しを行うその機能である。上述のように、ハイパーバイザモードにおけるコードの実行は、悪意のあるプログラム140により利用されるルートキット技術を無視することが可能なカーネルモードでのコードの実行よりもさらに低いレベルでも発生する。カーネルモード(リング0)で実行されるコードは、ハイパーバイザモードにおいて実行されるコードへのアクセスを行わない。同じように、ユーザモード(リング3)で実行されるコードは、カーネルモードで実行されるコードへのアクセスを行わない。保護リングに関する詳細については様々な刊行物を参照することができ、例えば「Russinovich、MarkE.;DavidA.Solomon(2005).MicrosoftWindowsInternals(4ed.).MicrosoftPress」などがある。なお、リング0でのコードの実行は、カーネルレベルでの実行としても知られ、リング3のコードの実行は、ユーザーレベルでの実行のことである。
上述のように、信頼できるプログラム150(ハイパーバイザモードにおいて実行されるであろうコードを含む)は、ハイパーバイザ150のコード実行のためのコールを生成し、例えば、それはハイパーコールである。OS110は最初は信頼されているが、悪意のあるプログラム140はOSの信頼レベルを危うくすると想定される。悪意のあるプログラム140は、OS110にインストールされたウイルス対策アプリケーション(図1には示さず)による検出の回避を可能とする複雑なロジック(ルートキットの機能など)を有すると考えられる。よって、悪意のあるプログラム140から機密ユーザ情報のための保護を提供する必要がある。
最新のOSでは、情報は複数の方法で保護され得る(暗号化、データストレージへのアクセス制御、ユーザデータを扱うそれらのプロセスの仮想メモリ保護の提供など)。本発明は、概してプロセスの仮想メモリの保護のためのシステムおよび方法に関する。
プロセスの仮想メモリを保護する方法は知られている。例えば、NXビットは、実行可能なコードとしてのデータの実行を防止可能なように、メモリページ向けの実行を禁止するビットを設定することができる。例えば、本明細書中に参考として援用する米国特許No.8990934(共同所有)には、エクスプロイトの書込みと実行を防止するための、相互に排他的なメモリページ向けの実行ビットおよび書込みビットの設定を制御する技術が記載されている。
しかしながら、既知の技術はOSカーネルのレベルで動作するという欠点を有し、コンピュータの電源をオンにした後のOSの起動(初期化)作業の際に、同じ権限レベルでの悪意あるコード実行の可能性を残す。このような悪質あるコードは、上記のメモリ保護アルゴリズムを切断、さらに悪い場合には制御することができ、このような場合にもユーザの情報を保護することができない。コンピュータの電源を入れた後のOSの起動(初期化)の詳細については、様々な刊行物を参照することができ、例えば、「Russinovich、MarkE.;DavidA.Solomon(2005);MicrosoftWindowsInternals(4ed.);MicrosoftPress」などがある。
ハイパーバイザモードにおけるコードの実行は、後者がカーネルモードで実行された場合でも、悪質あるコードの一部におけるメモリの変更を検出することを可能とする。しかしながら、ハイパーバイザモードにおけるコードの実行のためのコール、すなわちハイパーコールの生成は、ハイパーコールなどを生成するであろうコードを含むセパレートアプリケーションを必要とする。本開示では、セパレートアプリケーションは、ウイルス対策アプリケーションであってよい信頼できるプログラム150である。
OS110において稼働するプロセスの仮想メモリページの検証を含むであろうモノリシックコードセクタの形式であるハイパーバイザ120モードにおいて、コードを生成することは一般的に非常に困難であることに注意が必要である。その理由は複数あり、例えば下記の理由がある。
ハイパーバイザコードが「オーバーロード状態」(書込み及びデバッグするには複雑すぎることがわかる)となり、あまりにも多くのシステムリソース、特にプロセッサ時間を消費し始める。
ハイパーバイザコードが低すぎるレベル(ハイパーバイザレベル)において動作する、すなわち、ハイパーバイザコードがより高いレベルで動作するOS(カーネルレベル)の動作機構を「知って」いない。この問題は、ベアメタルハイパーバイザの特性である。
そのため、ハイパーバイザ120から信頼できるプログラム150へ一部の機能を移行し、一方でハイパーバイザ120にはメモリページ検証機能のみを残すことが望まれている。信頼できるプログラム150はOS110の詳細認識を許され(例えば、WindowsOSの仮想メモリページ構成の認識)、クロスプラットフォームハイパーバイザ120としての本ハイパーバイザ120を有することが可能となる。
例示的な一態様においては、信頼できるプログラム150とハイパーバイザ120の間の保護された通信チャネルが存在する。このような通信チャネル提供するために、信頼できるプログラム150はハイパーバイザ120のコードの呼出し(ハイパーコール)が可能であることが必要である。ハイパーバイザ120コードがRAMに格納されることを鑑みると、本コードが呼び出されることによるアドレスの機密性を担保することが必要である。
図2は、信頼できるプログラムのためのハイパーバイザコールアドレスを提供する例示的一態様による方法を示す。工程205では、ハイパーバイザ120は、コンピュータシステムの起動直後、OS110の初期化前にロードされる。原則として、ベアメタルタイプのハイパーバイザは、ホストOSの起動前に初期化される。ホストOSとは、ハイパーバイザの初期化後に起動するいかなるOSをも意味しており、ここではOS110である。工程207では、信頼できるプログラム150がロードされ、一般的にOS110のドライバの形で実現され、可能な限り早くロードされる。この要件は、工程207においてOS110を信頼するために必要である。なぜなら、信頼できるプログラム150の早期起動が悪意のあるプログラム140の起動前に信頼できるプログラム150を起動することを可能にするからである。工程210では、ハイパーバイザ120のアドレス(所謂セーフハイパーコールアドレス)がメモリに返された後に、信頼できるプログラム150がハイパーバイザ120コードの第1のコール(ハイパーコール)を実行する。次に、工程220においてメモリページ300を作成するためにこのアドレスは不正アクセスに対して保護されている必要がある(メモリページ300の例示的な構造は図3に示されている)。メモリページ自体は、ハイパーコールが実行可能である一連のメモリアドレスによって構成される。例示的な一態様においては、1つのコールのみが直ちにハイパーコールとなり、一方でその他のコールはその後の再起動を伴うOS110の動作において例外とエラー発生を引き起こす。メモリページ300は、信頼できるプログラム150によって又はその第1のコールの間に直接ハイパーバイザ120によって作成され得る。コールを伴ったコードによるページ入力は、ハイパーバイザ120によって工程230において行われる。メモリページは、例えば、工程240においてはメモリページに上書できないことを示唆するセキュリティパラメータ(例えば、セキュリティビット)を設定することによってさらに保護され得る。様々な態様において、セキュリティパラメータは、信頼できるプログラム150またはハイパーバイザ120によって設定され得る。
信頼できるプログラム150に対するハイパーバイザ120の正しいコールアドレスの送信機構について説明する。信頼できるプログラム150のプロセスのメモリにアドレスそれ自体を格納することは安全ではないかもしれず、アドレスを取得するための悪意のあるプログラム140による介入を排除することが出来ないため、信頼できるプログラム150はランダム生成キーの形式であるハイパーコールを生成するために用いることができるトークンも格納する。トークンそれ自体は、ハイパーバイザ120によって第1のコール時生成され(図2における工程210)、ハイパーコール中のトークンの値を比較するため信頼できるプログラム150に送られ、ハイパーバイザ120の悪意あるコールが実行される状況が防がれる。トークンはコンピュータシステムの作動中(電源を入れた後)に一度生成され、OS110に固有のものとなる。よって、他のホストOSがコンピュータシステムに存在する場合、ハイパーバイザ120は個々のトークンをそれぞれに対して生成する。
図4は、ハイパーバイザを利用したメモリページ保護の例示的一態様による方法を示す。工程410では、信頼できるプログラム150がハイパーコールを生成し、トークンがチェックされ、工程420において信頼できるプログラム150のトークンがハイパーバイザ120の保存されているトークンと一致した場合(工程430でのチェック)、工程450で信頼できるプログラム150は保護を必要とするメモリページのアドレスを送信する。このメモリ保護は、さまざまな操作(読取り、書込み、およびコードを実行)を許可/禁止するビットを設定する工程を含む。工程460では、保護されたメモリページに格納されたデータに対するチェックサム検証が行われる(周期的冗長検査、CRC)。工程470では、攻撃がリニアアドレスによる操作を含む可能性があるため、ハイパーバイザ120が保護されたメモリページに対するチェックサムの計算による定期検証を命ずる。定期検証は等間隔にハイパーコールを用いてハイパーバイザ120または信頼できるプログラム150によって初期化される。ハイパーバイザ120は、悪意のあるプログラム140によって変更されていないことを確かめるための信頼できるプログラム150の整合性チェックも行うことができる。整合性チェックは、チェックサムを計算する工程と、信頼できるプログラム150にける変更を特定するために以前保存された値と比較する工程とを含む。このチェックは工程420で行われる。信頼できるプログラム150のコードが変更されていた場合、ハイパーバイザはメモリ内においてディスクからロードすることによりコードを修復することができる。
下記は、リニアアドレスによる操作を含む攻撃の例である。例えば、OS110のIDT(InterruptDispatchTable)は、リニアアドレス0xF1D10000に位置するが、これは物理アドレス0x123000のマッピング(すなわち、物理アドレス上への仮想メモリページのアドレスのマッピング)である。ハイパーバイザ120はアドレス0x123000における物理ページに対し上記保護を確立することができる(パフォーマンスのロスなしで)。悪意のあるプログラム140は、例えば0x321000などの物理ページを選び、必要な要素を置き換えて(この例においては、割り込みハンドラである)オリジナルページ0x123000のコンテンツをそこへコピーし、マッピング0xF1D10000->0x321000を確立させ、ハイパーバイザ120が上記変更を検出できない、すなわちOS110において仮想メモリの動作の論理上の情報を有しないようになる。そのため、信頼できるプログラム150は、OS110内のページテーブルの正確性を定期的にチェックすべきであり、この例においては0xF1D1000が0x123000に確かに対応し、他の何かでないことをチェックする。
ハイパーバイザ120のロード前のハイパーバイザ120のストレージについて説明する。ハイパーバイザ120のコードは、UEFI(UnifiedExtensibleFirmwareInterface)サービス内またはPCI若しくはPCIeボード上の別のデバイス内に格納され得る。別のデバイスは、どのデバイスであるかOS110内では定義されていないか(例えば、ハイパーバイザ120または信頼できるプログラム150はこのデバイスからの割り込みを独立して処理する)、またはディスク仮想化を利用する(ハイパーバイザ120はディスクドライバの基本的な機能を変更することによりそのコードを記憶したディスクのセクタを除外する).
図5は、本開示のシステム及び方法を実施することが可能な汎用コンピュータシステム(パーソナルコンピュータまたはサーバであってよい)を表す。示されているように、コンピュータシステムは、中央処理装置21と、システムメモリ22と、中央処理装置21と関連するメモリを含む様々なシステムコンポーネントに接続しているシステムバス23とを備える。システムバス23は、先行技術から知られている任意のバス構造に類似であってよく、他のバスアーキテクチャと相互作用することが可能なバスメモリまたはバスメモリコントローラ、周辺バス、ローカルバスを含んでよい。システムメモリは、固定メモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む.基本入力/出力システム(BIOS)26は、ROM24を使用したオペレーティングシステムの読み込み時などのパーソナルコンピュータ20の要素間の情報伝達を保証する基本的手順を含む。
パーソナルコンピュータ20は、同様に、データを読み込み及び書き込むためにハードディスク27、リムーバル磁気ディスク29に読み取り及び書き込みするために磁気ディスクドライブ28及びリムーバル光学ディスクドライブ31(CD−ROM、DVD−ROM及び別の光学情報メディア)を読み取り及び書き込みするために光学ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28及び光学ドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33及び光学ドライブインターフェース34それぞれを介して、システムバス23に接続されている。ドライブ及び対応するコンピュータ情報メディアは、パーソナルコンピュータ20における、コンピュータ命令、データ構造、プログラムモジュール及び別のデータを記憶するために、電力的に独立しているモジュールである。
本開示は、ハードディスク27、リムーバブル磁気ディスク29及びリムーバブル光学ディスク31を使用するシステムの実装を提供するが、別のタイプのコンピュータ情報媒体56の採用が可能であることが理解されるべきであり、それは、コンピュータによって読み取り可能な形式でデータを格納することができるもの(半導体ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)など)であり、それは、コントローラ55を介してシステムバス23に接続されている。
コンピュータ20は、ファイルシステム36(記録されるシステム35はここに保持される)、さらに、追加プログラム・アプリケーション37、他のプログラムモジュール38及びプログラムデータ39を備える。ユーザは、入力デバイス(キーボード40、マウス42)を用いて、パーソナルコンピュータ20にコマンドと情報を入力することが可能である。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ、等を用いることができる。そのような入力デバイスは、通常コンピュータシステム20に、シリアルポート46を介して、接続され、それは、順に、システムバスに接続されるが、それらは、他の方法で、例えば、パラレルポート、ゲームポート及びユニバーサルシリアルバス(USB)の助けを借りて、接続される。モニター47又は他の種類のディスプレイデバイスも、ビデオアダプター48等のインターフェースを介してシステムバス23に接続される。モニター47に加えて、パーソナルコンピュータは、ラウドスピーカー、プリンタ等他の周辺外部デバイス(図示せず)に備えてもよい。
パーソナルコンピュータ20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作できる。リモートコンピュータ(またはコンピュータ)49も、図3に示すように、前述の要素(パーソナルコンピュータ20の特質を説明したもの)の大部分又は全てを有するパーソナルコンピュータ又はサーバである。他のデバイスも、ルータ、ネットワーク局、ピアデバイス又は他のネットワークノード等、コンピュータネットワークに存在してもよい。
ネットワーク接続は、ローカル・エリア・コンピュータ・ネットワーク(LAN)50、及びワイドエリア・コンピュータ・ネットワーク(WAN)を形成することができる。そのようなネットワークは、企業コンピュータネットワーク又は社内ネットワークで使用され、それらは、概してインターネットアクセスを有している。LAN又はWANネットワークで、パーソナルコンピュータ20は、ネットワークアダプター又はネットワークインターフェース51を介して、ローカル・エリア・ネットワーク50に接続される。ネットワークが用いられる場合、パーソナルコンピュータ20は、インターネット等のワイド・エリア・ネットワークでのコミュニケーションを提供するために、モデム54又は他のモジュールを採用する。モデム54は、内部的又は外部的デバイスであり、シリアルポート46によって、システムバス23と接続される。ネットワーク接続は、一例であり、ネットワークの正確な構成を示す必要はないことを留意されたい。すなわち、実際には、技術的な通信モジュールによる、あるコンピュータと他のコンピュータとの接続を確立する他の方法がある。
様々な態様において、本明細書で説明するシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実現されてもよい。ソフトウェアで実装される場合、本方法は、非一時的なコンピュータ可読媒体の1つ又は複数の命令又はコードとして格納されてもよい。コンピュータ可読媒体は、データ記憶装置を含む。例として、限定するものではないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、フラッシュメモリ、又は、電気的、磁気的、又は他の種類の光学記憶媒体を備えてもよい。それは、命令又はデータ構造の形式で、所望のプログラムコードを搬送又は格納されてもよく、且つ、汎用コンピュータのプロセッサにアクセスできる。
様々な側面で、本開示に記載されたシステム及び方法はモジュールの観点から理解することが可能である。本明細書で使用される用語"モジュール"は、特定用途向け集積回路(ASIC)又はフィールド・プログラマブル・ゲート・アレイ(FPGA)(例えば、ハードウェアとソフトウェアの組み合わせ)などによって、ハードウェアを用いて実装される、実世界のデバイス、構成要素、又は構成要素の配置を意味している。例えば、マイクロプロセッサシステム及びジュールの機能を実装するための命令セットによって、それは、(実行時)マイクロプロセッサシステムを専用機に変換する。モジュールも、これらの組み合わせとして実装されてもよく、ハードウェア単体で容易である特定の機能で、及び、ハードウェアとソフトウェアの組み合わせによって容易である他の機能で実装されてもよい。ある実施態様で、モジュールの少なくとも一部、及び、場合によっては、全てが、汎用コンピュータ(上記、図5により詳細に説明したもの等)のプロセッサで実行することができる。したがって、各モジュールは、様々な適切である構成で実現することができ、本明細書において例示される任意の特定の実装に限定されるものではない。
明瞭にするために、本態様における繰り返される機能の全てが、本明細書に開示されるわけではない。本開示の任意で実際の実装における開発で、多数の実装固有の決定が、開発者の特定の目標を達成するために、成されなければならないことが理解されるであろう。これらの具体的な目標は、実装及び開発者ごとに変化するであろう。そのような開発努力は複雑で時間がかかるかもしれないことが、それにもかかわらず、本開示の利益を有する当業者にとっては、エンジニアにとっては日常の仕事であることが、理解されるであろう。
さらに、本明細書で使用される表現又は用語は、説明の目的のためであり、制限を目的としていないことを理解すべきである。本明細書の用語又は表現は、関連技術での熟練の知識と組み合わせて、本明細書に提示される教示及び指針に照らして当業者によって解釈されるべきである。さらに、明示的記載がない限り、本明細書又は特許請求の範囲における任意の用語に対して、一般的でない又は特別な意味を帰することは意図されていない。
本明細書に開示される様々な態様は、例示により本明細書に言及される既知のモジュールに、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を図示し、且つ、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることは、この開示の利益を有する当業者には明らかであろう。

Claims (21)

  1. ハイパーバイザモードにおけるコードの安全な実行方法であって、工程(A)〜工程(F)を含み、
    工程(A)では、保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードし、
    工程(B)では、前記ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードし、
    工程(C)では、前記ハイパーバイザに対する第1のハイパーコールを前記信頼できるプログラムによって生成し、
    工程(D)では、前記第1のハイパーコールに対応し、後のハイパーコールの間に前記信頼できるプログラムを前記ハイパーバイザによって識別するために用いられるトークンを前記ハイパーバイザによって生成し、
    工程(E)では、前記トークンと前記ハイパーバイザのメモリアドレスを格納するためのメモリページを割り当て、
    工程(F)では、割り当てられたメモリページアドレスを前記信頼できるプログラムへ返す、
    方法。
  2. 前記信頼できるプログラムは、ウイルス対策アプリケーションのコンポーネントである、請求項1に記載の方法。
  3. ハイパーバイザをロードする前記工程(A)は、1つ以上のゲストオペレーションシステムをロードする前に前記ハイパーバイザをロードする工程を含む、請求項1に記載の方法。
  4. 前記ハイパーバイザによってトークンを生成する工程(D)は、各ゲストオペレーティングシステムのためのユニークトークンをランダム生成する工程を含む、請求項1に記載の方法。
  5. 前記メモリページの上書きを禁止する前記メモリページのためのセキュリティパラメータを設定する工程(G)をさらに含む、請求項1に記載の方法。
  6. 工程(H)〜(J)をさらに含み、
    工程(H)では、ハイパーバイザによって生成される上記トークンを含む第2のハイパーコールを信頼できるプログラムによって生成し、
    工程(I)では、上記トークンを第2のハイパーコールが信頼できるプログラム由来であるかを確認するためのトークンであるかをハイパーバイザによって検証し、
    工程(J)では、上記トークンが正しいと確認された場合に、整合性チェックのための1つ以上の保護されたメモリページのハイパーバイザアドレスを信頼できるプログラムによって提供し、
    工程(K)では、保護されたメモリページの周期的冗長検査をハイパーバイザによって実行する、
    請求項1に記載の方法。
  7. 保護されたメモリページの繰り返し周期的冗長検査をハイパーバイザによって設定する工程(L)をさらに含む、請求項6に記載の方法。
  8. ハイパーバイザモードにおけるコードの安全な実行システムであって、
    ハードウェアプロセッサを備え、前記ハードウェアプロセッサは、
    保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードし、
    前記ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードし、
    前記ハイパーバイザに対する第1のハイパーコールを前記信頼できるプログラムによって生成し、
    前記第1のハイパーコールに対応し、後のハイパーコールの間に前記信頼できるプログラムを前記ハイパーバイザによって識別するために用いられるトークンをハイパーバイザによって生成し、
    前記トークンと前記ハイパーバイザのメモリアドレスを格納するためのメモリページを割り当て、
    割り当てられた前記メモリページアドレスを前記信頼できるプログラムへ返すように構成されている、
    システム。
  9. 前記信頼できるプログラムは、ウイルス対策アプリケーションのコンポーネントである、請求項8に記載のシステム。
  10. ハイパーバイザのロードにおいて、1つ以上のゲストオペレーションシステムをロードする前に前記ハイパーバイザをロードする、請求項8に記載のシステム。
  11. 前記ハイパーバイザによるトークンを生成において、各ゲストオペレーティングシステムのためのユニークトークンをランダム生成する、請求項8に記載のシステム。
  12. 前記メモリページの上書きを禁止する前記メモリページのためのセキュリティパラメータを設定するようにさらに構成されている、請求項8に記載のシステム。
  13. ハイパーバイザによって生成される上記トークンを含む第2のハイパーコールを信頼できるプログラムによって生成し、
    上記トークンを第2のハイパーコールが信頼できるプログラム由来であるかを確認するためのトークンであるかをハイパーバイザによって検証し、
    上記トークンが正しいと確認された場合に、整合性チェックのための1つ以上の保護されたメモリページのハイパーバイザアドレスを信頼できるプログラムによって提供し、
    保護されたメモリページの周期的冗長検査をハイパーバイザによって実行するようにさらに構成されている、請求項8に記載のシステム。
  14. 保護されたメモリページの繰り返し周期的冗長検査をハイパーバイザによって設定するようにさらに構成されている、請求項13に記載の方法。
  15. ハイパーバイザモードにおけるコードの安全な実行のためのコンピュータ実行可能命令を格納する非一過性の記録媒体であって、
    保護された仮想メモリページの整合性をチェックするように構成されたハイパーバイザをロードする命令と、
    ハイパーバイザに対するハイパーコールを生成するように構成された信頼できるプログラムをロードする命令と、
    ハイパーバイザに対する第1のハイパーコールを信頼できるプログラムによって生成する命令と、
    第1のハイパーコールに対応し、後のハイパーコールの間に信頼できるプログラムをハイパーバイザによって識別するために用いられるトークンがハイパーバイザによって生成する命令と、
    トークンとハイパーバイザのメモリアドレスを記憶するためのメモリページを割り当てる命令と、
    割り当てられたメモリページアドレスを信頼できるプログラムへ返す命令と、
    を含む記録媒体
  16. 前記信頼できるプログラムは、ウイルス対策アプリケーションのコンポーネントである、請求項15に記載の記録媒体。
  17. ハイパーバイザのロードにおいて、1つ以上のゲストオペレーションシステムをロードする前に前記ハイパーバイザをロードする、請求項15に記載の記録媒体。
  18. 前記ハイパーバイザによるトークンを生成において、各ゲストオペレーティングシステムのためのユニークトークンをランダム生成する、請求項15に記載の記録媒体。
  19. 前記メモリページの上書きを禁止する前記メモリページのためのセキュリティパラメータを設定する命令をさらに含む、請求項15に記載の記録媒体。
  20. ハイパーバイザによって生成される上記トークンを含む第2のハイパーコールを信頼できるプログラムによって生成する命令と、
    上記トークンを第2のハイパーコールが信頼できるプログラム由来であるかを確認するためのトークンであるかをハイパーバイザによって検証する命令と、
    上記トークンが正しいと確認された場合に、整合性チェックのための1つ以上の保護されたメモリページのハイパーバイザアドレスを信頼できるプログラムによって提供する命令と、
    保護されたメモリページの周期的冗長検査をハイパーバイザによって実行する命令と、
    をさらに含む、請求項15に記載の記録媒体。
  21. 保護されたメモリページの繰り返し周期的冗長検査をハイパーバイザによって設定する命令をさらに含む、請求項20に記載の記録媒体。
JP2016093164A 2015-11-09 2016-05-06 ハイパーバイザモードにおけるコードの安全な実行システムおよび方法 Active JP6282305B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/935,852 US9536088B1 (en) 2015-11-09 2015-11-09 System and method for protection of memory in a hypervisor
US14/935,852 2015-11-09

Publications (2)

Publication Number Publication Date
JP2017091497A true JP2017091497A (ja) 2017-05-25
JP6282305B2 JP6282305B2 (ja) 2018-02-21

Family

ID=54703801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016093164A Active JP6282305B2 (ja) 2015-11-09 2016-05-06 ハイパーバイザモードにおけるコードの安全な実行システムおよび方法

Country Status (4)

Country Link
US (3) US9536088B1 (ja)
EP (1) EP3166037B1 (ja)
JP (1) JP6282305B2 (ja)
CN (1) CN106682497B (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9547767B2 (en) * 2013-11-13 2017-01-17 Via Technologies, Inc. Event-based apparatus and method for securing bios in a trusted computing system during execution
US9536088B1 (en) * 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
US10395036B2 (en) * 2017-03-16 2019-08-27 Dell Products, L.P. Continued runtime authentication of information handling system (IHS) applications
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20180267818A1 (en) * 2017-03-17 2018-09-20 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on notification data
JP6804665B2 (ja) * 2017-03-29 2020-12-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ハイパーバイザと仮想マシンとの間のメモリページ遷移の監視
CN107330336B (zh) * 2017-05-23 2020-02-14 中国人民解放军信息工程大学 Linux操作系统内存页面即时加解密方法和系统
CN107563228B (zh) * 2017-08-03 2021-04-20 海光信息技术股份有限公司 一种内存数据加解密的方法
US20190087580A1 (en) * 2017-09-19 2019-03-21 Microsoft Technology Licensing, Llc Secure launch for a hypervisor
US11068607B2 (en) * 2018-03-10 2021-07-20 International Business Machines Corporation Protecting cognitive code and client data in a public cloud via deployment of data and executables into a secure partition with persistent data
US11074094B2 (en) 2018-08-29 2021-07-27 Red Hat, Inc. Securing hypercall support for user space processes in virtual machines
EP3696698A1 (en) * 2019-02-18 2020-08-19 Verimatrix Method of protecting a software program against tampering
US11507666B2 (en) * 2019-08-27 2022-11-22 Red Hat, Inc. Trusted execution environment verification of a software package
CN112800431B (zh) * 2020-08-28 2023-09-29 支付宝(杭州)信息技术有限公司 超线程场景下安全进入可信执行环境的方法及装置
US11847227B2 (en) 2020-11-30 2023-12-19 Red Hat, Inc. Firmware version corruption attack prevention
EP4057569A1 (en) 2021-03-12 2022-09-14 AO Kaspersky Lab System and method for configuring iot devices depending on network type
EP4057570A1 (en) 2021-03-12 2022-09-14 AO Kaspersky Lab System and method for controlling an iot device from a node in a network infrastructure
EP4060935A1 (en) 2021-03-15 2022-09-21 AO Kaspersky Lab System and method for processing personal data by application of policies

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517162A (ja) * 2007-01-25 2010-05-20 マイクロソフト コーポレーション 保護エージェント及び特権モード
JP2013210962A (ja) * 2012-03-30 2013-10-10 Renesas Electronics Corp 半導体装置
WO2014024279A1 (ja) * 2012-08-08 2014-02-13 富士通株式会社 メモリ障害リカバリ装置、方法、及びプログラム
JP2014528622A (ja) * 2011-10-13 2014-10-27 マカフィー, インコーポレイテッド ハイパーバイザ環境でカーネル・ルートキットから保護するシステムおよび方法
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913058A (en) * 1997-09-30 1999-06-15 Compaq Computer Corp. System and method for using a real mode bios interface to read physical disk sectors after the operating system has loaded and before the operating system device drivers have loaded
US6842902B2 (en) * 2001-08-15 2005-01-11 Sun Microsystems, Inc. Robust device driver token management for upgraded computers using legacy device cards
US7526598B2 (en) * 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US7895124B2 (en) * 2004-12-23 2011-02-22 International Business Machines Corporation Method for protecting sensitive data during execution
US7757280B2 (en) * 2006-01-17 2010-07-13 International Business Machines Corporation Method and system for memory protection and security using credentials
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8805747B2 (en) * 2007-12-07 2014-08-12 Z-Firm, LLC Securing shipment information accessed based on data encoded in machine-readable data blocks
US9129106B2 (en) * 2009-11-04 2015-09-08 Georgia Tech Research Corporation Systems and methods for secure in-VM monitoring
JP2011145912A (ja) * 2010-01-15 2011-07-28 Fujitsu Ltd 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
US8849941B2 (en) * 2010-09-30 2014-09-30 Microsoft Corporation Virtual desktop configuration and operation techniques
CN102034046B (zh) * 2010-12-10 2012-10-03 北京世纪互联工程技术服务有限公司 云计算环境中基于磁盘驱动的数据底层加密方法
US8495356B2 (en) * 2010-12-31 2013-07-23 International Business Machines Corporation System for securing virtual machine disks on a remote shared storage subsystem
US9497224B2 (en) * 2011-08-09 2016-11-15 CloudPassage, Inc. Systems and methods for implementing computer security
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US8645811B2 (en) 2011-10-27 2014-02-04 Dell Products L.P. System and method for selective error checking
RU2510074C2 (ru) 2012-02-24 2014-03-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ проверки исполняемого кода перед его выполнением
US8930507B2 (en) * 2012-06-12 2015-01-06 International Business Machines Corporation Physical memory shared among logical partitions in a VLAN
US20140053272A1 (en) 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US9424200B2 (en) * 2013-03-15 2016-08-23 Freescale Semiconductor, Inc. Continuous run-time integrity checking for virtual memory
US9436614B2 (en) * 2013-05-02 2016-09-06 Globalfoundries Inc. Application-directed memory de-duplication
US10599565B2 (en) * 2013-12-24 2020-03-24 Hewlett-Packard Development Company, L.P. Hypervisor managing memory addressed above four gigabytes
US9536088B1 (en) * 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517162A (ja) * 2007-01-25 2010-05-20 マイクロソフト コーポレーション 保護エージェント及び特権モード
JP2014528622A (ja) * 2011-10-13 2014-10-27 マカフィー, インコーポレイテッド ハイパーバイザ環境でカーネル・ルートキットから保護するシステムおよび方法
JP2013210962A (ja) * 2012-03-30 2013-10-10 Renesas Electronics Corp 半導体装置
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
WO2014024279A1 (ja) * 2012-08-08 2014-02-13 富士通株式会社 メモリ障害リカバリ装置、方法、及びプログラム

Also Published As

Publication number Publication date
CN106682497A (zh) 2017-05-17
US20190080086A1 (en) 2019-03-14
EP3166037A1 (en) 2017-05-10
CN106682497B (zh) 2019-10-01
JP6282305B2 (ja) 2018-02-21
US10162964B2 (en) 2018-12-25
US20170132412A1 (en) 2017-05-11
US11269996B2 (en) 2022-03-08
US9536088B1 (en) 2017-01-03
EP3166037B1 (en) 2018-10-17

Similar Documents

Publication Publication Date Title
JP6282305B2 (ja) ハイパーバイザモードにおけるコードの安全な実行システムおよび方法
US10242186B2 (en) System and method for detecting malicious code in address space of a process
US9547765B2 (en) Validating a type of a peripheral device
US8892858B2 (en) Methods and apparatus for trusted boot optimization
US9319380B2 (en) Below-OS security solution for distributed network endpoints
US9087199B2 (en) System and method for providing a secured operating system execution environment
JP5909829B2 (ja) ハイパーバイザ環境においてカーネルルートキットに対する保護を実行するシステムおよび方法
US9317690B2 (en) System and method for firmware based anti-malware security
US8042190B2 (en) Pre-boot protected memory channel
JP6588945B2 (ja) 仮想マシンにおける悪意のあるファイルを分析するシステム及び方法
US20160180090A1 (en) Execution profiling detection of malicious objects
US20110283358A1 (en) Method and system to detect malware that removes anti-virus file system filter driver from a device stack
EP3460703B1 (en) System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
EP3029564B1 (en) System and method for providing access to original routines of boot drivers
US8869282B1 (en) Anti-malware support for firmware
US11170103B2 (en) Method of detecting malicious files resisting analysis in an isolated environment
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
RU2609761C1 (ru) Способ выполнения кода в режиме гипервизора
EP3588346A1 (en) Method of detecting malicious files resisting analysis in an isolated environment

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180104

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180123

R150 Certificate of patent or registration of utility model

Ref document number: 6282305

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250