JP2016197399A - オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 - Google Patents

オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 Download PDF

Info

Publication number
JP2016197399A
JP2016197399A JP2016017104A JP2016017104A JP2016197399A JP 2016197399 A JP2016197399 A JP 2016197399A JP 2016017104 A JP2016017104 A JP 2016017104A JP 2016017104 A JP2016017104 A JP 2016017104A JP 2016197399 A JP2016197399 A JP 2016197399A
Authority
JP
Japan
Prior art keywords
native image
assembly
image
native
parent assembly
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
JP2016017104A
Other languages
English (en)
Other versions
JP6469028B2 (ja
Inventor
ジー. イヴァノヴ ドミートリー
G Ivanov Dmitry
ジー. イヴァノヴ ドミートリー
エー.パブロフ ニキータ
A Pavlov Nikita
エー.パブロフ ニキータ
ブイ.シュヴェチョフ ドミートリー
V Shvetsov Dmitry
ブイ.シュヴェチョフ ドミートリー
エー.ゴルショニン ミハイル
A Gorshenin 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 JP2016197399A publication Critical patent/JP2016197399A/ja
Application granted granted Critical
Publication of JP6469028B2 publication Critical patent/JP6469028B2/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/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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F21/564Static detection by virus signature recognition
    • 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/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • 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
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • 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

Abstract

【課題】機器のオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセスを制御する。
【解決手段】ハードウェアプロセッサによって、機械語のネイティブイメージを取得する工程と、ネイティブイメージが生成された親アセンブリを識別する工程と、親アセンブリの信頼カテゴリーを決定する工程と、親アセンブリの信頼カテゴリーに基づいて、ネイティブイメージの信頼カテゴリーを決定する工程により、信頼カテゴリーが未信頼であるネイティブイメージのアクセスを機器のオペレーティング・システムのリソースに制限する。
【選択図】図4

Description

関連出願の相互参照。
本出願は、米国特許法第119条(a)〜(d)(35USC 119(a)−(d))下の優先権の利益を主張する。2015年3月31日に出願されたロシア特許出願2015111422号は、本明細書中に参照として援用されるものとする。
本開示は、コンピュータサイエンスの分野に関し、特に、コンピュータ装置のオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセス制御のためのシステム及び方法に関する。
現在、ユーザー機器(例えば、パーソナル・コンピュータ、スマートフォン、タブレットなど)にインストールできるソフトウェア・アプリケーションの数はかなり増大しており、これらのアプリケーションによって生成されるファイルの数も指数的に増えている。アプリケーションのインストールと操作において、ソフトウェア・アプリケーションにより生成される一定のファイルは、ユニーク(Unique)である。すなわち、ファイルが単一のコピーとして存在している。そのようなファイルを内容の詳細な分析をせずに分類することは、非常に難しいといえる。
しばしば、これらのファイルは、機械語の親アセンブリのイメージ(すなわち、ネイティブイメージ)であり、これは.NETテクノロジーの一部である。.NETアプリケーションは、いくつかのアセンブリを一緒に使って生成でき、アセンブリは、共通語ランタイム(CLR:Common Language Runtime)環境によって実行されるバイナリ・ファイルである。.NETアセンブリは以下のメタデータ要素を含む:
・ポータブル実行(PE:Portable Execution)ファイルヘッダ;
・CLRヘッダ;
・共通中間言語(CIL:Common Intermediate Language)コード;
・アセンブリのタイプ(例えば、クラス、インタフェース、構造体、列挙型、委譲型)に使用されるメタデータ;
・アセンブリのマニフェスト
・追加のビルトインリソース
一般的に、PEヘッダは、ウィンドウズ(登録商標)系のオペレーティング・システムにおいてロードされ且つ実行されるアセンブリを識別する。PEヘッダは、アプリケーションのタイプ(例えば、コンソールアプリケーション、グラフィック・ユーザ・インタフェース、コードライブラリなどを使用したアプリケーション)も識別する。
CLRヘッダは、すべての.NETアセンブリをサポートできるデータにより構成され、これによりCLR環境に維持できる。CLRヘッダは、フラグ、CLRバージョン、エントリポイントのようなデータ(例えば、main()関数の最初のアドレス)を含んでおり、これにより、実行環境が管理中のファイル(すなわちマネージコードを含むファイル)の構成を決定できる。
個々のアセンブリはCILコードを含んでおり、これはプロセッサに依存しない中間コードである。CILコードは、実行中にリアルタイムモードで特定のプロセッサの要求に対応する指示を与える動的(JIT:Just In Time)コンパイラによりコンパイルされる。
所要のどのようなアセンブリにも、アセンブリが参照をする外部のタイプ(すなわち、他のアセンブリにおいて示されるタイプ)だけではなく、アセンブリ内のタイプフォーマット(例えば、クラス、インタフェース、構造体、列挙型、委譲型など)を示すメタデータがある。実行環境において、メタデータは、メモリ上でのタイプの配置のためにバイナリファイルのタイプの場所を決定し、タイプメソッドのためにリモート呼び出しの処理を簡素化する。
アセンブリはマニフェストを含み得るもので、これは、アセンブリ、アセンブリのバージョン、及びかかるアセンブリが参照をする何れの外部アセンブリをも生成する個々のモジュールを特徴づけるものである。マニフェストは、アセンブリの範囲を決定し、リソースとクラスへの接続を実現するのに必要なすべてのメタデータだけではなく、アセンブリのバージョンとアイデンティティのためのアセンブリの要求を指定するために必要なすべてのメタデータも含んでいる。以下のテーブルは、アセンブリのマニフェストに含まれているデータを示す。最初の4要素(頑健な名前データに加えて、アセンブリ、バージョン値、言語と地域パラメータの名前)は、アセンブリのアイデンティティを構成している。
何れの.NETアセンブリも、アプリケーションアイコン、グラフィックファイル、オーディオフラグメント又は文字列テーブル等の所要数の埋め込まれたリソースを含み得る。
アセンブリは、いくつかのモジュールで構成される。モジュールとは、アセンブリの一部であり、すなわちコードやリソースの論理集合である。アセンブリにおいて用いられる階層構造は、アセンブリ>モジュール>タイプ(クラス、インタフェース、構造体、列挙型、委譲型)>メソッドである。モジュールは、アセンブリそのものの内部(すなわちアセンブリのファイルの中)にあってもよいし、外部にあってもよい(すなわち、別個のファイル)。モジュールは、エントリポイントを持たないばかりか、何れも個別のバージョン値すら有さない。それゆえ、CLR環境によって直接ロードすることはできない。モジュールは、アセンブリのマニフェストを含むファイル等のアセンブリのメインモジュールによってのみロードされ得る。モジュールのマニフェストは、すべての外部アセンブリの列挙型だけを含んでいる。個々のモジュールは、アセンブリの個々のモジュールにおいて書き出されるユニークな識別子であるモジュールバージョン識別子(MVID:Module Version Identifier)を有し、これは個々のコンパイルに際して異なるものである。
図1Aは、単一ファイルアセンブリのレイアウト一例を示している。図示の通り、単一ファイルアセンブリにおいてすべての要件要素(例えば、ヘッダ、CILコード、タイプ、マニフェスト、及び資源のメタデータ)は、単一ファイル中に位置する拡張子が*.exe又は*.dllのファイルである(以下「*.xxx」とある場合は、拡張子を示すものとする)。
図1Bは、複数ファイルアセンブリの一例を示している。複数ファイルアセンブリは、単一の論理演算器という形式で配置され且つ同じバージョン値が所要の.NETモジュールのセットから構成される。一般に、これらのモジュールのうちの1つは、メインモジュールと呼ばれ、アセンブリのマニフェストを含み、すべての必要なCIL指示、メタデータ、ヘッダ、及び追加のリソースも含み得るものである。
メインモジュールのマニフェストは、メインモジュールのオペレーションが従属するすべての他の関連モジュールを示している。複数ファイルアセンブリのセカンダリモジュールは、*.netmoduleを割り当てられる。セカンダリの*.netmoduleモジュールは、外部アセンブリが、所要のモジュールに必要な外部アセンブリが列挙されるモジュールのレベルのマニフェストだけでなくタイプのCILコード、及びメタデータをも含んでいる。
何れのPEファイルでも、アセンブリは、PEファイル又は電子署名されたカタログファイル(*.cat)とともにあり、電子署名(例えばX.509)がされ得る。頑健な名前の署名を追加で又は別個に用いることもできる。すなわち、アセンブリの内容とRSA秘密鍵を用いて生成されたハッシュである。ハッシュは、アセンブリにおいてPEヘッダとメタデータの間に位置される。ハッシュにより、コンパイルされた以降はアセンブリにおいて変化がないことを確認することができる。単一ファイルアセンブリでは、ファイルがコンパイルされる時にPEヘッダの後に空きバイトが残される。ファイルのハッシュは、秘密鍵を用いて計算され、かかる空きバイトに入れられる。
複数ファイルアセンブリでは技術が異なる。アセンブリのメインファイルのハッシュを除き、ハッシュは、外部のモジュール用に計算され、その後においてデータは主要なアセンブリに入れられる。これらのモジュールは、自身の署名を有さず、メインモジュールに由来する種々のMVIDを有している。以下のアイテムはアセンブリのマニフェストに入れられる:
公開鍵、すなわち頑健な名前の署名の公開鍵。
公開鍵トークン、すなわち頑健な名前の署名の公開鍵部分のハッシュ。
一般に、アセンブリは分ける、プライベートアセンブリとパブリック/共有アセンブリとに分けられる。プライベートアセンブリは、常に使用中クライアントアプリケーション又はそのうちの1つ(すなわち、アプリケーションカタログ)と同一のカタログに置かれる。
これに対して、パブリックアセンブリは、同じ装置のいくつかのアプリケーションにおいて同時に使用され得る。パブリックアセンブリは、それらが使用されるアプリケーションと同一のカタログ中には置かれない。代わりに、グローバルアセンブリキャッシュ(GAC:Global Assenbly Cache)にインストールされる。GACは、以下のテーブルに示すようにいくつかの場所に同時に置かれる。
GACにインストールされているアセンブリは、頑健な名前を有するとよい。頑健な名前は、СОМにおいて用いられたグローバルユニーク識別子(GUID:Global Unique Identifier)と同じ現在の.NETであればよい。なお、128ビット数であるСОМのGUID値とは異なり、.NETの頑健な名前は、公開鍵と秘密鍵として知られている2つの相関する暗号鍵に部分的に基づいている。
頑健な名前は、少なくとも以下を含む相関データのセットから構成される。
アセンブリの名前(拡張子を除いたアセンブリの名前)。
アセンブリのバージョン値。
公開鍵の値。
アプリケーションのローカライズに用いる地域指定値(必須ではない)。
アセンブリの内容及び秘密鍵の値から得られたハッシュを用いて生成された電子署名。
アセンブリの頑健な名前を生成するために、ユーザーは、公開鍵及び秘密鍵を入手する。そして、公開鍵及び秘密鍵のデータは、例えば.NETフレームワークSDKの一部として提供されるユーティリティであるSn.exeにより生成される。このユーティリティが、異なるものであるが数学的には関連する鍵(公開鍵及び秘密鍵)のデータを含むファイルを生成する。このファイルの位置は、コンパイラによって示され、それはアセンブリのマニフェストにおいて公開鍵の全値を書き出す。
特定のケースにおいては、コンパイラは、アセンブリの全体の内容(例えば、CILコード、メタデータなど)に基づいて対応するハッシュを生成する。このハッシュは、固定の入力データに対して統計的に一意に定まる数値である。その結果、.NETアセンブリ(文字列の単一の文字でさえ)のあらゆるデータの変化に際して、コンパイラは異なるハッシュを生成する。生成されたハッシュは、その時、CLRヘッダデータ中のアセンブリに挿入された電子署名を得るためにファイル中に含まれている秘密鍵データと結合する。
図1Cは、頑健な名前を生成するための処理一例を示している。一般に、秘密鍵データはマニフェストにおいて示されるものではなく、(生成されたハッシュとともに)電子署名によってアセンブリの内容を識別するためにのみ使われる。頑健な名前を生成し割り当てる処理の完了後に、アセンブリはGACにインストールされる。
例えば、GACのアセンブリへのパスは、
C:¥Windows¥assembly¥GAC_32¥KasperskyLab¥2.0.0.0__b03f5f7f11d50a3a¥KasperskyLab.dll
であるとする。
C:¥Windows¥assemblyは、GACのパスである。
GAC_32は、プロセッサのGACアーキテクチャである。
¥KasperskyLabは、アセンブリの名前である。
¥2.0.0.0__b03f5f7f11d50a3aは、アセンブリ公開鍵メーカーのバージョンである。
KasperskyLab.dllは、アセンブリの名前とその拡張子である。
特定のケースには、アセンブリコードが次のように実行される。まず、どちらの処理(32又は64ビット)で実行開始すべきかを決定するためにPEヘッダが分析される。次に、選択されたファイルバージョンであるMSCorEE.dllがロードされる(この場合は、32ビットシステム用である、C:¥Windows¥System32¥MSCorEE.dll)。アセンブリのソースコードの例は、次の通りである。
static void Main()

System.Console.WriteLine("Kaspersky");
System.Console.WriteLine("Lab");
メソッドSystem.Console.WriteLine("Kaspersky")等のメソッド(便宜上、コードはそのオリジナルの形において示されて、CILコードにコンパイルされない)を実行するために、JITコンパイラは、СILコードをマシンコマンドに変換する。
図2は、アセンブリコードを実行するメソッドを一例を示している。まず、Main()関数を実行する前に、CLR環境はすべての宣言されたタイプ(クラス)を特定する(例えばタイプコンソール)。次に、CLR環境がメソッドを決定し、これらを統合した「構造体」(タイプコンソールにおいて定義されるような各々のメソッド)中のレコードにおいて結合する。エントリは、メソッドの実行があり得るアドレスを含んでいる。メソッドWriteLineへの第1アクセスでは、JITコンパイラが呼び出される。JITコンパイラは、呼び出し中のメソッド及びこのメソッドを定義するタイプに着目する。いったん呼びだされたら、対応するアセンブリのメタデータにおいて、JITコンパイラは、メソッドコード(すなわち、メソッドWriteLine(string str)を実行するコード)の実行を求める。JITコンパイラは、その時機械語にCILコードをコンパイルし、コンパイルされたコードを動的なメモリーに保存する。次に、JITコンパイラは、タイプデータ(コンソール)内部の「構造体」に戻り、呼び出し中のメソッドのアドレスとメモリセクションのアドレスとを機械語を用いて取り替える。メソッドMain()は、再びメソッドWriteLine(string str)にアクセスする。コードがすでにコンパイルされているので、かかるアクセスは、JITコンパイラの呼び出しを要しない。メソッドWriteLine(string str)の実行後、メインメソッドに戻る。
JITコンパイラがCILコードをプロセッサの指示に変換すると、最初の呼び出し時は、関数が「ゆっくり」としか機能しない。別の例ではすべて、コードはもともとメモリ内にあり所要のプロセッサ用に最適化されて提供される。しかし、別のプログラムが別の処理において開始されたときは、JITコンパイラはこのメソッド用に再び呼び出されることとなる。
上述のネイティブイメージは、最初の呼び出し時に関数がゆっくり動作する問題を解決する。アセンブリがロードされる時には、機械語が実行されるイメージがロードされる。このテクノロジーを使うことで、アプリケーションのロード及び実行を高速化することが可能となる。なぜなら、JITコンパイラは、何もコンパイルする必要がなく、及び/又は、毎回データ構造体を生成する必要もないからである。これらのすべてはイメージから取り去られる。GACにインストールされるかどうかに関わらず、イメージは、どのような所要の.NETアセンブリに対しても生成できる。コンパイルのための一例としては、以下のパスにあるユーティリティであるngen.exeが用いられる。
%WINDIR%¥Microsoft.NET¥フレームワーク¥<フレームワーク_version>¥ngen.exe
ngen.exeが開始されると、アセンブリのCILコードのために、JITコンパイラを用いて機械語が生成され、その結果はネイティブイメージキャッシュ(NIC:Native Image Cache)のディスクに保存される。コンパイルは、そのソフトウェアとハードウェアの構成を考慮しローカル機器においてなされる。それゆえ、イメージは、それがコンパイルされた環境においてのみ用いられるとよい。このようなイメージを生成している目的は、管理アプリケーションの有効性を向上させることにある。すなわち、機械語で生成されたアセンブリがJITコンパイルの代わりにロードされる。
アセンブリのコードが多くのアプリケーションによって使用されると、イメージが多くのアプリケーションにより同時に使われるようになるので、イメージが生成され、アプリケーションの立ち上げ及び実行速度を大幅に向上させる。また、JITコンパイラによってオンザフライで生成されたコードは、コンパイルされるアプリケーションのコピーによってのみ用いられる。
例えば、以下に示すようなコンパイル可能なイメージへのパスが形成される:
C:¥Windows¥assembly¥NativeImages_v4.0.30319_32¥Kaspersky¥9c87f327866f53aec68d4fee40cde33d¥Kaspersky.ni.dll,
C:¥Windows¥assembly¥NativeImagesは、システムのイメージキャッシュへのパスである;
v4.0.30319_32は、.NETフレームワークのバージョンとプロセッサアーキテクチャ(32又は64ビット)を示している。
Kasperskyは、分かりやすく示したアセンブリの名前である。
9c87f327866f53aec68d4fee40cde33dは、アプリケーションのハッシュである。
Kaspersky.ni.dllは、アセンブリの名前と拡張子である。
アセンブリの機械語のイメージを生成する時には、ngen.exeが以下のレジストリ(分岐あり)に保存される。
64ビットアプリケーション用:
HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥.NETフレームワーク¥v2.0.50727¥NGenService¥32ビットアプリケーション用:HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432Node¥Microsoft¥.NETフレームワーク¥v2.0.50727¥NGenService¥Roots¥.
GACに置かれたアセンブリに対してイメージがインストールされた場合は、以下の分岐が呼び出される。...¥Roots¥Accessibility,Version=2.0.0.0,Culture=Neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=msil.
当該アセンブリがGACにインストールされなかったならば、以下の分岐が呼び出される。
...¥Roots¥C:/Program Files(x86)/ATI Technologies/ATI.ACE/Core−Static/A4.Foundation.DLL
Windows8以前では、開発者は、アセンブリイメージの生成、アップデート及び除去を、ngen.exeを使用させること(又はインストーラを設定すること)で、常に自分自身で行わなければならなかった。Windows8では、イメージを一定のWindowsアセンブリのために自動的に生成できるようになっている。
あるケースでは、ネイティブイメージサービスは、イメージを制御するものとなる。これにより、機器が既に立ち上がっている場合、開発者は、機械語のイメージのインストール、アップデート、及び除去を後で実行するように後回しにすることができる。ネイティブイメージサービスは、アプリケーションやアップデートをインストールをするプログラムによって開始される。これは、ユーティリティngen.exeによって実行される。このサービスは、Windowsのレジストリに保存され且つそれぞれが個別の優先順位を有するリクエストキュー(Request Que)によって動作する。この優先順位とは、いつタスクを実行するかを決定するものである。
別のある例では、機械語のイメージは、開発者又は管理者の主導によるものだけではなく、.NETフレームワークプラットフォームによって自動的にも生成される。.NETフレームワークプラットフォームは、JITコンパイラのタスクをトラッキングしてイメージを自動的に生成する。一般に、アプリケーションの動作中にイメージを生成するのは非常に長い時間がかかるため、この操作はしばしば後に実行される。換言すると、CLR環境は、タスクをキューに追加し、機器の停止中にそれらを実行することになる。
CLR環境は、アセンブリバインディングモジュール(アセンブリをまとめるモジュール、すなわちアセンブリバインダ)を使い、これにより実行のタイミングを読み込むアセンブリを探し出し、それに対応するアセンブリを実行する。CLRは何種類かのバインディングモジュールを使うことができる。イメージバインディングモジュール(すなわち、ネイティブバインダ)は、イメージを検索するものである。所望イメージの検索は、2つの段階において実行されることとなる。第1に、所要のモジュールがファイルシステムにおいてアセンブリとイメージとを識別する。第2に、所要のモジュールは、アセンブリとイメージとの対応関係をチェックする。
図3は、バインディングモジュールを動作方法を示している。ステップ310において、アセンブリバインディングモジュールは、アセンブリを検索する。この検索は、検索されるアセンブリ自体は署名されるもののその内容が読まれないことが前提であるが、GACとアセンブリが開かれメタデータが読み込まれるアプリケーションカタログとにおいて実行される。
次に、ステップ320では、イメージバインディングモジュールが識別されたアセンブリに対応するNICのイメージを検索する。イメージが識別される場合には、ステップ330でチェックされて、ステップ340においてイメージバインディングモジュールがイメージから必要なデータとメタデータを読み込む。これにより、イメージが以下を含む慎重な分析(ただし以下に限定するものではない)を実行するための一定の標準を満たしていることが保証される。
頑健な名前、
生成時間(イメージはアセンブリよりも後であることが好ましい)、
アセンブリとイメージのMVID、
.NETフレームワークのバージョン、
プロセッサアーキテクチャ、
関連するイメージのバージョン(例えばimage mscorlib.dll)。
アセンブリが頑健な名前を有さない場合は、MVIDがチェックのために用いられる。ステップ350では、分析によりそのイメージがカレント(「現在作業中」の意)かどうかが決定されて、カレントでなければ、ステップ370でコントロールがJITコンパイラに転送される。カレントであれば、ステップ360でイメージからコードがロードされる。
上述の説明から分かるように、ネイティブイメージの数がアセンブリの数を大幅に越え、同じ親アセンブリにより生成されたネイティブイメージは、他と機器やイメージのバージョンが異なり得る。それらの全てはイメージを分類するタスクを複雑にするものである。いくつかの従来のファイル分類メソッドは、クラウドサービス等を使用するものだが、イメージを正しく効率的に分類する良い方法がない。
これより、 コンピュータ機器におけるオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセスをコントロールするための例示的なシステム、方法及びコンピュータプログラム製品を開示する。特に、本開示されるシステムと方法は、未信頼のネイティブイメージのアクセスをオペレーティング・システムのリソースに制限してコンピュータ機器のセキュリティを増大させる。
ある観点では、機器のオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセスを制御する方法は、ハードウェアプロセッサによって、機械語のネイティブイメージを取得する工程と、前記ハードウェアプロセッサによって、前記ネイティブイメージが生成された親アセンブリを識別する工程と、前記ハードウェアプロセッサによって、親アセンブリの信頼カテゴリーを決定する工程と、前記親アセンブリの前記信頼カテゴリーに基づいて、前記ハードウェアプロセッサによって前記ネイティブイメージの前記信頼カテゴリーを決定する工程と、前記ハードウェアプロセッサによって、信頼カテゴリーが未信頼である前記ネイティブイメージのアクセスを機器のオペレーティング・システムのリソースに制限する工程とを備える。
別の観点においては、前記ネイティブイメージの信頼カテゴリーが前記親アセンブリの信頼カテゴリーと対応する。
別の観点においては、かかる方法は、前記ネイティブイメージと前記親アセンブリの間の対応を決定する工程と、前記決定された対応に基づいて、前記ネイティブイメージが修正されたか否かを決定する工程とを更に備える。
別の観点においては、機器のオペレーティング・システムのリソースに対して機械語のネイティブイメージのアクセスを制御するためのシステムは、ハードウェアプロセッサを備え、前記ハードウェアプロセッサは、書き込みアクセスを機械語のネイティブイメージに制限し、前記書き込みアクセスを制限されたネイティブイメージを生成するために使用した親アセンブリを識別し、前記親アセンブリに基づき、前記ネイティブイメージをアップデートし、前記親アセンブリの信頼カテゴリーを決定し、前記親アセンブリの信頼カテゴリーを、アップデートされた前記ネイティブイメージに割り当て、前記信頼カテゴリーが未信頼であるアップデートされたネイティブイメージのアクセスを前記機器のオペレーティング・システムのリソースに制限するように構成される。
別の観点においては、書き込みアクセスがngen.exeを除くすべての処理に制限される。
別の観点においては、前記機械語の前記ネイティブイメージのアップデートは、前記書き込みアクセスを制限された前記ネイティブイメージを前記親アセンブリの前記機械語の新しいネイティブイメージに交換する工程を含む。
上述の発明の概要は、本発明の基本的な理解において役立つものである。発明の概要は、考え得る全ての詳細な概要ではなく、すべての実施形態のキーや重要要素を特定する意図も本発明のあらゆるすべての実施形態の範囲を示す意図もない。唯一の目的は、これら示す本発明のより詳細な説明に対し前置き的に1つ又は複数の実施形態を示すことである。このため、本発明の1つ又は複数の実施形態は、特許請求の範囲において説明され例示された機能を含む。
添付の図面は、本明細書の一部として組み入れられ、この指定の一部を構成し、発明の詳細な説明とともに本発明の1つ又は複数の例面を説明し、それらの原理と実施を説明するのに役立ち得るものである。
単一ファイルアセンブリのレイアウト一例を説明する図である。 複数ファイルアセンブリの一例を示す図である。 頑健な名前を生成する処理の一例を示す図である。 アセンブリコードを実行するメソッドの一例を示す図である。 バインディングモジュールを操作するメソッドを示す図である。 一例に係るイメージを分類するメソッドの一例を示す図である。 一例に係るイメージの構造の一例を示す図である。 一例に係り、イメージにカテゴリーを割り当てるメソッド一例を示す図である。 本発明に係るシステムと方法が実装できる汎用計算機システムの一例を示す図である。
例示する実施形態は以下、機器のオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセス制御のためのシステム、メソッド、及びコンピュータプログラム製品として説明される。当業者であれば、以下の記載はあくまでも例示であり、あらゆる制限をも意図するものではないことは当然に意味するところである。本発明が利益となる分野の当業者であれば、別例をも容易に示唆されることであろう。添付の図面ではその詳細を示すための参照符号が付されている。図面と以下の記載において、同一の又はそれに相当するものについては、同一の参照符号を用いるものとする。
図4は、一例に係るイメージ分類方法の一例を示している。図示の通りステップ400ではイメージが得られる。一例では、イメージは、ネイティブイメージキャッシュ(NIC:Native Image Cache)から得られる(例えば、イメージが機器にインストールされて使用される意図がある場合)。別例では、イメージは、いずれの他のイメージリポジトリからでも得られ得る(機器がストレージとして使われている場合やイメージが意図する機器において使われていない場合)。次に、ステップ410では、イメージの信頼カテゴリーが決定される。一例において、リクエストがデータベースに生成され、信頼のイメージのカテゴリーが決定される。ここでイメージのチェックサムが使われ得る。別例では、イメージのMVIDが使われ得る。また、イメージのカテゴリーを決定するためにテンプレートが使用される。テンプレートの動作メカニズムを以下詳述する。
イメージがデータベースにない場合は、ステップ420においてイメージを生成した親アセンブリが決定される。親アセンブリを決定するために、少なくとも以下のデータ、データ構造体、及びメカニズム(MVID、レジストリー(例えば、Windowsレジストリー)、バインディングモジュール、及び頑健な名前)が使われ得る。
例えば、データベースが存在し、カレントの機器にあるアセンブリのMVIDを含んでいる場合、ある実施形態ではMVIDによって決定することができる。かかる実施形態では、イメージのMVIDは、アセンブリのMVIDを含んでいるデータベースにおいて識別され得る。
別例では、イメージの生成中にレジストリーの入力が生成される時には、親アセンブリはレジストリーでの入力により決定され得る。かかる入力の例の詳細は、上述の通りである。一例では、入力は、親アセンブリへのパスについての情報、ネイティブイメージ及び様々な付随的なデータについての情報を含み得る。レジストリーから得られたデータと分析されたイメージから得られたデータとの比較によって、親アセンブリを識別することができる。
別例では、親アセンブリは、頑健に名付けられたアセンブリから生成されたイメージに対して使用される頑健な名前から決定することができる。親アセンブリの頑健な名前のコンポーネントは、イメージから抽出され、頑健な名前が生成され、そしてかかるデータに基づいて、機器のGAC又はアセンブリを強い名前に基づく所定順に保存しているデータベースで、親アセンブリに対するパスが決定される。
親アセンブリを決定する処理は、多くの要因に依存する。例えば、親アセンブリ及びイメージの場所(例えば、ユーザーの機器、又はリモート/ローカルのデータベース)、ストレージのそれらの場所でのアセンブリとイメージが危険状態(Compromise)である可能性、アセンブリ(頑健な名前又は普通の名前)を命名する方法が挙げられ得る。
一例において、親アセンブリが決定された後に、ステップ421においてネイティブイメージとアセンブリとの間の対応が決定される。もしストレージにおいて、承認なし(例えば、それが危険状態であったり汚染されていたりする等)で、ネイティブイメージが生成後に変更され得た可能性がある場合には、このステップが実行される。一例では、アルゴリズムを使用することができ、これにより上述のイメージバインディングモジュールを使用する対応が決定される。別例では、親アセンブリが決定された後に、このアセンブリからのイメージ(すなわち、変更が無いことが保証されているイメージであるオリジナルネイティブイメージ)を生成することができて、対応を決定するために分析されるネイティブイメージと直接比較することができる。一例において、かかる比較はバイト単位で実行することができる。
一例においては、イメージの承認の無いの変更を防止するために、例えばngen.exe等、信頼できる処理にのみイメージの修正を許可し、その間はネイティブイメージからはデータの読み出ししか許可されないものとする。
一例において、テンプレートのメカニズムによって、イメージと親アセンブリの間の対応を決定することができる。一例において、親アセンブリ及び対応するネイティブイメージが全く対応しない場合は、イメージが危険状態にある(すなわち悪い状態)と考えられる。危険状態にあるイメージは、CILコード、機械語、タイプのメタデータ、CLR及びPEヘッダに含まれる情報に関して、オリジナルイメージと異なる可能性がある。
図5は、一例に係るネイティブイメージの構造一例を示している。親アセンブリのようなネイティブイメージは、所定の構造を有する。例えば、AssemblyKasperskyLab.dllとImageKasperskyLab.ni.dllは、メタデータ及びコードを含んでおり、かかるアセンブリはCILコードを独占的に含んでいる。一方で、特定の実施形態ではネイティブイメージが機械語と構造体であるNativeImageHeaderをも含んでいる。構造体、メタデータ、及びコードに基づいて、上述のテンプレートKasperskyLab.dll.tmplが生成されて、生成された親アセンブリとイメージとに関連づけられる(すなわち、対応づけがなされる)。テンプレートに、構造、コード、及びメタデータをバインディングするために、かかるシステム及び方法の一例では、例えばインテリジェントハッシュテクニック(ローカルセンシティブハッシュとして知られている)が用いられる。一例では、図5に示すようにテンプレートが生成される。
より具体的には、データ(すなわち、マニフェスト、メタデータ、CILコード等)が、アセンブリから抽出される。機械語同様、同じデータは、ネイティブイメージから抽出される。同じ親アセンブリから生成されたイメージの可能なバージョンそれぞれに対しては不変のデータは処理されて(例えば、チェック・サムはそこから計算される)、ハッシュが形成されてテンプレートに置かれる。機械語のように、イメージのバージョンごとに異なるデータも処理され、それに応じてインテリジェントハッシュが生成される。特定の実施形態では、機械語のためのファンクションコールジャーナルが生成され、分けられた機械語を有するリスト又は所要の機械語の実装のロジックを反映している何らかのもの(エンティティ:Entity)、及びインテリジェントハッシュが、かかるエンティティから形成される。別例では、これらのエンティティはテンプレートにおいて直接使われる。機器のソフトウェア及びハードウェア構成に依存しているイメージのバージョンを問わず、親アセンブリとイメージを明確に関連づける(対応づける)ためのテンプレートが形成されることに留意し得る。イメージの機械語で変化が起こってイメージコードの実行ロジックがアセンブリコードの実行ロジックと対応しない場合には、テンプレートに基づいて、親アセンブリとイメージの対応がなく、イメージは、アセンブリと対応していないと決定される。
テンプレートを用いる対応有無の判定例を、以下詳述するものとする。例えば、ある親アセンブリKaspersky.dllが存在する場合、その機器にイメージKaspersky.ni.dllが生成される。テンプレートKaspersky.dll.tmplが形成されて、これにより親アセンブリとイメージとが対応づけられる。そして、機器において、ソフトウェアとハードウェアはアップデートされて(すなわち、オペレーティング・システム、.NETフレームワーク、プロセッサの交換等のアップデート)、イメージKaspersky.ni.dllのバージョンは、カレントでないものとされる。したがって、イメージは使えなくなり、このイメージのアップデートが開始され、新しいイメージKaspersky.ni.dllが生成される。そして、それは前のバージョンのイメージと異なる。テンプレートが使われる時には、親アセンブリに対応するアップデートされたイメージ(すなわち、機械語の実行ロジックは同じままである)を見つける。別のケースでは、悪意に満ちたプログラムであってイメージKaspersky.ni.dllを修正してしまうプログラムを機器にインストールであって。この例において、テンプレートが使われる時には、悪意に満ちたプログラムにより修正されたイメージは、親アセンブリに対応しない(例えば、機械語の実行のロジックは親アセンブリに埋め込まれたロジックと異なる)。
図4に示すように親アセンブリを決定した後に、アセンブリの信頼カテゴリーが設定される(ステップ430)。アセンブリの信頼カテゴリーは、アンチウィルスアプリケーションなどの機器の保護システムにおける(信頼済又は未信頼の)アセンブリでの信頼の度合いである。実施形態では、2つの可能なアセンブリのカテゴリーがある、すなわち、信頼済みのアセンブリ又は未信頼のアセンブリである。本発明の文脈において、アセンブリのカテゴリーの概念をアセンブリの危険ステータスの概念と区別し得る。本発明の文脈におけるアセンブリの危険ステータスは、危険又は非危険である。危険ステータスとされていない不明のアセンブリもあり得る。アセンブリの危険ステータスは、そのアセンブリがインストールされる機器に対してアセンブリの危険度合いを決定づけるものである。機器へのアセンブリの危険は、一例、機器からのデータの窃盗の可能性、データの代用、又はアセンブリのコードの実行の間の機器のソフトウェアの無許可の部分修正において含む。
信頼済みのアセンブリは、保護システムのには危険ではないと判定されたアセンブリを含む。特に、機器の保護システムは、アセンブリに対して信頼済みのカテゴリーを割り当てる際に、カレント状態機器において、及びアセンブリについての情報に基づいてローカルで機能する。ある実施形態では、かかる情報をアセンブリの危険ステータスとして用いる。アセンブリの危険ステータスは、アセンブリのMVID、アセンブリの頑健な名前、アセンブリと同類のチェック・サムなど、アセンブリの識別情報を使って決定され得る。これのために、ステップ431においてリクエストが評判データベースに追加される。ある実施形態では、データベースはアセンブリが保存されている機器にあり、別例では、リモートで使用する。アセンブリが既知ならば(すなわち、それについての情報は評判データベースに含まれている)、かかるアセンブリは、非危険又は危険であるという危険ステータスを有する。従って評判データベースからの情報に依存して、を持っている。のすでに危険ステータスアセンブリの識別情報がデータベースに含まれていないな場合は、アセンブリは不明であると考えられ。すなわち、アセンブリはステータスを有さない。(すなわち、未確定のステータス)アセンブリが、非危険ステータスを有する場合は、一例において、アセンブリは信頼済みカテゴリーを受け取る。別例では、アセンブリのカテゴリーは、例えば、危険ステータスであると分かっているインストールパッケージでアセンブリを機器又はその周辺物にインストールすることによって、そのアセンブリについての事実的と統計的情報から決定される。
一例では、アセンブリについての実際の情報は、電子署名についての情報である(例えば、署名の頑健な名前又はX.509)。このケースでは、電子署名が認証されることとなる。例えば、ステップ432での認証のために、識別情報は、アセンブリの電子署名について得られ、これは例えばそこからメーカーやファイルのハッシュ又はその一部を情報として含んでいる。署名はアセンブリ又はカタログに置かれてもよい(すなわち、カタログ署名)。アセンブリの電子署名の危険ステータスは、署名の識別情報を用いて決定され、これは問い合わせを評判データベースを組み込むものである。署名が既知(すなわち、署名についての情報が評判データベースに含まれている)の場合、その署名はすでに非危険又は危険のステータスを有するものとなっている。署名の識別情報がデータベースに含まれていない場合は、署名は不明であると考えられてすなわち、署名はステータスを持っていない(すなわち、ステータス未知)。一例において、署名が非危険のステータスを有する場合、一例において、アセンブリには信頼済みカテゴリーが与えられる。署名が危険ステータスを有する場合は、一例において、アセンブリは未信頼カテゴリーが与えられる。
ステータスは、署名に様々な方法で割り当てられる。一例において、署名のステータスは、メーカーに依存する。別例では、署名のステータスは、インストーラから継承されて割り当てられ、その署名ステータスは既知である。別例において、署名のステータスは、署名の人気度(Popularity)に依存して割り当てられ、例えばより人気度の高い署名に、より高いレベルのステータスが割り当てられる。
一例において、ステップ433では、信頼カテゴリーは、アセンブリのアンチウィルスチェックにより決定される。これには、悪意のあるプログラムを検出するために、署名、学習、統計等を含む様々なメソッドが使用される。この実施形態において、アセンブリが、アンチウィルスチェックの結果から非危険であると認定されると、アセンブリは信頼済みカテゴリーを受け取ることとなる。そうでない場合は未信頼とされる。
アセンブリの信頼カテゴリーを決定した後に、ステップ440、イメージの信頼カテゴリーにおいて決定する。一例において、イメージは、親アセンブリのために決定された信頼カテゴリーを割り当てられる。別例では、イメージのカテゴリーは、上記ステップ410のメソッドにより決定される。
保護システムが機器にインストールされると、かかるシステム及び方法により、例示の実施形態に基づきイメージのリポジトリーは、認可なくで変更されておらず又今後もされないことが確認できる。
図6は、カテゴリーをイメージに割り当てる方法の一例を示している。図示の通り、ステップ600において、イメージのリポジトリーに又は少なくとも1つのイメージにアクセスが制限される。一例には、かかる制限は、イメージを修正するための信頼済みの処理又はその個数を許可するものである。例えばngen.exeのみを許可し、他の処理は読み込みしか許可しないものとすればよい。別例では、かかる制限は、全体の又は少なくとも1つのイメージに対して、リポジトリーへの書き込みアクセスの全制限を含む。
次に、ステップ610において、アクセスが制限されたイメージを生成するのに用いる親アセンブリが決定される。ステップ620において、少なくとも1つのイメージがアップデートされる(例えば、別のイメージに置換えられる)。一例では、アップデートとは、以前に生成されたイメージを取り除き、オペレーティング・システムによって新しいイメージを生成(例えば親アセンブリのngen.exeを動作させること又は自動イメージ生成サービスによって)するものを含む。別例では、機械語等のイメージデータの一部だけがアップデートされ、これは信頼済みの処理によってなされる。第1のケースにおいては、除去後のイメージが改めて生成される。一例では、これは直ちに実行される。別例では、一定時間、例えばステップ610において決定されるアセンブリであってアップデートされるイメージの親アセンブリの動作まで延期される。ステップ630において、親アセンブリのカテゴリーがイメージに割り当てられる。
アンチウィルスアプリケーションは、その操作の信頼カテゴリーを用いる。例えば、未信頼の信頼カテゴリーを有するネイティブイメージを取り除く。或いは、例えば、オペレーティング・システムにより提供されるリソースへのアクセスを制限する等、大幅にその使用を制限する。
一例において、アンチウィルスアプリケーションは、検出された親アセンブリのアンチウィルススキャンを実行することができ、機械語のネイティブイメージをアンチウィルス分析から排除しつつ機械語のネイティブイメージによって親アセンブリのアンチウィルススキャンを関連付けることができる。親アセンブリだけがスキャンされる場合、これはコンピュータシステムのアンチウィルス分析の性能を向上させる。そこから生成された機械語のネイティブイメージは、信頼カテゴリー及び/又はアセンブリの危険ステータス(評決)を引き継ぐ。このため、ネイティブイメージのアンチウィルススキャンが実行されない。
図7は、一例に基づいて実施されるシステムとメソッドとが開示される汎用計算機システム(パソコンやサーバー等)の例を示している。図示の通り、コンピュータシステムは、中央演算処理装置21、中央演算処理装置21と関連づけられたメモリーを含む様々なシステムコンポーネントを接続するシステムメモリー22とシステムバス23を含む。システムバス23は、従来技術に係る既知のバス構造のように実現され、バスメモリー又はバスメモリーコントローラ、周辺のバス、及びローカルバスを含んでいる。これは、他の何れのバスアーキテクチャとも通信可能である。システムメモリーは、永久メモリー(ROM)24及びランダムアクセスメモリー(RAM)25を含む。基本的な入出力システム(BIOS)26は、ROM24を用いてオペレーティング・システムをロードするとき等、パソコン20の要素間の情報伝達を担う基本的な手続を含む。
パソコン20は、データの読み書きのためのハードディスク27、取り外し可能な磁気ディスク29の読み書きのための磁気ディスクドライブ28、及びCD−ROM、DVD−ROM、その他の光学メディア等の光学ディスク31の読み書きのための光学式ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光学式のドライブ30は、ハードディスクインタフェース32、磁気ディスクインタフェース33、及び光学式のドライブインタフェース34それぞれを横切るシステムバス23と接続される。ドライブ及び対応するコンピュータ情報メディアは、計算機命令、データ構造体、プログラムモジュール、及びパソコン20の他のデータのストレージのための電源依存のモジュールである。
本発明は、ハードディスク27、取り外し可能な磁気ディスク29及び取り外し可能な光ディスク31を用いるシステムの実装を提供するものだが、コンピュータに読み込み可能な形式でデータを保存できるフラッシュメモリカード、デジタルのディスク、ランダムアクセスのメモリー(RAM)等の他のタイプのコンピュータ情報メディア56を使用してもよいことに留意されたし。また、これはコントローラ55を介してシステムバス23に接続される。
コンピュータ20は、ファイルシステム36を有し、記録されたオペレーティング・システム35の保持する。また追加のプログラムアプリケーション37、他のプログラムモジュール38、及びプログラムデータ39を有する。ユーザーは、入力デバイス(キーボード40、マウス42)を用いてコマンドと情報をパソコン20に入力することができる。他の入力デバイス(不図示):マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナなどを用いることもできる。そのような入力デバイスは、通常、システムバスに次々接続しているシリアルポート46を通じてコンピュータシステム20に差し込まれるが、それらは、他の方法例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス(USB)に接続される。ディスプレイ機器のモニタ47又は他のタイプは、また、ビデオアダプタ48などのインタフェースと交差するシステムバス23に接続している。モニタ47に加えて、パソコンは、スピーカー、プリンタ等の他の周辺の出力デバイス(不図示)を接続できる。
パソコン20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ(又はコンピュータ)49は、図4に示すように、パソコン20の性質として説明した上述の要素すべての大多数を有するパソコン又はサーバーでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノードなどの他の機器もまた、かかるコンピュータネットワークで存在し得るものである。
ネットワーク接続は、ローカルエリアコンピュータネットワーク(LAN)50及びワイドエリアコンピュータネットワーク(WAN)を形成することができる。そのようなネットワークは、企業のコンピュータネットワーク及び社内ネットワークで利用され、それらはたいていにインターネットにアクセスすることができる。LAN又はWANネットワークにおいて、パソコン20は、ネットワークアダプタ又はネットワークインタフェース51に交差するローカルエリアネットワーク50に接続されている。ネットワークが用いられる時には、パソコン20は、通信にインターネットなどのワイドエリアコンピュータネットワークを実現するために、モデム54又は他のモジュールを使用することができる。内部又は外部の機器であるモデム54は、シリアルポート46によりシステムバス23と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法もあることに留意されたし。
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及びメソッドを実施し得る。ソフトウェアにおいて実装される場合は、メソッドは不揮発性コンピュータ可読メディアの1つ又は複数の指示又はコードとして保存され得る。コンピュータ可読メディアは、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読メディアは、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって指示又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
様々な実施形態で、本発明のシステム及びメソッドが、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)等の、又は例えばモジュールの機能を実行するマイクロプロセッサーシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサーシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という2つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる(図6において詳述したもの等)。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
なお、実施形態の通常の機能のうちのすべてをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたし。
さらに、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。
本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。さらに、態様及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。

