JP6218859B2 - 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン - Google Patents

仮想マシンの完全性保護のためのメモリイントロスペクションエンジン Download PDF

Info

Publication number
JP6218859B2
JP6218859B2 JP2015559213A JP2015559213A JP6218859B2 JP 6218859 B2 JP6218859 B2 JP 6218859B2 JP 2015559213 A JP2015559213 A JP 2015559213A JP 2015559213 A JP2015559213 A JP 2015559213A JP 6218859 B2 JP6218859 B2 JP 6218859B2
Authority
JP
Japan
Prior art keywords
target software
software object
memory
host system
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015559213A
Other languages
English (en)
Other versions
JP2016511903A (ja
Inventor
ルツァス,アンドレイ−ヴラド
ルカクス,サンドル
ルツァシ,ダン−ホレア
Original Assignee
ビットディフェンダー アイピーアール マネジメント リミテッド
ビットディフェンダー アイピーアール マネジメント リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビットディフェンダー アイピーアール マネジメント リミテッド, ビットディフェンダー アイピーアール マネジメント リミテッド filed Critical ビットディフェンダー アイピーアール マネジメント リミテッド
Publication of JP2016511903A publication Critical patent/JP2016511903A/ja
Application granted granted Critical
Publication of JP6218859B2 publication Critical patent/JP6218859B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Description

[0001]本発明はコンピュータシステムをマルウェアから保護するためのシステムおよび方法に関し、特にハードウェア仮想化技術を採用するマルウェア対策システムに関する。
[0002]マルウェアとしても知られる悪意のあるソフトウェアは世界中で多数のコンピュータシステムに影響を及ぼす。コンピュータウイルス、ワーム、およびルートキットなどの多くの形態で、マルウェアは深刻なリスクを何百万人ものコンピュータユーザにもたらし、とりわけデータや機密情報の損失、個人情報盗難、および生産性の損失に対して無防備にしてしまう。
[0003]ハードウェア仮想化技術は、様々な方法で物理コンピュータシステムとして作動する、一般に仮想マシンとして知られる模擬コンピュータ環境の作成を可能にする。サーバ統合やサービスとしてのインフラストラクチャ(IAAS)などの典型的な用途では、いくつかの仮想マシンを同じ物理マシン上で同時に実行して、それらの間でハードウェア資源を共有してよく、したがって投資および運転コストが削減される。各仮想マシンは独自のオペレーティングシステムおよび/またはソフトウェアアプリケーションを他の仮想マシンとは別々に実行してよい。マルウェアの着実な拡散により、そのような環境で動作する各仮想マシンは潜在的にマルウェア保護を必要とする。
[0004]当該技術分野で一般に使用される仮想化解決策は、計算用ハードウェアと仮想マシンのオペレーティングシステム(OS:Operating System)との間で動作するソフトウェア層から成り、それぞれのOSよりもより多くのプロセッサ特権を有する、仮想マシンモニタとしても知られるハイパーバイザを備える。マルウェア対策動作はハイパーバイザの特権レベルで行ってよい。そのような構成はマルウェア検出および防止を容易にするかもしれないが、それらは追加で一層の複雑性をもたらすし、かなりの計算コストを伴うかもしれない。
[0005]ハードウェア仮想化プラットフォーム用マルウェア対策解決策であって、堅牢で拡張可能な解決策を最低の計算オーバーヘッドで開発することにかなりの関心がある。
[0006]一態様によれば、ホストシステムは、オペレーティングシステムと保護準備モジュールとを実行するように構成された少なくとも1つのプロセッサを備える。オペレーティングシステムは、ホストシステム上で実行するハイパーバイザにより公開される仮想マシンの仮想化物理メモリの一部分を、仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てるように構成される。仮想化物理メモリは、各々仮想化物理メモリとホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位であるページに分割される。保護準備モジュールは、対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、対象ソフトウェアオブジェクトが選択基準を満たす場合に、対象オブジェクトのメモリ割り当てを変更するように構成され、メモリ割り当てを変更することは、対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも対象ソフトウェアオブジェクトのために予約されることを保証することを含む。
[0007]別の態様によれば、方法は、ホストシステム上で実行するハイパーバイザにより公開される仮想マシンの仮想化物理メモリの一部分を、仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てるように構成されたオペレーティングシステムを形成するために、ホストシステムの少なくとも1つのプロセッサを利用することを含む。仮想化物理メモリは、各々仮想化物理メモリとホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位であるページに分割される。方法はさらに、対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、対象ソフトウェアオブジェクトが選択基準を満たす場合に、対象ソフトウェアオブジェクトのメモリ割り当てを変更するために、少なくとも1つのプロセッサを利用することを含み、メモリ割り当てを変更することは、対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも対象ソフトウェアオブジェクトのために予約されることを保証することを含む。
[0008]別の態様によれば、非一時的コンピュータ可読媒体は、ホストシステムの少なくとも1つのプロセッサにより実行されたとき少なくとも1つのプロセッサに、ホストシステム上で実行するハイパーバイザにより公開される仮想マシンの仮想化物理メモリの一部分を、仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てさせる命令を符号化している。仮想化物理メモリは、各々仮想化物理メモリとホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位であるページに分割される。命令はさらに少なくとも1つのプロセッサに、対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、対象ソフトウェアオブジェクトのメモリ割り当てを変更させる。メモリ割り当ての変更は、対象ソフトウェアオブジェクトが選択基準を満たす場合に行われる。メモリ割り当てを変更することは、対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも対象ソフトウェアオブジェクトのために予約されることを保証することを含む。
[0009]本発明の前述の態様および利点は、以下の詳細な説明を読むことでかつ図面を参照することでより良く理解されるであろう。
[0010]本発明のいくつかの実施形態に係るマルウェアから保護されるホストコンピュータシステムの例示的なハードウェア構成を示す。 [0011]本発明のいくつかの実施形態に係る、図1のホストシステム上で実行するハイパーバイザにより公開される仮想マシンの例示的な集合を示す。 [0012]本発明のいくつかの実施形態に係る、マルウェアから保護されるオブジェクトの集合を含む、様々なプロセッサ特権レベルでホストシステム上で実行するソフトウェアオブジェクトの例示的な階層を例示する。 [0013]本発明のいくつかの実施形態に係る、図2のシステム構成でのメモリアドレスの例示的なマッピングを示す。 [0014]仮想化物理メモリ空間がページに分割され、メモリの別個の部分が複数のソフトウェアオブジェクトの各々に割り当てられる、例示的なメモリ割り当てを示す。 [0015]ページが本発明のいくつかの実施形態に係る保護ソフトウェアオブジェクトに排他的に割り当てられる、例示的なメモリ割り当てを例示する。 [0016]本発明のいくつかの実施形態に係る仮想マシンを保護するためにメモリイントロスペクションエンジンにより実施されるステップの例示的なシーケンスを示す。 [0017]対象ソフトウェアオブジェクトに対するメモリの割り当てを改変するために保護準備モジュールの実施形態により実施されるステップの例示的なシーケンスを示す。 [0018]対象ソフトウェアオブジェクトに対するメモリの割り当てを改変するために保護準備モジュールの別の実施形態により実施されるステップの例示的なシーケンスを示す。 [0019]本発明のいくつかの実施形態に係る対象ソフトウェアオブジェクトに対するメモリの割り当て解除を改変するために保護準備モジュールにより実施されるステップの例示的なシーケンスを示す。
[0020]以下の説明では、すべての詳述される構造間接続は直接作用接続または中間構造を介する間接作用接続であり得ると解釈する。要素の集合は1つまたは複数の要素を含む。任意の要素の詳述は少なくとも1つの要素を指すと解釈する。複数の要素は少なくとも2つの要素を含む。別途要求しない限り、任意の説明される方法ステップは必ずしも特定の例示の順序で実施する必要はない。第1の要素(例えばデータ)は、第2の要素から導出されている場合、第2の要素に等しい第1の要素に加え、第2の要素および任意選択で他のデータを処理することにより生成される第1の要素をも包含する。パラメータに従って判定または決定を下すことは、パラメータに従っておよび任意選択で他のデータに従って判定または決定を下すことを包含する。別途特記しない限り、或る量/データの標識は量/データ自体、または量/データ自体とは異なる標識であってよい。別途特記しない限り、ページはホストシステムの物理メモリに個別にマッピングされる仮想化物理メモリの最小単位を表す。別途特記しない限り、仮想化物理メモリの一部分は、ページの集合の各ページがそれぞれの部分の一部を含む場合、ページの集合に及ぶと言う。対象オブジェクトのためにページを予約(確保)することは、ページ全体を対象オブジェクトに割り当てること、およびそうでなければそれぞれのページが対象オブジェクトとは別個のオブジェクトの一部をホストしないことを保証することを包含する。コンピュータ可読媒体は磁気、光学、および半導体記憶媒体(例えばハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的媒体に加え、伝導ケーブルおよび光ファイバリンクなどの通信リンクをも包含する。いくつかの実施形態によれば、本発明はとりわけ、本明細書に記載の方法を実施するようにプログラムされるハードウェア(例えば1つまたは複数のプロセッサ)を備えるコンピュータシステムに加え、本明細書に記載の方法を実施するための命令を符号化したコンピュータ可読媒体をも提供する。
[0021]以下の説明は必ずしも限定としてではなく例として本発明の実施形態を例示する。
[0022]図1は、本発明のいくつかの実施形態に係るホストシステム10の例示的なハードウェア構成を示す。ホストシステム10は企業サーバなどの法人計算用装置、またはとりわけパーソナルコンピュータもしくはスマートフォンなどのエンドユーザ装置を表してよい。他のホストシステムには、テレビやゲーム機などの娯楽装置、またはメモリと仮想化をサポートするプロセッサとを有し、かつマルウェア保護を必要とする任意の他の装置が含まれる。図1は例示目的のコンピュータシステムを示すため、移動電話またはタブレットなどの他のクライアント装置は異なる構成を有してよい。いくつかの実施形態において、システム10は物理装置の集合を備え、すべてバス24の集合により接続されるプロセッサ12、メモリユニット14、入力装置16の集合、出力装置18の集合、記憶装置20の集合、およびネットワークアダプタ22の集合を含む。
[0023]いくつかの実施形態において、プロセッサ12は信号および/またはデータの集合で計算および/または論理演算を実行するように構成された物理装置(例えばマルチコア集積回路)を備える。いくつかの実施形態において、そのような論理演算は一連のプロセッサ命令(例えばマシンコードまたは他の種類のソフトウェア)の形態でプロセッサ12に送達される。メモリユニット14は命令を実行する過程でプロセッサ12によりアクセスまたは生成されるデータ/信号を記憶する揮発性コンピュータ可読媒体(例えばRAM)を備えてよい。入力装置16は、ユーザがデータおよび/または命令をシステム10に導入できるようにするそれぞれのハードウェアインタフェースおよび/またはアダプタを含む、とりわけコンピュータキーボード、マウス、およびマイクロホンを含んでよい。出力装置18は、とりわけモニタなどの表示装置およびスピーカに加え、システム10がデータをユーザに伝達できるようにする、グラフィックカードなどのハードウェアインタフェース/アダプタをも含んでよい。いくつかの実施形態において、入力装置16および出力装置18はタッチスクリーン装置の場合のようにハードウェアの共通部分を共有してよい。記憶装置20はソフトウェア命令および/またはデータの不揮発性記憶、読み取り、および書き込みを可能にするコンピュータ可読媒体を含む。例示的な記憶装置20は磁気および光ディスクならびにフラッシュメモリ装置に加えて、CDおよび/またはDVDディスクなどの取り外し可能媒体ならびにドライブをも含む。ネットワークアダプタ22の集合はシステム10がコンピュータネットワークにおよび/または他の装置/コンピュータシステムに接続できるようにする。バス24は複数のシステム、周辺、およびチップセットバス、ならびに/またはホストシステム10の装置12〜22の相互通信を可能にするすべての他の回路を集合的に表す。例えばバス24は、プロセッサ12をメモリ14に接続するノースブリッジ、および/またはプロセッサ12をとりわけ装置16〜22に接続するサウスブリッジを備えてよい。
[0024]図2は、ホストシステム10上で実行し、本発明のいくつかの実施形態に係るハイパーバイザ30により公開されるゲスト仮想マシン32a〜bの例示的な集合を示す。仮想マシン(VM:Virtual Machine)は一般に当該技術分野で実際の物理マシン/コンピュータシステムのソフトウェアエミュレーションとして知られ、各々独自のオペレーティングシステムとソフトウェアを他のVMとは独立して実行することができる。ハイパーバイザ30は複数の仮想マシンによる、プロセッサ動作、メモリ、記憶、入出力、およびネットワーキング装置などのホストシステム10のハードウェア資源の多重化(共有化)を可能にするソフトウェアを備える。いくつかの実施形態において、ハイパーバイザ30は複数の仮想マシンおよび/またはオペレーティングシステム(OS)がホストシステム10上で様々な分離度で同時に実行できるようにする。そのような構成を可能にするために、ハイパーバイザ30のソフトウェア形成部が、各々とりわけプロセッサ12やメモリ14などのシステム10の物理ハードウェア装置をエミュレートする、複数の仮想化、すなわちソフトウェアエミュレートした装置を作成してよい。ハイパーバイザ30はさらに仮想装置の集合をホストシステム10上で動作する各VMに割り当ててよい。したがって各VM32a〜bは自身の物理装置の集合を所有するかのように、すなわちほぼ完全なコンピュータシステムとして動作する。普及しているハイパーバイザの例には、とりわけVMware Inc.のVMware vSphere(商標)、およびオープンソースのXenハイパーバイザが含まれる。
[0025]いくつかの実施形態において、ハイパーバイザ30は、さらに後述されるようにマルウェア対策動作を実施するように構成されたメモリイントロスペクションエンジン40、およびメモリイントロスペクションエンジン40に接続される保護準備モジュール46を含む。エンジン40およびモジュール46はハイパーバイザ30に組み込まれてよく、またはハイパーバイザ30とは別個で独立しているがハイパーバイザ30と実質的に同じプロセッサ特権レベルで実行するソフトウェアコンポーネントとして設けてよい。単一のエンジン40をホストシステム10上で実行する複数のVMをマルウェア保護するように構成してよい。
[0026]図2は簡略化のため2つのVM32a〜bのみを示すが、ホストシステム10は多数、例えば何百ものVMを動作させてよく、またそのようなVMの数はホストシステム10の動作中に変化してよい。いくつかの実施形態において、各VM32a〜bはそれぞれゲストオペレーティングシステム34a〜bおよび/またはソフトウェアアプリケーション42a〜bおよび42c〜dの集合を、同時にかつホストシステム10上で実行する他のVMとは独立して実行する。各OS34a〜bはそれぞれのVM32a〜bの(仮想化)ハードウェアへのインタフェースを提供するソフトウェアを備え、またそれぞれ、それぞれのOS上で実行するアプリケーション42a〜bおよび42c〜dを計算するためのホストとして働く。オペレーティングシステム34a〜bはとりわけWindows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはアンドロイド(商標)などの任意の広く入手可能なオペレーティングシステムを備えてよい。アプリケーション42a〜dはとりわけ文書処理、画像処理、データベース、ブラウザ、電子通信アプリケーション、およびマルウェア対策アプリケーションを含んでよい。
[0027]図3は、本発明のいくつかの実施形態に係るホストシステム10上で実行するソフトウェアオブジェクトの階層を例示する。図3は当該技術分野で層または保護リングとしても知られるプロセッサ特権レベルの観点から表現される。いくつかの実施形態において、ハイパーバイザ30はプロセッサ12の制御権を最高の特権レベル(典型的にはルートモードとして、またはIntelプラットフォーム上のVMXrootとして知られる)で得て、よってホストシステム10上で実行する他のソフトウェアに仮想マシン32として提示されるハードウェア仮想化プラットフォームを作成する。図2のOS34a〜bのようなオペレーティングシステム34がVM32の仮想環境内で実行し、OS34はハイパーバイザ30よりも低いプロセッサ特権(例えば、カーネルモードまたはIntelプラットフォーム上のリング0)を有する。OS34はさらにOS特権レベルで実行する保護OSオブジェクト36aを含んでよい。いくつかの実施形態において、保護OSオブジェクト36aは、さらに以下に示すように、ドライバオブジェクトなどのマルウェア保護するように選択されるデータ構造を備える。図2のアプリケーション42a〜dのようなアプリケーション42e〜fの集合がOS34の特権レベルよりも低いプロセッサ特権レベル(例えば、Intelプラットフォーム上のユーザモード)で実行する。
[0028]いくつかの実施形態において、マルウェア対策アプリケーション44が典型的にはアプリケーション42e〜fと同じプロセッサ特権レベルでOS34上で実行する。例示的なマルウェア対策アプリケーション44には、アンチウイルスプログラム、またはアンチウイルス、アンチスパイウェアおよび他のコンピュータセキュリティアプリケーションを備えるより大きなソフトウェアスイートが含まれる。いくつかの実施形態において、マルウェア対策ドライバ36bがOS34と同様のプロセッサレベルで実行する。ドライバ36bは、例えばメモリのマルウェアシグネチャをスキャンするためにおよび/またはOS34上で実行するソフトウェアオブジェクトのマルウェアを示す挙動を検出するために、機能をマルウェア対策アプリケーション44に提供する。
[0029]いくつかの実施形態において、イントロスペクションエンジン40は実質的にハイパーバイザ30と同じ特権レベルで実行し、またVM32などの仮想マシンのイントロスペクション(内観)を実施するように構成される。VMの、またはそれぞれのVM上で実行するソフトウェアオブジェクトのイントロスペクションはとりわけ、ソフトウェアオブジェクトの挙動を分析すること、そのようなソフトウェアオブジェクトのメモリアドレスを決定および/またはアクセスすること、特定のプロセスによるそのようなアドレスに配置されるメモリの内容へのアクセスを制限すること、およびそのような内容を分析することを含んでよい。いくつかの実施形態において、イントロスペクションエンジン40の対象となるソフトウェアオブジェクトはプロセス、命令ストリーム、レジスタ、およびとりわけページテーブルやドライバオブジェクトなどのデータ構造を備える。
[0030]例示的な動作では、メモリイントロスペクションエンジン40はマルウェアから保護されるソフトウェアオブジェクトから成る保護エリア38を設定してよい。そのようなオブジェクトを保護することは、それぞれのオブジェクトに属するデータを記憶するメモリ領域へのアクセスを制限することを含んでよい。ハイパーバイザ30がVM32のメモリ空間の制御権を有しているので、OS34により使用されるメモリの特定の領域を保護することは、例えばハイパーバイザ30がそれぞれのメモリ領域への適切なアクセス権を設定することにより達成してよい。いくつかの実施形態において、保護エリア38は保護OSオブジェクト36aおよびマルウェア対策ドライバ36bを含む。OS34がLinux(登録商標)オペレーティングシステムである場合、例示的な保護OSオブジェクト36aはとりわけカーネル(sys_call_tableなどの読み取り専用コードおよび/またはデータ)、sysenter/syscall制御レジスタ、ならびにアドレスint 0x80(syscall)および/またはint 0x01を含む。Windows(登録商標) OSの例示的な保護オブジェクトはカーネル(システムサービスディスパッチテーブルを含む、読み取り専用コードおよび/またはデータ)、各種記述子テーブル(例えば、割り込み、全体および/またはローカル)、sysenter/syscall制御レジスタならびに/または割り込み記述子テーブルレジスタ(IDTR)、グローバル記述子テーブルレジスタ(GDTR)、およびローカル記述子テーブルレジスタ(LDTR)などの他のレジスタを含む。いくつかの実施形態において、保護OSオブジェクト36aはとりわけ、特定のドライバオブジェクトおよび高速I/Oディスパッチテーブル(例えば、disk、atapi、clfs、fltmgr、ntfs、fastfat、iastor、iastorv)も備えてよい。他の保護OSオブジェクト36aは、ia32_systenter_eip、ia32_sysenter_esp、ia32_efer、ia32_star、ia32_lstar、およびia32_gs_baseなどの特定のモデル固有レジスタ(MSRs:Model Specific Register)を含んでよい。いくつかの実施形態において、イントロスペクションエンジン40はまた、悪意のあるコードを収容するアドレスへの不正な再ルーティングを防止するために、ページテーブルを保護する。
[0031]仮想マシンは典型的には仮想化物理メモリ、すなわちホストシステム10の実際の物理メモリ14の仮想表現で動作する。仮想化物理メモリは各ゲストVM32a〜bに固有の仮想化アドレスの連続した空間を備え、上記空間の部分が物理メモリ14および/または物理記憶装置20内のアドレスにマッピングされる。仮想化をサポートするように構成されたシステムでは、そのようなマッピングは典型的には拡張ページテーブル(EPT:Extended Page Table)または入れ子ページテーブル(NPT:Nested Page Table)などの、プロセッサ12により制御される専用のデータ構造により達成される。そのようなシステムでは、仮想化物理メモリは当該技術分野でページとして知られる単位で分割してよく、ページは物理メモリにEPTおよび/またはNPTなどの機構を介して個別にマッピングされる仮想化物理メモリの最小単位を表し、すなわち物理および仮想化物理メモリ間のマッピングはページ粒度で実施される。すべてのページは典型的には所定のサイズ、例えば、4キロバイト、2メガバイトなどを有する。仮想化物理メモリの分割は通常ハイパーバイザ30により構成される。いくつかの実施形態において、ハイパーバイザ30はEPT/NPTおよびその結果物理メモリと仮想化物理メモリとの間のマッピングをも構成する。いくつかのハードウェア構成では、ハイパーバイザ30は例えばそれぞれのページへの読み書きアクセス権を設定することにより、各ページ内に格納されるデータへのアクセスを選択的に制御することができるようになる。そのような権利は例えばEPTまたはNPT内のそれぞれのページのエントリを改変することにより設定してよい。ハイパーバイザ30はこのように、どのソフトウェアオブジェクトが各ページ内のアドレスに記憶されるデータにアクセスしてよいか選択してよく、また例えば、読み取り、書き込みなど、どの操作がそれぞれのデータに許可されるか示してよい。ソフトウェアオブジェクトによる、そのオブジェクトがそれぞれの権利を有していないページに対する、データを読み取る、またはデータを書き込むなどの操作を実施しようとする試行は仮想マシン終了イベント(例えばIntelプラットフォーム上のVMExitイベント)をトリガしてよい。いくつかの実施形態において、仮想マシン終了イベントはプロセッサの制御権をそれぞれのソフトウェアオブジェクトを実行するVMからハイパーバイザ30に移譲し、よって不正な読み/書きの試行を防止する。
[0032]いくつかの実施形態において、OS34は仮想メモリ空間(論理アドレス空間とも呼ぶ)を構成し、上記仮想メモリ空間を図3でのアプリケーション42e〜fおよび44などのアプリケーションに、および/または保護オブジェクト36a〜bなどの別のソフトウェアオブジェクトに公開する。そのようなシステムでは、OS34は例えばページテーブル機構を使用して、上記仮想メモリ空間とVM32の仮想化物理メモリとの間のマッピングを構成し維持する。いくつかの実施形態において、上記仮想メモリ空間はまたページに分割され、そのようなページはOS34により仮想化物理メモリに個別にマッピングされる仮想メモリの最小単位を表す(仮想から仮想化物理メモリへのマッピングはページ粒度で実施される)。
[0033]図4は、図2に示す実施形態におけるメモリアドレスの例示的なマッピングを例示する。アプリケーション42aまたはゲストOS34aなどのソフトウェアオブジェクトにはゲストOS34aにより仮想アドレス空間214aが割り当てられる。それぞれのソフトウェアオブジェクトが例示的なメモリアドレス50aにアクセスしようと試行すると、アドレス50aはゲストVM32aの仮想化プロセッサにより、ゲストOS34aにより構成され制御されるページテーブルに従って、仮想マシン32aの仮想化物理メモリ空間114a内のアドレス50bに変換される。アドレス50bは当該技術分野でゲスト物理アドレスとしても知られる。仮想化物理メモリ114aを構成し制御するハイパーバイザ30は次いで例えば上述のようにEPTまたはNPT手段を使用して、アドレス50bをホストシステム10の物理メモリ14内のアドレス50cにマッピングする。
[0034]同様に、仮想メモリ空間214bがゲストOS34bによりゲストVM32b上で実行するアプリケーション(例えば42c)または他のソフトウェアオブジェクトのために設定される。空間214b内の例示的な仮想アドレス50dがゲストVM32bの仮想化プロセッサにより、ゲストOS34bにより構成され制御される変換テーブルに従って、ゲストVM32bの仮想化物理メモリ空間114b内のアドレス50eに変換される。アドレス50eはさらにハイパーバイザ30により物理メモリ14内のアドレス50fにマッピングされる。
[0035]いくつかの実施形態において、ハイパーバイザ30は物理メモリ14の表現を備える自身の仮想メモリ空間214cを設定し、空間214cでのアドレスを物理メモリ14でのアドレスにマッピングするために変換機構(例えば、ページテーブル)を活用する。図4では、そのような例示的なマッピングはアドレス50gをアドレス50hに変換する。同様に、物理メモリ14での50cと50fなどのアドレスはハイパーバイザ30の仮想メモリ空間214c内でそれぞれアドレス50kと50mに対応する。
[0036]OS34a〜bの本質的なタスクは、メモリの部分をそれぞれのVM32a〜b上で実行するソフトウェアオブジェクトに動的に割り当てることと、そのような部分がもはやそれぞれのプロセスにより必要とされない場合に、それらを再利用できるように解放することである。そのようなメモリ割り当ては仮想メモリ214a〜bのレベルで、またはそれぞれの仮想マシンの仮想化物理メモリ114a〜bのレベルで実行してよい。メモリ割り当ておよび割り当て解除は典型的には、Windows(登録商標)でのKeAllocatePoolWithTagやKeFreePoolWithTagなどの専用のOSメモリ管理関数により実施される。
[0037]前述のメモリマッピング機構により、対象オブジェクトに対するメモリ割り当ては常に、それぞれのVMの仮想化物理メモリの一部分を対象オブジェクトに割り当てる結果になる。それぞれの部分のサイズは、ページサイズとそれぞれのソフトウェアオブジェクトのメモリ要件とに従って、一ページの一部分のみ、または一ページを超えてよい。以下では一部分は、ページの集合の各ページがそれぞれの部分の一部を含む場合、ページの集合に及ぶと言う。いくつかのオブジェクトに同じページの別個の部分が割り当てられてよい。図5は、複数のページ26a〜dに分割される仮想化物理メモリの例示的な領域、および各々別個のソフトウェアオブジェクトに割り当てられる2つの部分52および54が同じページ26bに広がる例示的なメモリ割り当てを示す。別の例示的な部分56は2つのページ26c〜dに及ぶ。
[0038]対照的に図6は、本発明のいくつかの実施形態に係る例示的なメモリ割り当てを示す。以下に詳細に示すように、対象オブジェクトがマルウェア保護を必要とする場合、例えば対象オブジェクトが保護エリア38に属するドライバオブジェクトまたは他のオブジェクトである場合、保護準備モジュール46のいくつかの実施形態は対象オブジェクトに対するメモリ割り当てを改変し、その結果対象オブジェクトの一部を含む各ページは対象オブジェクトのために予約される。
[0039]当業者は、ページの集合を対象オブジェクトのために予約することはいくつかの方法で達成してよいことを理解するであろう。いくつかの実施形態において、ページを予約することは、部分58がページ26f全体を占める図6の例に示すように、ページ全体を対象オブジェクトに割り当てることを含む。そのような排他的な割り当ては例えば、以下により詳細に示すように、それぞれのオブジェクトに割り当てられる部分のサイズをページサイズの整数倍に等しい新たなサイズに変更することにより達成してよい。対照的に図6の同じ例で、無保護ソフトウェアオブジェクトには別のページ26gのほんの一部分から成る部分60が割り当てられる。他の実施形態において、ページの集合を対象オブジェクトのために予約することは、必ずしも対象オブジェクトのサイズを改変することまたはページの集合全体を対象オブジェクトに割り当てることを含まないが、そうでなければ対象オブジェクト以外のオブジェクトにはそれぞれのページの集合内のメモリ空間は一切割り当てられないことを保証することにより達成してよい。例えば、ページを対象オブジェクトのために予約することは、以下により詳細に示すように、例えばOS34の初期化時に空ページの集合を予約すること、およびオブジェクトをそれぞれの空ページの集合内に割り当てる(または移動する)ことを含んでよい。
[0040]図7は、本発明のいくつかの実施形態に係るメモリイントロスペクションエンジン40により実施されるステップの例示的なシーケンスを示す。エンジン40はホストシステム10上で同時に実行する複数の仮想マシンを検査および/または保護するように構成してよい。図7に例示するステップはそのような各仮想マシンに対して繰り返してよい。ステップ102で、エンジン40はOS34の初期化を検出する。いくつかの実施形態において、ステップ102はハイパーバイザ30のレベルから、OS初期化を示すプロセッサイベントをリッスンすることを含む。OS初期化動作を実施するプロセッサ命令は典型的には、例えばIntelプラットフォーム上のリング0など、カーネルプロセッサ特権を必要とする。OS34の特権レベルから実行されたとき、そのような命令は、プロセッサ12の制御権をOS34からハイパーバイザ30に移譲する、Intelプラットフォーム上のVMExitイベントなどの仮想マシン終了イベントをトリガしてよい。仮想マシン終了イベントはしたがってハイパーバイザ30および/またはイントロスペクションエンジン40により分析してよい。OS初期化を示すイベントおよび/またはプロセッサ命令の例には割り込みおよびグローバル記述子テーブルの初期化が含まれ、これらはWindows(登録商標) OSの初期化の早い段階でLIDTおよび/またはLGDTなどの特権命令を使用することにより行われる。OS初期化を示すイベント/命令の他の例には、WRMSRマシン命令を使用することによりSYSENTERおよび/またはSYSCALLモデル固有レジスタに書き込むことが含まれ、これはOSのカーネルイメージがメモリにロードされた直後に行われる。さらに他の例には、とりわけマシンチェック構成レジスタ、およびFS/GSベースレジスタなどの、OS34によりプログラムされる他のモデル固有レジスタの初期化が含まれる。いくつかの実施形態おいて、そのようなイベント/命令を検出することはOS34が初期化されたことを示す。
[0041]ステップ104で、メモリイントロスペクションエンジン40のいくつかの実施形態はそれぞれのゲストVM上で現在実行中または初期化中のオペレーティングシステムの種類を識別する。例示的なOS種類にはとりわけWindows(登録商標)、Linux(登録商標)、MacOS、およびAndroidが含まれる。OS種類はWindows(登録商標)などの名称標識、およびとりわけ7、HomeまたはEnterpriseなどのバージョン標識を備えてよい。いくつかの実施形態において、ステップ104はそれぞれのゲストVMのモデル固有レジスタ(MSR)の内容に、またはそれぞれのMSRにより指し示されるメモリの一部分の内容に従ってOSの種類を識別することを含む。いくつかの実施形態において、エンジン40はそのようなMSRにステップ102で遮断された命令により書き込まれるデータに従ってOSの名称を決定してよい。例えばエンジン40は、SYSENTERにまたはSYSCALL MSRに書き込む命令を遮断し、現在実行中、または現在初期化中のOSの種類をそのような書き込み命令のパラメータに従って決定してよい。OS名称に関する情報を提供してよい他の例示的なレジスタには、とりわけ制御レジスタ、割り込み記述子テーブル(IDT)、およびグローバル記述子テーブル(GDT)が含まれる。MSR書き込みに従ってOS種類を識別するために、イントロスペクションエンジン40はさらに各OSに固有の高速システムコールハンドラ(例えば、SYSCALLまたはSYSENTER MSRの内容に従って処理されるシステムコール)の所定のライブラリに対するパターンマッチングを使用してよい。そのような高速システムコールライブラリはメモリイントロスペクションエンジン40を設けてよく、また定期的またはオンデマンドのソフトウェア更新を介して最新の状態に保ってよい。
[0042]いくつかの実施形態において、バージョン標識(例えばリリース名称、ビルド番号など)はOSのそれぞれの種類に固有の特定のカーネルデータ構造を構文解析することにより得てよい。OSバージョンの識別を可能にする例示的なデータ構造はLinux(登録商標)カーネルの特定のエクスポートシンボルまたは、とりわけNtBuildNumberなどの、Windows(登録商標)カーネルの特定のエクスポートされるシンボルである。
[0043]ステップ106で、メモリイントロスペクションエンジン40は、エンジン40が完全性保護を適用することに備えて、保護準備モジュール46にメモリ準備動作を実施するよう要求してよい。いくつかの実施形態において、そのようなメモリ準備動作はマルウェア保護するように選択される対象オブジェクトの割り当てを改変して、対象オブジェクトの一部を含むすべてのページがそれぞれの対象オブジェクトのために予約されるようにすることを含む。いくつかの実施形態において、ステップ106はマルウェア保護するように選択されるオブジェクトに後に排他的に割り当てられる未割り当てメモリページの予約プールを確立することを含んでよい。そのような予約プールを確立するために、保護準備モジュール46はそれぞれのプールを所定のサイズ(例えば、20MB)のダミーソフトウェアオブジェクトに割り当てるためにネイティブのOSメモリ割り当て関数を呼び出してよい。モジュール46はこのようにそれぞれのメモリのプールはネイティブのOSメモリ管理関数により実施されるさらなる割り当てには使用されないことを保証してよい。モジュール46の機能は図8〜10に関連してさらに以下に詳述する。
[0044]ステップ108で、メモリイントロスペクションエンジン40は保護する対象オブジェクトを選択する。いくつかの実施形態において、ステップ108はマルウェア保護を必要とするソフトウェアオブジェクト(図3での保護エリア38を参照)を、ステップ102〜104で決定されたOSの種類に従って識別することを含む。保護の対象となる例示的なオブジェクトはとりわけOSドライバオブジェクトとマルウェア対策ドライバ36bである。そのようなオブジェクトを識別するために、メモリイントロスペクションエンジン40はマルウェア保護を必要とするOS固有オブジェクトのリストを維持してよく、リストは定期的および/またはオンデマンドのソフトウェア更新により最新の状態に保ってよい。いくつかの実施形態において、エンジン40はOS34によるドライバをロードしようとする各試行を遮断し、それぞれのドライバの完全性および/またはシグネチャチェックのセットを実施してよい。そのようなチェックはそれぞれのドライバの一部のハッシュを既知のドライバに対して決定されたハッシュのライブラリとマッチングすることを含んでよく、またOS34が使用中および/または現在ロードしようと試行中の複数のドライバのうちの、マルウェア対策ドライバ36bの識別を可能にしてよい。一旦識別されると、ドライバ36bは、以下により詳細に示すように、OSの他のコンポーネントと共に保護してよい。
[0045]ステップ110は対象オブジェクトが初期化されるまで待機する。例えばドライバが初期化されると、OS34はいくつかの正規の構成書き込みを、それぞれのドライバに、またはそれぞれのドライバに従ってもしくはそれぞれのドライバが制御するように構成された装置に従って選択される他のソフトウェアオブジェクトに割り当てられるメモリ空間に実施し、エンジン40はそのような正規の書き込みがステップ110の一部として進行できるようにしてよい。対象オブジェクトが初期化されたかどうかを判定するために、エンジン40のいくつかの実施形態はドライバ初期化を示すイベントおよび/またはプロセッサ命令をリッスンしてよい。そのようなイベントの例には、とりわけそれぞれのオブジェクトの特定のエリアへの改変が含まれる。
[0046]ステップ112で、エンジン40はそれぞれの対象オブジェクトを、例えばOS34を侵害しようと試行する悪意のあるソフトウェアによる不要な改変から保護する。いくつかのそのようなメモリ保護機構が当該技術分野で公知である。いくつかの実施形態において、対象オブジェクトを保護することは、OS34によりそれぞれの対象オブジェクトに割り当てられるメモリ空間を書き込み保護することを含む。そのような書き込み保護は、メモリイントロスペクションエンジン40の要求に応じてハイパーバイザ30により、EPTまたはNPTなどのデータ構造を使用して実施してよい。例えばハイパーバイザ30は対象オブジェクトに割り当てられるメモリページを、それぞれのページのEPT/NPTアクセス権ビットを改変することにより、読み取り専用として設定してよい。あるいはハイパーバイザ30は対象オブジェクトに割り当てられるメモリページへ書き込みしようとする任意の試行を遮断し、それぞれの試行を分析のためにメモリイントロスペクションエンジン40にリダイレクトしてよい。書き込み試行を分析した後、メモリイントロスペクションエンジン40はそれぞれの書き込み動作を許可するかまたは拒否(中止)するかを決定してよい。ステップ108〜112はマルウェア保護を必要とするすべての対象オブジェクトに対して繰り返してよい。
[0047]いくつかの実施形態において、保護準備モジュール46により実施されるメモリ準備動作はマルウェア保護するように選択される対象ソフトウェアオブジェクトのメモリ割り当てを改変することを含み、上記の改変は前段で示したように(図7、ステップ108〜112)、エンジン40がそれぞれのソフトウェアオブジェクトの完全性保護を適用する以前に起きる。いくつかの実施形態において、モジュール46は、対象オブジェクトの一部を含むメモリページがそれぞれの対象オブジェクトのために予約されるように、メモリ割り当てを改変する。上記のメモリ割り当てを改変することは、OS34にネイティブのメモリ管理関数を実行した結果を改変すること、および/またはそれぞれのメモリ管理関数自体を改変することを含んでよい。ネイティブのメモリ管理関数はOS34の製造者により提供されるソフトウェアオブジェクトを備え、ネイティブの関数はメモリ割り当ておよび割り当て解除動作を実施する。そのような関数の例はWindows(登録商標) OSにネイティブのKeAllocatePoolWithTagやKeFreePoolWithTagである。
[0048]いくつかの実施形態において、保護準備モジュール46はステップ104でイントロスペクションエンジンにより決定されたOS種類に従って、ネイティブのメモリ管理関数の集合を、例えばそのような関数がそれぞれのゲスト仮想マシン32のメモリに常駐するメモリアドレスを決定することにより識別する。そのようなメモリアドレスを決定するために、モジュール46はカーネルバイナリイメージ(例えばWindows(登録商標)でのPortable Executable、Linux(登録商標)でのExecutable and Linkable Format)のエクスポートされる関数表などの特定のデータ構造にアクセスしてよい。
[0049]ネイティブのメモリ管理関数の識別後、モジュール46のいくつかの実施形態は続いて上記の関数を追加機能を提供することにより改変してよい。そのような改変は当該技術分野で公知の任意のフッキング方法を使用して達成してよい。例えばモジュール46は、それぞれのネイティブの関数に上書きまたは追加される、VMCall命令またはJMP命令などの、リダイレクションパッチを適用してよい。他の実施形態はそれぞれのメモリ管理関数のEPTエントリを、新たなアドレスを指し示すように、改変してよい。いくつかの実施形態において、そのようなパッチおよび/またはEPTフックの効果は、ネイティブの関数の実行を保護準備モジュール46により提供されるコードの断片にリダイレクトすることであり、そのようなコードの例示的な機能は以下に提示する。フッキング後、OS34が対象オブジェクトに関してメモリを割り当てようとまたはメモリを割り当て解除しようと試みると、コードの断片がそれぞれのネイティブのOSメモリ管理関数のコードの前にまたは代わりに実行されるであろう。
[0050]図8は、本発明のいくつかの実施形態に係る、Windows(登録商標)でのKeAllocatePoolWithTagなどのネイティブのOSメモリ割り当て関数の改変を含むステップの例示的なシーケンスを示す。シーケンスは保護準備モジュール46の一部を形成してよく、またそれぞれのメモリ割り当て関数に適用されるパッチ/フックにより実施されるリダイレクションの結果として実行してよい。ステップ122は、メモリ割り当てを要求するオブジェクトがマルウェア保護の資格があるかどうかを判定するために選択基準を適用する。そのような判定は例えばそれぞれの関数呼び出しのパラメータおよび/または引数に従って行われてよい。例示的な選択基準は、例えばドライバオブジェクトなど、その種類に従ってオブジェクトを選択することを含む。Windows(登録商標)系統からOS34を実行する実施形態において、割り当て中のオブジェクトの種類はネイティブのメモリ割り当て関数KeAllocatePoolWithTagの割り当てタグに従って決定してよい。例えば「Driv」タグはドライバオブジェクトを示す。代替の選択基準は、割り当てを要求するオブジェクトがマルウェア保護の対象となるオブジェクトのリストにあるかどうかを判定することを含む。そのようなリストは保護エリア38(図3)の構成要素を含んでよい。いくつかの実施形態において、追加の選択基準は、それぞれのオブジェクトのメモリ割り当てが後述の方法により安全に改変できるかどうかを判定することを含む。
[0051]ステップ124は対象オブジェクトがマルウェア保護の選択基準を満たすかどうかを判定する。いいえの場合、ステップ128は実行の制御権をそれぞれのOSのネイティブのメモリ割り当て関数に返す。対象オブジェクトが保護するように選択される場合、ステップ126で、保護準備モジュール46のいくつかの実施形態は対象オブジェクトのサイズをページサイズの整数倍に等しい新たなオブジェクトサイズに変更する。そのようにしてオブジェクトサイズを変更することは、効果的にメモリアロケータに、オブジェクトを収容するために必要な実際のメモリの量の代わりにページ全体の集合をそれぞれの対象オブジェクトに割り当てさせるかもしれない。いくつかの実施形態において、対象オブジェクトのサイズはページサイズの次に最も近い整数倍に丸められる。例えば320バイトの対象オブジェクトには4kBのページ全体を割り当ててよく、6kBのオブジェクトには2つの4kBのページ全体を割り当ててよい。いくつかの実施形態において、例えばサイズが少なくとも一ページであるメモリの一部分を割り当てる、Windows(登録商標) OSを実行する仮想マシンは、割り当てられる部分をページ境界に自動的に揃える(例えば、図6での部分58)。他の実施形態において、ステップ126は割り当てられる部分をページ境界に明示的に揃えることを含んでよく、その結果部分が及ぶすべてのページが対象オブジェクトに排他的に割り当てられる。当業者は、部分をページ境界に揃えることを達成する方法が多く存在し得ることを理解するであろう。例えばステップ126は、対象オブジェクトのサイズを一ページのサイズで大きくすること、およびポインタを結果的に割り当てられるメモリの部分へ変更することを含んでよい。ステップ126を完了した後、実行の制御権はネイティブのOSメモリ管理関数に返される。
[0052]図9は、保護ソフトウェアオブジェクトに割り当てられる部分が及ぶすべてのページがそれぞれのオブジェクトのために予約されるメモリ割り当てを保護準備モジュール46が達成してよい代替の様式を例示するステップの例示的なシーケンスを示す。図9に示すシーケンスは、Windows(登録商標)でのKeAllocatePoolWithTagなどのネイティブのOSメモリ割り当て関数の機能を改変することを含み、またそれぞれのメモリ割り当て関数に適用されるパッチ/フックに応答して実行してよい。ステップ132〜134のシーケンスは対象オブジェクトがマルウェア保護の基準を満たすかどうかを検証するものであり、ステップ132〜134は上述のステップ122〜124と同様の様式で進めてよい。対象オブジェクトが保護するようには選択されない場合、ステップ138はプロセッサの制御権をそれぞれのネイティブのメモリ割り当て関数に返す。対象オブジェクトがマルウェア保護するように選択される場合、ステップ136はネイティブの割り当て関数をバイパスし、保護オブジェクトのために予約されるメモリの領域内に配置される一部分を直接割り当てる。いくつかの実施形態において、ステップ136はOS34の初期化時にモジュール46により確立されるメモリの予約プール内に配置されるアドレスを示す割り当てポインタを決定することを含む(図7、ステップ106に関連して上記参照)。いくつかの実施形態において、モジュール46はさらに割り当てられる部分がページ境界に揃うように割り当てポインタを決定してよい。次にステップ140はステップ136で決定された割り当てのポインタを返す。
[0053]いくつかの実施形態において、保護準備モジュール46はまた、ネイティブのOSメモリ割り当て解除関数を実行した結果を変更することにより、またはそれぞれの関数自体を改変することにより割り当て解除プロセスを改変してよい。そのような改変は例えば、KeFreePoolWithTagなどのネイティブのOSメモリ割り当て解除関数をフックして追加の機能を含めることにより達成してよい。図10は、本発明のいくつかの実施形態に係る、メモリ割り当て解除関数のそのような改変を含むステップの例示的なシーケンスを示す。ステップ142〜144のシーケンスは割り当て解除中のオブジェクトのアドレスがイントロスペクションエンジン40および/またはハイパーバイザ30により書き込み保護されている(上記参照)かどうかを判定する。それぞれのアドレス/ページがそのような保護を有していない場合、ステップ148は実行の制御権をネイティブのOS割り当て解除関数に返す。それぞれのアドレス/ページがエンジン40および/またはハイパーバイザ30により書き込み保護されている場合、ステップ146で、メモリイントロスペクションエンジン40および/またはハイパーバイザ30の構成要素はステップ148に進む前に保護を解除してよい。いくつかの実施形態において、それぞれのオブジェクトの保護を解除することは、EPTまたはNPTの変化を操作してそれぞれのオブジェクトのアドレスを収容するページはもはや、例えば読み取り専用など、書き込み保護されていないことを示すことを含む。
[0054]上述の例示的なシステムおよび方法はコンピュータシステムなどのホストシステムをウイルスやルートキットなどのマルウェアから保護することを可能にする。従来のシステムでは、ルートキットはオペレーティングシステムと実質的に同様のプロセッサ特権レベルで動作することによりコンピュータシステムの制御権を得るかもしれない。対照的に本発明のいくつかの実施形態において、ハイパーバイザは最高特権レベルでコンピュータシステム上で実行し、オペレーティングシステムを仮想マシンに置き換える。いくつかの実施形態において、メモリイントロスペクションエンジンはハイパーバイザと同じプロセッサ特権レベルで実行する。マルウェア対策動作はしたがってオペレーティングシステムよりも高いプロセッサ特権レベルから行ってよい。いくつかの実施形態において、単一のメモリイントロスペクションエンジンはそれぞれのコンピュータシステム上で同時に実行する複数の仮想マシンを保護してよい。
[0055]いくつかの実施形態において、それぞれのシステムをマルウェアから保護することは、とりわけ特定のドライバ、レジスタ、およびページテーブルなどの重要なソフトウェアオブジェクトの集合を選択すること、およびそのようなオブジェクトへの悪意のある変更を防止することを含む。対象オブジェクトを保護するために、いくつかの実施形態はそれぞれのオブジェクトに割り当てられるメモリ空間へ書き込みしようとする試行を遮断することにより、そのような悪意のある変更を防止してよい。そのような遮断はハイパーバイザのレベルから実施してよい。
[0056]他の実施形態はそれぞれのオブジェクトに割り当てられるメモリ空間を読み取り専用として記すことにより対象オブジェクトを保護してよい。典型的なハードウェアおよびソフトウェア構成では、メモリはページとして知られる連続したアドレスの個々のブロックに分割される。アクセス許可、例えば読み書き許可は、典型的にはページ粒度で設定される、すなわち一ページ内のすべてのアドレスが同じアクセス許可を有する。したがって、対象オブジェクトのメモリ空間を保護することは、例えばそれぞれのオブジェクトに属するデータを含むページの集合を読み取り専用として記すことにより達成してよい。ページレベルアクセス許可は例えば、Intelプラットフォーム上での拡張ページテーブル(EPT)などの専用データ構造を使用して、ハイパーバイザにより制御される。
[0057]従来のシステムでは、OSがメモリ空間をそれぞれのシステム上で実行するソフトウェアオブジェクトに割り当てる場合、複数のソフトウェアオブジェクトは、例えばそれぞれのオブジェクトが小さなメモリ使用量を有すれば、同じページ内に割り当ててよい。いくつかの状況では、それぞれのオブジェクトの1つはOSに重要であり、したがってマルウェアからの保護を必要とするかもしれず、一方同じページからの別のオブジェクトは頻繁に正規の書き換えを必要とするかもしれない。アクセス許可はページ粒度で設定されるので、重要なオブジェクトを保護することは、重要なオブジェクトと同じページ内に存在するすべてのオブジェクトへの書き込みアクセスを拒否する結果になるかもしれない。保護ページ内に存在するメモリアドレスへ書き込みしようとする各試行は典型的には障害に終わり、次いでプロセッサの制御権をそれぞれの仮想マシンのOSからハイパーバイザに移譲する仮想マシン終了イベントに続く。そのようなイベントは、それぞれの仮想マシンの状態をプロセッサへまたはプロセッサからロードおよび/またはアンロードすることを含むかもしれず、さらに計算オーバーヘッドを増す。とりわけ保護オブジェクトを収容するページに書き込みしようとする各正規の試行はしたがって、コンピュータシステムの著しい減速をもたらすかもしれない。
[0058]対照的に、本発明のいくつかの実施形態は、メモリがマルウェア保護を必要とするソフトウェアオブジェクトに割り当てられる様式を改変し、その結果それぞれのオブジェクトの一部を含む各メモリページはそれぞれのオブジェクトのために予約される。そのような改変は完全性保護をそれぞれのソフトウェアオブジェクトに適用する以前に実施される。対象オブジェクトとメモリページを共有する他のオブジェクトはないことを保証することにより、本発明のいくつかの実施形態は、正規の書き込み試行の遮断により生じる計算オーバーヘッドを回避しつつ、完全性保護をページ粒度で可能にする。
[0059]いくつかの実施形態において、それぞれのOSにネイティブの割り当て様式を改変することは、OSのメモリ割り当ておよび割り当て解除関数を識別すること、およびそれぞれの関数をフックしてそれらの実行をハイパーバイザのプロセッサ特権レベルから実行される命令の集合にリダイレクトすることを含む。あるいは上記の改変は、それぞれの関数をそれぞれのOSを実行するVMの内で実行される命令の集合にリダイレクトし、命令の集合はハイパーバイザのレベルからそれぞれのVMのメモリに注入される。いくつかの実施形態において、メモリ割り当て関数は、保護を必要とするソフトウェアオブジェクトへのメモリページ全体の割り当てを強制するように改変され、割り当てられる部分はページ境界に揃えられる。したがって、保護を必要とするオブジェクトはもはや保護を必要としないオブジェクトと同じメモリページに割り当てられずにすむ。
[0060]代替の実施形態は、例えばOS初期化時にメモリの予約プールを予約することにより、対象オブジェクトに割り当てられる各ページが対象オブジェクトのために予約されることを保証する。オペレーティングシステムが対象オブジェクトに対するメモリ割り当てを要求すると、いくつかの実施形態は割り当てポインタを予約プール内のアドレスにリダイレクトしてよく、こうして対象オブジェクトをページの予約集合に効果的に移動する。
[0061]従来のマルウェア対策解決策は典型的には単一のオペレーティングシステムに合わせて調整される。1つのオペレーティングシステムと別のとの間の切り替えには、異なるバージョンのマルウェア対策ソフトウェアをロードする必要があるかもしれない。対照的に本発明のいくつかの実施形態において、現在実行中のオペレーティングシステムの種類やバージョンにかかわらず、同じメモリイントロスペクションエンジンがそれぞれのコンピュータシステムをマルウェア保護してよい。メモリイントロスペクションエンジンをハイパーバイザのレベルで実行することにより、かつオペレーティングシステムを仮想マシンに置き換えることにより、いくつかの実施形態はいくつかのオペレーティングシステムを同時に実行し保護してよい。いくつかの実施形態において、メモリイントロスペクションエンジンは各オペレーティングシステムを例えば起動時に動的に識別してよく、さらにOS固有ソフトウェアオブジェクトおよびデータ構造を保護してよい。
[0062]上述の実施形態は本発明の範囲から逸脱することなく多くの方法で変更してよいことは当業者には明らかであろう。したがって、本発明の範囲は以下の特許請求の範囲およびその法的均等物により定められるべきである。

Claims (29)

  1. 少なくとも1つのプロセッサを備えたホストシステムであって、前記少なくとも1つのプロセッサは、
    仮想マシンの仮想化物理メモリの一部分を、前記仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てるように構成されたオペレーティングシステムであって、前記仮想マシンは、ホストシステム上で実行するハイパーバイザにより公開され、前記仮想化物理メモリは複数のページに分割され、1つのページは、前記仮想化物理メモリとホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位である、オペレーティングシステムと、
    前記対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、前記対象ソフトウェアオブジェクトが前記選択基準を満たす場合に、前記対象ソフトウェアオブジェクトのメモリ割り当てを変更するように構成された保護準備モジュールであって、前記メモリ割り当てを変更することは、前記対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも前記対象ソフトウェアオブジェクトのために予約されることを保証することを含む、保護準備モジュールと
    を実行するように構成された、ホストシステム。
  2. 請求項1に記載のホストシステムであって、前記保護準備モジュールに接続されたメモリイントロスペクションエンジンであって、前記保護準備モジュールが前記メモリ割り当てを変更するのに応答して、前記対象ソフトウェアオブジェクトの少なくとも一部を含むすべてのページを書き込み保護するように構成されたメモリイントロスペクションエンジンをさらに備えたホストシステム。
  3. 請求項2に記載のホストシステムであって、前記メモリイントロスペクションエンジンは、
    前記対象ソフトウェアオブジェクトが初期化されたかどうかを判定し、
    それに応答して、前記対象ソフトウェアオブジェクトが初期化された場合に、前記対象ソフトウェアオブジェクトの少なくとも一部を含むすべてのページを書き込み保護する
    ようにさらに構成された、ホストシステム。
  4. 請求項1に記載のホストシステムであって、前記選択基準は、前記対象ソフトウェアオブジェクトを前記オペレーティングシステムの種類に従って選択することを含む、ホストシステム。
  5. 請求項4に記載のホストシステムであって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、前記仮想マシンのモデル固有レジスタ(MSR)の内容に従って前記オペレーティングシステムの前記種類を識別することを含む、ホストシステム。
  6. 請求項4に記載のホストシステムであって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、前記仮想マシンのモデル固有レジスタ(MSR)により指し示されるメモリの内容に従って前記オペレーティングシステムの前記種類を識別することを含む、ホストシステム。
  7. 請求項1に記載のホストシステムであって、前記メモリ割り当てを変更することは、前記オペレーティングシステムのメモリ割り当て関数をフックすることを含む、ホストシステム。
  8. 請求項1に記載のホストシステムであって、前記メモリ割り当てを変更することは、前記オペレーティングシステムのメモリ割り当て関数に、前記対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも前記対象ソフトウェアオブジェクトに排他的に割り当てるように指示することを含む、ホストシステム。
  9. 請求項8に記載のホストシステムであって、前記メモリ割り当て関数に指示することは、前記対象ソフトウェアオブジェクトのサイズをページサイズの整数倍に変更することを含む、ホストシステム。
  10. 請求項9に記載のホストシステムであって、前記メモリ割り当て関数に指示することは、前記一部分をページ境界に揃えることをさらに含む、ホストシステム。
  11. 請求項1に記載のホストシステムであって、前記保護準備モジュールはページの予約プールを確立するようにさらに構成され、前記プールはマルウェア保護ソフトウェアオブジェクトに割り当てるために予約され、前記メモリ割り当てを変更することはメモリページの前記予約プール内の前記一部分を割り当てることを含む、ホストシステム。
  12. 請求項1に記載のホストシステムであって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、
    前記対象ソフトウェアオブジェクトがドライバオブジェクトであるかどうかを判定することと、
    それに応答して、前記対象ソフトウェアオブジェクトがドライバオブジェクトである場合に、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすと判定することと
    を含む、ホストシステム。
  13. 請求項1に記載のホストシステムであって、前記保護準備モジュールは前記対象ソフトウェアオブジェクトの割り当て解除を変更するようにさらに構成され、前記割り当て解除を変更することは、
    前記対象ソフトウェアオブジェクトの少なくとも一部を含むページが書き込み保護されているかどうかを判定することと、
    それに応答して、前記ページが書き込み保護されている場合に、前記ページの書き込み保護を解除することと
    を含む、ストシステム。
  14. 請求項12に記載のホストシステムであって、前記割り当て解除を変更することは、前記オペレーティングシステムのメモリ割り当て解除関数をフックすることをさらに含む、ホストシステム。
  15. 仮想マシンの仮想化物理メモリの一部分を、前記仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てるように構成されたオペレーティングシステムを形成するために、ホストシステムの少なくとも1つのプロセッサを使用するステップであって、前記仮想マシンは、前記ホストシステム上で実行するハイパーバイザにより公開され、前記仮想化物理メモリは複数のページに分割され、1つのページは、前記仮想化物理メモリと前記ホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位である、ステップと、
    前記対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、前記対象ソフトウェアオブジェクトが前記選択基準を満たす場合に、前記対象ソフトウェアオブジェクトのメモリ割り当てを変更するために、前記少なくとも1つのプロセッサを使用するステップであって、前記メモリ割り当てを変更することは、前記対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも前記対象ソフトウェアオブジェクトのために予約されることを保証することを含む、ステップと
    を含む方法。
  16. 請求項15に記載の方法であって、前記メモリ割り当てを変更するのに応答して、前記対象ソフトウェアオブジェクトの少なくとも一部を含むすべてのページを書き込み保護するステップをさらに含む方法。
  17. 請求項16に記載の方法であって、前記対象ソフトウェアオブジェクトが初期化されたかどうかを判定するステップと、
    それに応答して、前記対象ソフトウェアオブジェクトが初期化された場合に、前記対象ソフトウェアオブジェクトの少なくとも一部を含むすべてのページを書き込み保護するステップと
    をさらに含む方法。
  18. 請求項15に記載の方法であって、前記選択基準は、前記対象ソフトウェアオブジェクトを前記オペレーティングシステムの種類に従って選択するステップを含む、方法。
  19. 請求項18に記載の方法であって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、前記仮想マシンのモデル固有レジスタ(MSR)の内容に従って前記オペレーティングシステムの前記種類を識別するステップを含む、方法。
  20. 請求項18に記載の方法であって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、前記仮想マシンのモデル固有レジスタ(MSR)により指し示されるメモリの内容に従って前記オペレーティングシステムの前記種類を識別するステップを含む、方法。
  21. 請求項15に記載の方法であって、前記メモリ割り当てを変更するステップは、前記オペレーティングシステムのメモリ割り当て関数をフックするステップを含む、方法。
  22. 請求項21に記載の方法であって、前記メモリ割り当てを変更するステップは、前記オペレーティングシステムのメモリ割り当て関数に、前記対象ソフトウェアオブジェクトの少なくとも一部を含むすべてのページを前記対象ソフトウェアオブジェクトに排他的に割り当てるように指示するステップを含む、方法。
  23. 請求項22に記載の方法であって、前記メモリ割り当て関数に指示するステップは、前記対象ソフトウェアオブジェクトのサイズをページサイズの整数倍に変更するステップを含む、方法。
  24. 請求項23に記載の方法であって、前記メモリ割り当て関数に指示するステップは、前記一部分をページ境界に揃えるステップをさらに含む、方法。
  25. 請求項15に記載の方法であって、前記メモリ割り当てを変更するステップは、
    ページの予約プールを確立するステップであって、前記プールはマルウェア保護ソフトウェアオブジェクトに割り当てるために予約される、ステップと、
    メモリページの前記予約プール内の前記一部分を割り当てるステップと
    を含む、方法。
  26. 請求項15に記載の方法であって、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすかどうかの前記判定は、
    前記対象ソフトウェアオブジェクトがドライバオブジェクトであるかどうかを判定するステップと、
    それに応答して、前記対象ソフトウェアオブジェクトがドライバオブジェクトである場合に、前記対象ソフトウェアオブジェクトがマルウェア保護の前記選択基準を満たすと判定するステップと
    を含む、方法。
  27. 請求項15に記載の方法であって、前記対象ソフトウェアオブジェクトの割り当て解除を変更するために、前記少なくとも1つのプロセッサを使用するステップをさらに含み、前記割り当て解除を変更するステップは、
    前記対象ソフトウェアオブジェクトの少なくとも一部を含むページが書き込み保護されているかどうかを判定するステップと、
    それに応答して、前記ページが書き込み保護されている場合に、前記ページの書き込み保護を解除するステップと
    を含む、方法。
  28. 請求項27に記載の方法であって、前記割り当て解除を変更するステップは、前記オペレーティングシステムのメモリ割り当て解除関数をフックするステップをさらに含む、方法。
  29. 命令を符号化している非一時的コンピュータ可読媒体であって、前記命令は、ホストシステムの少なくとも1つのプロセッサにより実行されたときに、前記少なくとも1つのプロセッサに、
    仮想マシンの仮想化物理メモリの一部分を、前記仮想マシン内で実行する対象ソフトウェアオブジェクトに割り当てることであって、前記仮想マシンは、前記ホストシステム上で実行するハイパーバイザにより公開され、前記仮想化物理メモリは複数のページに分割され、1つのページは、前記仮想化物理メモリと前記ホストシステムの物理メモリとの間で個別にマッピングされるメモリの最小単位である、割り当てることと、
    前記対象ソフトウェアオブジェクトがマルウェア保護の選択基準を満たすかどうかの判定に応答して、前記対象ソフトウェアオブジェクトが前記選択基準を満たす場合に、前記対象ソフトウェアオブジェクトのメモリ割り当てを変更することであって、前記メモリ割り当てを変更することは、前記対象ソフトウェアオブジェクトの少なくとも一部を含むどのページも前記対象ソフトウェアオブジェクトのために予約されることを保証することを含む、変更することと
    を実行させる、非一時的コンピュータ可読媒体。
JP2015559213A 2013-02-22 2014-02-04 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン Active JP6218859B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/774,720 2013-02-22
US13/774,720 US8875295B2 (en) 2013-02-22 2013-02-22 Memory introspection engine for integrity protection of virtual machines
PCT/RO2014/000006 WO2014129918A1 (en) 2013-02-22 2014-02-04 Memory introspection engine for integrity protection of virtual machines

Publications (2)

Publication Number Publication Date
JP2016511903A JP2016511903A (ja) 2016-04-21
JP6218859B2 true JP6218859B2 (ja) 2017-10-25

Family

ID=50389476

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015559213A Active JP6218859B2 (ja) 2013-02-22 2014-02-04 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン

Country Status (13)

Country Link
US (1) US8875295B2 (ja)
EP (1) EP2959392B1 (ja)
JP (1) JP6218859B2 (ja)
KR (1) KR101863174B1 (ja)
CN (1) CN105190570B (ja)
AU (1) AU2014219466B2 (ja)
CA (1) CA2897747C (ja)
ES (1) ES2873229T3 (ja)
HK (1) HK1214663A1 (ja)
IL (1) IL239855B (ja)
RU (1) RU2640300C2 (ja)
SG (1) SG11201505931RA (ja)
WO (1) WO2014129918A1 (ja)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8989705B1 (en) 2009-06-18 2015-03-24 Sprint Communications Company L.P. Secure placement of centralized media controller application in mobile access terminal
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
US9066230B1 (en) 2012-06-27 2015-06-23 Sprint Communications Company L.P. Trusted policy and charging enforcement function
US8649770B1 (en) 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US9183412B2 (en) 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US8954588B1 (en) 2012-08-25 2015-02-10 Sprint Communications Company L.P. Reservations in real-time brokering of digital content delivery
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9104840B1 (en) 2013-03-05 2015-08-11 Sprint Communications Company L.P. Trusted security zone watermark
US9075995B2 (en) * 2013-03-11 2015-07-07 Microsoft Technology Licensing, Llc Dynamically loaded measured environment for secure code launch
US9335886B2 (en) * 2013-03-13 2016-05-10 Assured Information Security, Inc. Facilitating user interaction with multiple domains while preventing cross-domain transfer of data
US9613208B1 (en) * 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US9049186B1 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone re-provisioning and re-use capability for refurbished mobile devices
US9049013B2 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone containers for the protection and confidentiality of trusted service manager data
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9021585B1 (en) 2013-03-15 2015-04-28 Sprint Communications Company L.P. JTAG fuse vulnerability determination and protection using a trusted execution environment
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
US8984592B1 (en) 2013-03-15 2015-03-17 Sprint Communications Company L.P. Enablement of a trusted security zone authentication for remote mobile device management systems and methods
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
US9069952B1 (en) 2013-05-20 2015-06-30 Sprint Communications Company L.P. Method for enabling hardware assisted operating system region for safe execution of untrusted code using trusted transitional memory
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9183606B1 (en) 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
US9965310B2 (en) * 2013-08-28 2018-05-08 Empire Technology Development Llc Virtual machine exit analyzer
CN105683985B (zh) * 2013-10-29 2018-12-21 慧与发展有限责任合伙企业 用于虚拟机内省的***、方法及非暂时性计算机可读介质
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9161325B1 (en) 2013-11-20 2015-10-13 Sprint Communications Company L.P. Subscriber identity module virtualization
US9118655B1 (en) 2014-01-24 2015-08-25 Sprint Communications Company L.P. Trusted display and transmission of digital ticket documentation
US10078752B2 (en) 2014-03-27 2018-09-18 Barkly Protects, Inc. Continuous malicious software identification through responsive machine learning
US9733976B2 (en) * 2014-03-27 2017-08-15 Barkly Protects, Inc. Method and apparatus for SYSRET monitoring of system interactions
US9977895B2 (en) * 2014-03-27 2018-05-22 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US9973531B1 (en) * 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9230085B1 (en) 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
US20160062655A1 (en) * 2014-08-28 2016-03-03 Endgame, Inc. System and Method for Improved Memory Allocation in a Computer System
US9600664B1 (en) 2014-09-03 2017-03-21 Amazon Technologies, Inc. Monitoring execution environments for approved configurations
WO2016037650A1 (en) * 2014-09-10 2016-03-17 Irdeto B.V. Memory privilege
US10044675B1 (en) 2014-09-30 2018-08-07 Palo Alto Networks, Inc. Integrating a honey network with a target network to counter IP and peer-checking evasion techniques
US9882929B1 (en) 2014-09-30 2018-01-30 Palo Alto Networks, Inc. Dynamic selection and generation of a virtual clone for detonation of suspicious content within a honey network
US9860208B1 (en) 2014-09-30 2018-01-02 Palo Alto Networks, Inc. Bridging a virtual clone of a target device in a honey network to a suspicious device in an enterprise network
US9495188B1 (en) 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US9716727B1 (en) 2014-09-30 2017-07-25 Palo Alto Networks, Inc. Generating a honey network configuration to emulate a target network environment
US9921979B2 (en) 2015-01-14 2018-03-20 Red Hat Israel, Ltd. Position dependent code in virtual machine functions
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9189630B1 (en) 2015-01-21 2015-11-17 AO Kaspersky Lab Systems and methods for active operating system kernel protection
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
US9600190B2 (en) 2015-02-27 2017-03-21 Red Hat Israel, Ltd. Virtual machine functions for multiple privileged pages
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10496284B1 (en) * 2015-06-10 2019-12-03 EMC IP Holding Company LLC Software-implemented flash translation layer policies in a data processing system
US11010054B1 (en) 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10515014B1 (en) 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US10503416B1 (en) 2015-06-10 2019-12-10 EMC IP Holdings Company LLC Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10395029B1 (en) * 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
RU2609761C1 (ru) * 2015-09-30 2017-02-02 Акционерное общество "Лаборатория Касперского" Способ выполнения кода в режиме гипервизора
US10222632B2 (en) * 2015-10-01 2019-03-05 Verily Life Sciences Llc Lens-to-lens communication for contact lenses
US10281743B2 (en) 2015-10-01 2019-05-07 Verily Life Sciences Llc Eye convergence detection with contact lenses
KR102513961B1 (ko) * 2015-11-11 2023-03-27 삼성전자주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
US9965313B2 (en) * 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10255088B2 (en) 2016-05-13 2019-04-09 Red Hat Israel, Ltd. Modification of write-protected memory using code patching
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
KR101970176B1 (ko) * 2016-10-24 2019-04-17 주식회사 산엔지니어링 가상 플랫폼 기반의 통합 항해 시스템
US9798482B1 (en) * 2016-12-05 2017-10-24 Red Hat, Inc. Efficient and secure memory allocation in virtualized computer systems
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
CN106844005B (zh) * 2016-12-29 2020-04-14 北京瑞星网安技术股份有限公司 基于虚拟化环境下的数据恢复方法及***
US10031872B1 (en) * 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
EP3379445B1 (en) 2017-03-22 2024-06-12 Diebold Nixdorf Systems GmbH System and method to generate encryption keys based on information of peripheral devices
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
US10742491B2 (en) 2017-07-20 2020-08-11 Vmware, Inc. Reducing initial network launch time of container applications
US10579439B2 (en) 2017-08-29 2020-03-03 Red Hat, Inc. Batched storage hinting with fast guest storage allocation
US10956216B2 (en) 2017-08-31 2021-03-23 Red Hat, Inc. Free page hinting with multiple page sizes
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
US10565376B1 (en) 2017-09-11 2020-02-18 Palo Alto Networks, Inc. Efficient program deobfuscation through system API instrumentation
US10474382B2 (en) 2017-12-01 2019-11-12 Red Hat, Inc. Fast virtual machine storage allocation with encrypted storage
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
US10922096B2 (en) * 2018-02-28 2021-02-16 Vmware, Inc. Reducing subsequent network launch time of container applications
US11775201B2 (en) * 2018-08-08 2023-10-03 Huawei Technologies Co., Ltd. Apparatus and method for providing one time programmable memory features in a hypervisor of a computing device
US11436141B2 (en) 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
US11265346B2 (en) 2019-12-19 2022-03-01 Palo Alto Networks, Inc. Large scale high-interactive honeypot farm
US11271907B2 (en) 2019-12-19 2022-03-08 Palo Alto Networks, Inc. Smart proxy for a large scale high-interaction honeypot farm
KR102370848B1 (ko) * 2020-11-17 2022-03-07 주식회사 시큐브 분할된 보안 모듈을 구비하는 컴퓨터 장치 및 보안 모듈 업데이트 방법
US20230128720A1 (en) * 2021-10-21 2023-04-27 Microsoft Technology Licensing, Llc Securely redirecting system service routines
WO2023069166A1 (en) * 2021-10-21 2023-04-27 Microsoft Technology Licensing, Llc Securely redirecting system service routines

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851057B1 (en) * 1999-11-30 2005-02-01 Symantec Corporation Data driven detection of viruses
US6779099B2 (en) * 2001-07-20 2004-08-17 Chien-Tzu Hou Operation method for controlling access attributes of a memorized page of a memory unit and its structure
KR101044173B1 (ko) * 2003-03-06 2011-06-24 마이크로소프트 코포레이션 분산형 컴퓨팅 시스템상에서 분산형 애플리케이션들을 설계, 배포 및 관리하기 위한 방법 및 장치, 자원 관리자 및 컴퓨터 판독가능 기록 매체
WO2006012058A1 (en) * 2004-06-28 2006-02-02 Japan Communications, Inc. Systems and methods for mutual authentication of network
US7277999B1 (en) 2004-08-12 2007-10-02 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7836504B2 (en) * 2005-03-01 2010-11-16 Microsoft Corporation On-access scan of memory for malware
US7380049B2 (en) 2005-09-06 2008-05-27 Intel Corporation Memory protection within a virtual partition
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
GB0525871D0 (en) * 2005-12-20 2006-02-01 Symbian Software Ltd Malicious software detecting in a computing device
US20140373144A9 (en) * 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US20080320594A1 (en) * 2007-03-19 2008-12-25 Xuxian Jiang Malware Detector
US7657695B1 (en) 2007-05-30 2010-02-02 Paravirtual Corporation Efficient processing of memory accesses to virtual hardware using runtime code patching
US7797748B2 (en) * 2007-12-12 2010-09-14 Vmware, Inc. On-access anti-virus mechanism for virtual machine architecture
US8839237B2 (en) * 2007-12-31 2014-09-16 Intel Corporation Method and apparatus for tamper resistant communication in a virtualization enabled platform
US8510828B1 (en) * 2007-12-31 2013-08-13 Symantec Corporation Enforcing the execution exception to prevent packers from evading the scanning of dynamically created code
US8104089B1 (en) * 2007-12-31 2012-01-24 Symantec Corporation Tracking memory mapping to prevent packers from evading the scanning of dynamically created code
JP4783392B2 (ja) * 2008-03-31 2011-09-28 株式会社東芝 情報処理装置および障害回復方法
EP2286333A4 (en) 2008-06-05 2012-08-08 Neocleus Israel Ltd SAFE MULTIPURPOSE COMPUTER CLIENT
US8381288B2 (en) * 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
RU2406138C1 (ru) * 2009-06-18 2010-12-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Система безопасности виртуализованной компьютерной системы
US8397242B1 (en) * 2009-06-30 2013-03-12 Symantec Corporation System and method for managing operations within virtual machines
US8838913B1 (en) * 2009-09-15 2014-09-16 Symantec Corporation System and method for locating a memory page in a guest virtual machine
US8327059B2 (en) 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
US8209510B1 (en) 2010-01-13 2012-06-26 Juniper Networks, Inc. Secure pool memory management
US8474039B2 (en) * 2010-01-27 2013-06-25 Mcafee, Inc. System and method for proactive detection and repair of malware memory infection via a remote memory reputation system
US20120240224A1 (en) * 2010-09-14 2012-09-20 Georgia Tech Research Corporation Security systems and methods for distinguishing user-intended traffic from malicious traffic
CN103154961A (zh) * 2010-09-30 2013-06-12 惠普发展公司,有限责任合伙企业 用于病毒扫描的虚拟机
KR101213572B1 (ko) * 2010-12-03 2012-12-18 한국과학기술원 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법
US8490090B2 (en) * 2011-02-17 2013-07-16 International Business Machines Corporation Multilevel support in a nested virtualization environment
CN102859502B (zh) * 2011-03-02 2016-03-23 松下电器(美国)知识产权公司 虚拟计算机***、虚拟计算机控制方法、及半导体集成电路
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US8893124B2 (en) 2011-03-31 2014-11-18 Intel Corporation Method, apparatus and system for limiting access to virtualization information in a memory
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US20140053272A1 (en) * 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US9043653B2 (en) * 2012-08-31 2015-05-26 International Business Machines Corporation Introspection of software program components and conditional generation of memory dump
US8910238B2 (en) * 2012-11-13 2014-12-09 Bitdefender IPR Management Ltd. Hypervisor-based enterprise endpoint protection
US10572665B2 (en) * 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US20140259169A1 (en) * 2013-03-11 2014-09-11 Hewlett-Packard Development Company, L.P. Virtual machines

Also Published As

Publication number Publication date
IL239855B (en) 2018-07-31
WO2014129918A1 (en) 2014-08-28
SG11201505931RA (en) 2015-09-29
US20140245444A1 (en) 2014-08-28
AU2014219466B2 (en) 2018-11-22
CA2897747C (en) 2019-12-31
US8875295B2 (en) 2014-10-28
EP2959392A1 (en) 2015-12-30
RU2015135541A (ru) 2017-03-30
CA2897747A1 (en) 2014-08-28
CN105190570B (zh) 2018-02-13
AU2014219466A1 (en) 2015-08-06
ES2873229T3 (es) 2021-11-03
KR20150118957A (ko) 2015-10-23
RU2640300C2 (ru) 2017-12-27
EP2959392B1 (en) 2021-03-31
KR101863174B1 (ko) 2018-05-31
IL239855A0 (en) 2015-08-31
HK1214663A1 (zh) 2016-07-29
JP2016511903A (ja) 2016-04-21
CN105190570A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
JP6218859B2 (ja) 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
JP6411494B2 (ja) 仮想マシンにおけるページフォールトインジェクション
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US9117081B2 (en) Strongly isolated malware scanning using secure virtual containers
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
JP2016526730A (ja) 仮想マシンにおけるマルウェア検出のためのプロセス評価
US10489185B2 (en) Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20180267818A1 (en) Hypervisor-assisted approach for locating operating system data structures based on notification data
US10620985B2 (en) Transparent code patching using a hypervisor
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
Li et al. Iso-UniK: lightweight multi-process unikernel through memory protection keys
US20210026785A1 (en) Enforcing code integrity using a trusted computing base
EP3308274B1 (en) Executing services in containers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170731

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170926

R150 Certificate of patent or registration of utility model

Ref document number: 6218859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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