Claims (18)

  1. 機器のオペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセスを制御する方法であって、
    ハードウェアプロセッサによって、機械語のネイティブイメージを取得する工程と、
    前記ハードウェアプロセッサによって、前記ネイティブイメージが生成された親アセンブリを識別する工程と、
    前記ハードウェアプロセッサによって、前記親アセンブリの信頼カテゴリーを決定する工程と、
    前記親アセンブリの前記信頼カテゴリーに基づいて、前記ハードウェアプロセッサによって前記ネイティブイメージの前記信頼カテゴリーを決定する工程と、
    前記ハードウェアプロセッサによって、信頼カテゴリーが未信頼である前記ネイティブイメージのアクセスを機器のオペレーティング・システムのリソースに制限する工程と、
    を備える方法。
  2. 前記ネイティブイメージの信頼カテゴリーが前記親アセンブリの信頼カテゴリーと対応する、請求項1に記載の方法。
  3. 前記ネイティブイメージと前記親アセンブリの間の対応を決定する工程と、
    前記決定された対応に基づいて、前記ネイティブイメージが修正されたか否かを決定する工程と、
    を更に備える請求項1に記載の方法。
  4. オペレーティング・システムのリソースに対する機械語のネイティブイメージのアクセスを制御する方法であって、
    ハードウェアプロセッサによって、書き込みアクセスを前記機械語の前記ネイティブイメージに制限する工程と、
    前記ハードウェアプロセッサによって、前記書き込みアクセスを制限された前記ネイティブイメージを作成するために使用した親アセンブリを識別する工程と、
    前記親アセンブリに基づき、前記ハードウェアプロセッサによって前記ネイティブイメージをアップデートする工程と、
    前記ハードウェアプロセッサによって、前記親アセンブリの信頼カテゴリーを決定する工程と、
    前記ハードウェアプロセッサによって、前記親アセンブリの信頼カテゴリーをアップデートされた前記ネイティブイメージに割り当てる工程と、
    前記ハードウェアプロセッサによって、前記信頼カテゴリーが未信頼である前記ネイティブイメージのアクセスを機器のオペレーティング・システムのリソースに制限する工程と、
    を備える方法。
  5. 前記書き込みアクセスがngen.exeを除くすべての処理に制限される請求項4に記載の方法。
  6. 前記機械語の前記ネイティブイメージのアップデートは、前記書き込みアクセスを制限された前記ネイティブイメージを前記親アセンブリの前記機械語の新しいネイティブイメージに交換する工程を含む、請求項4に記載の方法。
  7. システムのオペレーティング・システムのリソースに機械語のネイティブイメージのアクセスを制御するためのシステムであって、
    ハードウェアプロセッサを備え、
    前記ハードウェアプロセッサは、
    前記機械語のネイティブイメージを取得し、
    前記ネイティブイメージが生成された親アセンブリを識別し、
    前記親アセンブリの信頼カテゴリーを決定し、
    前記親アセンブリの信頼カテゴリーに基づき、前記ネイティブイメージの信頼カテゴリーを決定し、
    前記信頼カテゴリーが未信頼であるネイティブイメージのアクセスを前記機器のオペレーティング・システムのリソースに制限するように構成される、
    システム。
  8. 前記ネイティブイメージの信頼カテゴリーは、前記親アセンブリの信頼カテゴリーに対応する、請求項7に記載のシステム。
  9. 前記プロセッサは、
    前記ネイティブイメージと前記親アセンブリとの対応を決定し、
    前記対応関係に基づいて前記ネイティブイメージが修正されたかどうかを決定するように構成される、
    請求項1に記載のシステム。
  10. 機器のオペレーティング・システムのリソースに対して機械語のネイティブイメージのアクセスを制御するためのシステムであって、
    ハードウェアプロセッサを備え、
    前記ハードウェアプロセッサは、
    書き込みアクセスを機械語のネイティブイメージに制限し、
    前記書き込みアクセスを制限されたネイティブイメージを生成するために使用した親アセンブリを識別し、
    前記親アセンブリに基づき、前記ネイティブイメージをアップデートし、
    前記親アセンブリの信頼カテゴリーを決定し、
    前記親アセンブリの信頼カテゴリーを、アップデートされた前記ネイティブイメージに割り当て、
    前記信頼カテゴリーが未信頼であるアップデートされたネイティブイメージのアクセスを前記機器のオペレーティング・システムのリソースに制限するように構成される、
    システム。
  11. 書き込みアクセスがngen.exeを除くすべての処理に制限される請求項10に記載のシステム。
  12. 前記機械語の前記ネイティブイメージのアップデートは、前記書き込みアクセスを制限された前記ネイティブイメージを前記親アセンブリの前記機械語の新しいネイティブイメージに交換する工程を含む、請求項10に記載のシステム。
  13. 機器のオペレーティング・システムのリソースに対して機械語のネイティブイメージのアクセスを制御するための不揮発性コンピュータ可読媒体であって、
    コンピュータに実行可能な指示を備え、
    前記指示は、
    機械語のネイティブイメージを取得し、
    ネイティブイメージが生成された親アセンブリを識別し、
    親アセンブリの信頼カテゴリーを決定し、
    前記親アセンブリの信頼カテゴリーに基づき、前記ネイティブイメージの信頼カテゴリーを決定し、
    信頼カテゴリーが未信頼であるネイティブイメージのアクセスを機器のオペレーティング・システムのリソースに制限する
    不揮発性コンピュータ可読媒体。
  14. 前記ネイティブイメージの信頼カテゴリーは、前記親アセンブリの信頼カテゴリーに対応する、請求項13に記載の不揮発性コンピュータ可読媒体。
  15. ネイティブイメージと親アセンブリの間の対応を決定し、
    前記決定された対応に基づいて、ネイティブイメージが修正されたか否かを決定する、
    指示を更に備える請求項13に記載の不揮発性コンピュータ可読媒体。
  16. 機器のオペレーティング・システムのリソースに対して機械語のネイティブイメージのアクセスを制御するための不揮発性コンピュータ可読媒体であって、
    コンピュータに実行可能な指示を備え、
    前記指示は、
    書き込みアクセスを前記機械語の前記ネイティブイメージに制限し、
    前記書き込みアクセスを制限された前記ネイティブイメージを生成するために使用した親アセンブリを識別し、
    前記親アセンブリに基づき、前記ネイティブイメージをアップデートし、
    前記親アセンブリの信頼カテゴリーを決定し、
    前記親アセンブリの信頼カテゴリーを、アップデートされた前記ネイティブイメージに割り当て、
    前記信頼カテゴリーが未信頼であるアップデートされた前記ネイティブイメージのアクセスを前記機器のオペレーティング・システムのリソースに制限する、
    不揮発性コンピュータ可読媒体。
  17. 前記書き込みアクセスがngen.exeを除くすべての処理に制限される請求項16に記載の不揮発性コンピュータ可読媒体。
  18. 前記機械語の前記ネイティブイメージのアップデートは、前記書き込みアクセスを制限された前記ネイティブイメージを前記親アセンブリの前記機械語の新しいネイティブイメージに交換する、請求項18に記載の不揮発性コンピュータ可読媒体。
JP2016017104A 2015-03-31 2016-02-01 オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 Active JP6469028B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015111422 2015-03-31
RU2015111422A RU2635271C2 (ru) 2015-03-31 2015-03-31 Способ категоризации сборок и зависимых образов
US14/811,135 US9384364B1 (en) 2015-03-31 2015-07-28 System and method of controlling access of a native image of a machine code to operating system resources
US14/811,135 2015-07-28

Publications (2)

Publication Number Publication Date
JP2016197399A true JP2016197399A (ja) 2016-11-24
JP6469028B2 JP6469028B2 (ja) 2019-02-13

Family

ID=56234946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016017104A Active JP6469028B2 (ja) 2015-03-31 2016-02-01 オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法

Country Status (5)

Country Link
US (2) US9384364B1 (ja)
EP (1) EP3076292B1 (ja)
JP (1) JP6469028B2 (ja)
CN (1) CN105631337B (ja)
RU (1) RU2635271C2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7425797B2 (ja) 2019-06-10 2024-01-31 グーグル エルエルシー ファームウェアのセキュアな検証

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI536798B (zh) * 2014-08-11 2016-06-01 虹光精密工業股份有限公司 影像分檔方法
KR20180073041A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 전자 장치, 그 제어 방법 및 컴퓨터 판독가능 기록 매체
RU2660643C1 (ru) * 2017-09-29 2018-07-06 Акционерное общество "Лаборатория Касперского" Система и способ выявления вредоносного CIL-файла
US10713359B2 (en) 2017-09-29 2020-07-14 AO Kaspersky Lab System and method of identifying a malicious intermediate language file
DE102018000471A1 (de) * 2018-01-22 2019-07-25 Giesecke+Devrient Mobile Security Gmbh Blockchain-basiertes Identitätssystem
US10846403B2 (en) * 2018-05-15 2020-11-24 International Business Machines Corporation Detecting malicious executable files by performing static analysis on executable files' overlay
CN108984413A (zh) * 2018-07-24 2018-12-11 浙江数链科技有限公司 分支代码管理方法及装置
JP7335591B2 (ja) * 2019-07-22 2023-08-30 コネクトフリー株式会社 コンピューティングシステムおよび情報処理方法
CN110531971B (zh) * 2019-08-29 2023-01-03 深圳市今天国际物流技术股份有限公司 访问代码自动生成方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004513412A (ja) * 2000-06-28 2004-04-30 マイクロソフト コーポレイション ハッシュによる結合
JP2008524726A (ja) * 2004-12-21 2008-07-10 株式会社エヌ・ティ・ティ・ドコモ Risc形式アセンブリコードの情報フローの強制
JP2012506094A (ja) * 2008-10-15 2012-03-08 マイクロソフト コーポレーション ランタイムにおいて生成したコードのキャッシュへの格納
JP2012164081A (ja) * 2011-02-04 2012-08-30 Toshiba Corp 中間コード検査システム、中間コード検査方法、及び中間コード検査プログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579478A (en) * 1995-05-16 1996-11-26 Hewlett-Packard Company System administration module for an operating system affords graded restricted access privileges
IL126149A (en) * 1997-09-09 2003-07-31 Sanctum Ltd Method and system for protecting operations of trusted internal networks
US6993751B2 (en) * 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
US7051322B2 (en) * 2002-12-06 2006-05-23 @Stake, Inc. Software analysis framework
CN101300584B (zh) * 2005-08-06 2012-02-29 微软公司 防止对软件或运行时数据的未经授权的修改的方法
US7395394B2 (en) * 2006-02-03 2008-07-01 Hewlett-Packard Development Company, L.P. Computer operating system with selective restriction of memory write operations
CN101359355B (zh) * 2007-08-02 2010-07-14 芯微技术(深圳)有限公司 Windows系统下受限帐户提升用户权限的方法
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9152789B2 (en) 2008-05-28 2015-10-06 Zscaler, Inc. Systems and methods for dynamic cloud-based malware behavior analysis
US8752016B2 (en) * 2008-12-15 2014-06-10 Apple Inc. Converting JavaScript into a device-independent representation
CN101615230A (zh) * 2009-08-07 2009-12-30 浪潮电子信息产业股份有限公司 一种文件可信执行和可信保护的方法
US8621647B1 (en) * 2010-01-11 2013-12-31 Google Inc. Restricting privileges of first privileged process in operating system using second privileged process
US8924922B2 (en) * 2010-06-14 2014-12-30 Microsoft Corporation Pre-compiling hosted managed code
US20120157049A1 (en) * 2010-12-17 2012-06-21 Nichola Eliovits Creating a restricted zone within an operating system
US9584877B2 (en) * 2011-06-16 2017-02-28 Microsoft Technology Licensing, Llc Light-weight validation of native images
CN102663318B (zh) * 2012-03-22 2015-04-08 百度在线网络技术(北京)有限公司 一种浏览器进程权限的控制方法
US9569184B2 (en) * 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application
US8732674B1 (en) * 2012-11-14 2014-05-20 Microsoft Corporation Revertable managed execution image instrumentation
US9053108B2 (en) * 2013-02-05 2015-06-09 International Business Machines Corporation File system extended attribute support in an operating system with restricted extended attributes
US11100242B2 (en) * 2014-05-30 2021-08-24 Apple Inc. Restricted resource classes of an operating system
US20160048409A1 (en) * 2014-08-12 2016-02-18 Peter Briel System and method for automatic initiation and management of a guest operating system which enables a restriction of access to the host machine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004513412A (ja) * 2000-06-28 2004-04-30 マイクロソフト コーポレイション ハッシュによる結合
JP2008524726A (ja) * 2004-12-21 2008-07-10 株式会社エヌ・ティ・ティ・ドコモ Risc形式アセンブリコードの情報フローの強制
JP2012506094A (ja) * 2008-10-15 2012-03-08 マイクロソフト コーポレーション ランタイムにおいて生成したコードのキャッシュへの格納
JP2012164081A (ja) * 2011-02-04 2012-08-30 Toshiba Corp 中間コード検査システム、中間コード検査方法、及び中間コード検査プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7425797B2 (ja) 2019-06-10 2024-01-31 グーグル エルエルシー ファームウェアのセキュアな検証

Also Published As

Publication number Publication date
US9384364B1 (en) 2016-07-05
US20160292450A1 (en) 2016-10-06
EP3076292A1 (en) 2016-10-05
EP3076292B1 (en) 2017-07-19
US9460306B1 (en) 2016-10-04
RU2635271C2 (ru) 2017-11-09
JP6469028B2 (ja) 2019-02-13
CN105631337A (zh) 2016-06-01
RU2015111422A (ru) 2016-10-27
CN105631337B (zh) 2018-05-29

Similar Documents

Publication Publication Date Title
JP6469028B2 (ja) オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法
EP1577767B1 (en) Code rewriting
US11599348B2 (en) Container image building using shared resources
JP5437550B2 (ja) ファームウェアの必要なメモリ容量を減らすシステム及び方法
US11409884B2 (en) Security profiling of system firmware and applications from an OOB appliance at a differentiated trust boundary
US7444621B2 (en) Method and system for providing a common operating system
US8424093B2 (en) System and method for updating antivirus cache
JP5802848B2 (ja) モバイル環境用のトロイの木馬化されたアプリケーション(アプリ)を特定するためのコンピュータ実装方法、非一時コンピュータ読み取り可能な媒体およびコンピュータシステム
US20070289019A1 (en) Methodology, system and computer readable medium for detecting and managing malware threats
JP7316726B2 (ja) ソフトウェア・コンポーネントに関連するセキュリティ・リスクを検出する方法、システム、およびプログラム
JP2009514099A (ja) 分離されたエクステンションおよびデバイスドライバの構成
US9367686B1 (en) System and method for antivirus checking of native images of software assemblies
US10540193B2 (en) Software-defined microservices
CN1169046C (zh) 完全迟缓链接
US20190243976A1 (en) System and method for categorization of .net applications
RU2628920C2 (ru) Способ обнаружения вредоносных сборок
RU2625052C1 (ru) Способ ограничения доступа образа машинного кода к ресурсам операционной системы
RU2617925C2 (ru) Способ антивирусной проверки компьютерной системы
JP7084160B2 (ja) 起動制御装置、起動制御システム、起動制御方法、及び、起動制御プログラム
JP2009501385A (ja) ノード間通信パイプライン
RU2258252C2 (ru) Система и способ проверки подлинности динамически подключаемых исполняемых образов
CN117633734A (zh) 代码编译的方法、装置及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180515

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180814

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190115

R150 Certificate of patent or registration of utility model

Ref document number: 6469028

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