JP4902129B2 - セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム - Google Patents

セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム Download PDF

Info

Publication number
JP4902129B2
JP4902129B2 JP2005088743A JP2005088743A JP4902129B2 JP 4902129 B2 JP4902129 B2 JP 4902129B2 JP 2005088743 A JP2005088743 A JP 2005088743A JP 2005088743 A JP2005088743 A JP 2005088743A JP 4902129 B2 JP4902129 B2 JP 4902129B2
Authority
JP
Japan
Prior art keywords
security
instruction
virtual machine
data
computer
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.)
Expired - Fee Related
Application number
JP2005088743A
Other languages
English (en)
Other versions
JP2005316964A (ja
Inventor
エイチ. バーカー アーサー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005316964A publication Critical patent/JP2005316964A/ja
Application granted granted Critical
Publication of JP4902129B2 publication Critical patent/JP4902129B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01HSTREET CLEANING; CLEANING OF PERMANENT WAYS; CLEANING BEACHES; DISPERSING OR PREVENTING FOG IN GENERAL CLEANING STREET OR RAILWAY FURNITURE OR TUNNEL WALLS
    • E01H5/00Removing snow or ice from roads or like surfaces; Grading or roughening snow or ice
    • E01H5/04Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material
    • E01H5/06Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material dislodging essentially by non-driven elements, e.g. scraper blades, snow-plough blades, scoop blades
    • E01H5/065Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material dislodging essentially by non-driven elements, e.g. scraper blades, snow-plough blades, scoop blades characterised by the form of the snow-plough blade, e.g. flexible, or by snow-plough blade accessories
    • E01H5/066Snow-plough blade accessories, e.g. deflector plates, skid shoes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Architecture (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は一般に、セキュリティポリシーを実施して、コンピュータプログラムによる望ましくない挙動をブロックすることに関する。
オペレーティングシステムおよびファイルシステムなど、ソフトウェアシステムは、アプリケーションプログラミングインターフェイスを提供し、これを通じてアプリケーションプログラムはソフトウェアシステムのサービスにアクセスすることができる。アプリケーションプログラムインターフェイスは、指定されたサービスを実行するためのパラメータと共にファンクションを提供することができる。例えば、ファイルシステムは、ファイルを作成するためのファンクション(「システムコール」とも呼ばれる)を有することができる。そのファンクションは、作成されるファイルの、ファイルの場所、ファイル名、ファイルタイプ、ファイルサイズなどを指定するパラメータを有することができる。アプリケーションプログラムは、ファンクションを呼び出すとき、ファンクションのために定義された形式的なパラメータに対応する実際のパラメータを渡す。ファンクションは、実際のパラメータにおいてあるチェックを実行して、それらのパラメータが有効であることを保証することができる。例えば、ファイル作成ファンクションは、指定されたファイルタイプが有効であることを保証することができる。パラメータが有効ではない場合、ファンクションはエラーをアプリケーションプログラムに戻す。
ソフトウェアシステムは、様々な理由のために極めて複雑になる場合がある。ソフトウェアシステムは、そのソフトウェアシステムのすべての以前のバージョンとの後方互換性(backward compatible)を有するようにしようとする場合がある。このような場合、ソフトウェアシステムは、以前のバージョンのアプリケーションプログラムインターフェイスのすべてのファンクションをサポートする必要がある場合がある。新しいファンクションは通常各バージョンに追加されるので、ファンクションの数は大変多くなる場合があり、ファンクションの対話は複雑になる可能性がある。いくつかのソフトウェアシステムにはまた、同じ会社の異なる部門によって、あるいは異なる会社によって開発されたソフトウェアコンポーネントが含まれることもある。これらのコンポーネントの対話もまた非常に複雑になる可能性がある。
ソフトウェアシステムにとって、それらのアプリケーションプログラミングインターフェイスが不注意による誤用または故意による攻撃のいずれに対しても脆弱でないことを保証することは、ますます重要になってきている。ソフトウェアシステムの1つの脆弱性は、そのアプリケーションプログラミングインターフェイスのパラメータを通じたものである場合がある。以前のバージョンのファンクションがより新しいバージョンのファンクションと結合されるとき、また、異なる開発者からのコンポーネントが統合されるとき、ファンクションによって実行された既存のパラメータの妥当性検査は、ファンクションの正しい挙動を保証するために十分でない場合がある。例えば、ある会社によって開発されたファイルシステムのアプリケーションプログラミングインターフェイスが、別の会社によって開発されたファイルサーバーと統合される場合がある。アプリケーションプログラミングインターフェイスの最大ファイルサイズパラメータは、ファイルサーバーによってサポートされたサイズより大きい場合がある。このような場合、アプリケーションプログラミングインターフェイスに適用可能であるファイルサイズは、ファイルサーバーに問題を引き起こす可能性がある。もう1つの例として、システム管理者は、最大ファイルサイズをさらにより制限することを望む場合があるが、システム管理者は、その制限を実施するために使用可能な手段を有していない可能性がある。
セキュリティポリシー、および特に、アプリケーションプログラムインターフェイスのパラメータのための有効な条件を指定するセキュリティポリシーを実施するためのメカニズムを有することが望ましいであろう。
セキュリティポリシーを実施するための方法およびシステムを、セキュリティ仮想マシン(security virtual machine)によって提供する。セキュリティ仮想マシンは、プロセッサエンジン、命令ストア、データストアおよび命令ポインタを含む。セキュリティ仮想エンジンは、セキュリティポリシーの高水準言語表現からコンパイルされる中間言語を使用して指定されたセキュリティプログラムを実行する。セキュリティプログラムは命令ストアに、実行のためにロードされる。アプリケーションプログラミングインターフェイスのファンクションの呼び出しなど、セキュリティ実施イベントが発生するとき、セキュリティ実施イベントからのデータはデータストアに格納され、プロセッサエンジンは、命令ストアからのセキュリティプログラムのための命令のフェッチおよび実行を開始する。命令は、セキュリティポリシーを実施するために取られるアクションを、セキュリティ実施イベントのデータに基づいて指定する。
セキュリティ仮想マシンの命令セット内でエンコードされたセキュリティポリシーを実施するためのコンピュータシステムにおける方法およびシステムを提供する。一実施形態では、セキュリティシステムは、セキュリティ仮想マシンの命令セット(すなわち、中間言語)内で表現されたセキュリティプログラムを実行するセキュリティ仮想マシンを提供する。セキュリティシステムは、高水準言語で表現されたセキュリティポリシーを受信し、セキュリティ仮想マシンの中間言語におけるセキュリティポリシーの表現であるセキュリティプログラムを生成する、コンパイラを含むことができる。セキュリティシステムは、セキュリティプログラムをセキュリティ仮想マシンの命令ストアに格納する。セキュリティ実施イベントが発生するとき(すなわち、それがセキュリティポリシーと共にコンパイルすることを保証するためにチェックされる必要があるアクション)、セキュリティ仮想マシンは、セキュリティ実施イベントからのデータを使用してその命令ストアからのセキュリティプログラムのための命令を実行して、セキュリティポリシーを実施する。セキュリティ実施イベントが、ある試行が望ましくない挙動(例えば、オペレーティングシステムの脆弱性を悪用する可能性のあるアクション)を実行するために行われていることを示す場合、セキュリティプログラムはその試行をブロックすることができる。一実施形態では、セキュリティシステムのセキュリティ仮想マシンはオペレーティングシステムのカーネルモードで実行して、アプリケーションおよび外部システムによる、その上でセキュリティシステムが実行中であるコンピュータシステムにとって望ましくない挙動を実行するための試行を、識別および防止する。
一実施形態では、セキュリティシステムは、アプリケーションによってシステムサービス(例えば、ファイルシステムおよびメモリ管理システム)に発行されたシステムコールのパラメータが望ましくない挙動につながる可能性のあるときを識別する。セキュリティポリシーは、システムコールのパラメータに基づく条件、および、条件が満たされるときに取るためのアクションをそれぞれ指定するルールを含む。例えば、あるルールの条件は、ファイル作成システムコールが、1GBより大きいファイルサイズを指定するパラメータと共に発行されるとき、満たされる場合がある。そのルールに関連付けられたアクションを、ファイルの作成をブロックするようにすることができる。高水準言語をXMLベースの言語にすることができ、各ルールをルール、条件およびアクションタグによって識別することができる。高水準言語で表現されたセキュリティポリシーのルールがコンパイルされるとき、各ルールを中間言語の命令に変換して、セキュリティプログラムが形成される。例えば、ルールを一連の命令に変換することができる。システムコールを、ファンクションが「ファイル作成」であることを示す値と比較するもの、ファイルサイズパラメータを、1GBの値を有する定数と比較するもの、および、システムコールをブロックするための指示を出力するものである。
一実施形態では、セキュリティ仮想マシンは、プロセッサエンジン、命令ストア、命令ポインタおよびデータストアを含む。セキュリティ仮想マシンを初期化してセキュリティポリシーを実施するとき、セキュリティシステムは命令ストアに、セキュリティポリシーを実施するセキュリティプログラムをロードする。セキュリティシステムはまた、セキュリティプログラムのデータをデータストアにロードする。システムコールが受信されるとき、セキュリティシステムはシステムコールのパラメータ(システムコールを識別する値を含む)をデータストアに格納する。セキュリティシステムはまた、システムコールを発行したプロセスのプロセスコントロール情報をデータストアに格納することもできる。セキュリティシステムは、セキュリティプログラムの開始命令をポイントするように、命令ポインタを初期化する。プロセッサエンジンはセキュリティプログラムを、命令ポインタによってポイントされた開始命令をフェッチおよび実行することによって開始する。実行される各命令は、実行されるべき次の命令をポイントするように、命令ポインタを修正する。命令はデータストアのデータを参照して、セキュリティポリシーを実施する。セキュリティプログラムの実行は、セキュリティポリシーを実施するために取られるべきであるアクション(例えば、システムコールのブロック)を指定する出力アクションセットを生成する。
一実施形態では、セキュリティポリシーは、そのパラメータがチェックされるべきである各システムコールのためのサブポリシーを備えることができる。セキュリティシステムは各サブポリシーを別々のセキュリティサブプログラムにコンパイルすることができ、これらの別々のセキュリティサブプログラムを他のセキュリティサブプログラムとは無関係に命令ストアにロードすることができる。各サブポリシーは単一のシステムコールのためのセキュリティ実施に対応する可能性がある。セキュリティシステムは、命令ストア内の開始命令ポインタへ、および、対応するセキュリティサブプログラムのデータストア内のデータへの開始データポインタへの、各システムコールのマッピングを維持することができる。システムコールにおいてセキュリティポリシーを実施するとき、セキュリティシステムは、命令ポインタを対応する開始命令ポインタに、データポインタを対応する開始データポインタに初期化する。セキュリティサブプログラムは、命令ポインタおよびデータポインタに関連する命令およびデータ参照技術を使用することができる。このようにして、各セキュリティサブプログラムの命令およびデータは再配置可能である。以下の説明では、単一のセキュリティプログラムは、各システムコールをデコードし、そのシステムコールを処理するために適切な命令場所にジャンプすることによって、すべてのシステムコールを処理する。この説明するシステムを各システムコールのためのサブプログラムをサポートするように適合させることができることは、当業者には理解されよう。
図1は、一実施形態のセキュリティシステムのコンポーネントを例示するブロック図である。セキュリティシステムには、ユーザーモード100で実行するいくつかのコンポーネント、および、カーネルモード120で実行する他のコンポーネントが含まれる。ポリシーコンパイラ102はユーザーモードで実行して、ポリシーストア103のセキュリティポリシーを、セキュリティ仮想マシンによって実行可能であるセキュリティプログラムにコンパイルする、コンポーネントである。カーネルモードコンポーネントには、システムコールインターセプトコンポーネント121、プログラムロードコンポーネント122、およびセキュリティ仮想マシン125が含まれる。セキュリティ仮想マシンには、命令ポインタ126、プロセッサエンジン127、命令ストア128およびデータストア129が含まれる。プログラムロードコンポーネントは、ポリシーコンパイラによってコンパイルされたセキュリティプログラムを、セキュリティ仮想マシンの命令ストアにロードし、プログラムデータをデータストアに格納し、開始命令ポインタを設定する。システムコールインターセプトコンポーネントは、アプリケーションプログラム101によって発行されたシステムコールをインターセプトし、各システムコールのパラメータ、および、アプリケーションプログラムのプロセスコントロール情報をデータストアに格納する。システムコールをインターセプトし、そのパラメータを格納した後、システムコールインターセプトコンポーネントはプロセッサエンジンに、命令ストアのセキュリティプログラムを実行するように命令する。プロセッサエンジンはセキュリティプログラムを、命令ポインタによってポイントされた命令をフェッチすること、および、命令によって指定されたオペレーションを実行することによって、実行する。オペレーションには、セキュリティポリシーを実施するために取られるべきアクションをデータストアの出力アクションセットに格納することが含まれる。セキュリティプログラムの実行が完了した上で、システムコールインターセプトコンポーネントは、出力アクションセットのアクションを実行する。
セキュリティシステムが実装されるコンピューティングデバイスには、中央処理装置、メモリ、入力デバイス(例えば、キーボードおよびポインティングデバイス)、出力デバイス(例えば、表示デバイス)、およびストレージデバイス(例えば、ディスクドライブ)を含めることができる。メモリおよびストレージデバイスは、セキュリティシステムを実装する命令を含むことができるコンピュータ可読媒体である。加えて、データ構造およびメッセージ構造を、通信リンク上の信号など、データ送信媒体を介して格納または送信することができる。インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、またはポイントツーポイントのダイアルアップ接続など、様々な通信リンクを使用することができる。
図1は、セキュリティシステムを実装することができる適切なオペレーティング環境の一実施例を例示する。このオペレーティング環境は、適切なオペレーティング環境の一実施例でしかなく、セキュリティシステムの使用または機能性の範囲についてのいかなる限定をも示唆するように意図されない。使用のために適切である可能性のある他の周知のコンピューティングシステム、環境および構成には、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
セキュリティシステムを一般に、プログラムモジュールなど、1つまたは複数のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令に関連して説明することができる。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらは特定のタスクを実行するか、あるいは特定の抽象データ型を実装する。通常、プログラムモジュールの機能性を、様々な実施形態において望まれるように結合または分散させることができる。
図2は、一実施形態のデータストアのデータ構造を例示するブロック図である。データストアは、リテラルデータ構造201、動的データ構造211、システムコールパラメータデータ構造221、プロセスコントロールブロックデータ構造231、およびアクション出力セット241を含む。リテラルデータ構造は、リテラルデータテーブル202およびリテラルデータストア203を含む。リテラルデータテーブルは、リテラルデータストア内に格納されたリテラルデータを参照する固定サイズのエントリを含む。「リテラルデータ」は、現在ロードされているセキュリティポリシーの存続の間に一定であるセキュリティプログラムのデータを指す。リテラルデータは、新しいセキュリティポリシーをロードすることによってのみ変更することができる。動的データ構造は、リテラルデータ構造と類似の編成を有するが、「リテラルデータ」ではなく「動的」データを格納する。「動的データ」は、新しいセキュリティポリシーをロードすることなく修正することができる、セキュリティプログラムのデータを指す。例えば、動的データには、セキュリティポリシーを免除されるアプリケーションの名前が含まれる場合がある。リテラルおよび動的データテーブルの各エントリは、対応するデータストア内のデータをポイントする。リテラルおよび動的データストアのデータは、自己記述型フォーマットで表現される。そのフォーマットには、データ型およびデータサイズ情報が含まれる。一実施形態では、セキュリティ仮想マシンは、ブール、整数、文字列およびローバイナリ(「ブロブ」とも呼ばれる)のデータ型を、整数、文字列およびブロブのアレイに加えてサポートする。命令はリテラルおよび動的データを、リテラルおよび動的テーブルへのインデックスを使用して参照する。命令を実行するとき、セキュリティ仮想マシンは、リテラルおよび動的テーブルへのインデックスを、インデックス付きエントリを検索すること、およびその値を、リテラルまたは動的データストア内のデータ項目の開始へのポインタとして使用することによって、間接参照(dereference)する。データは自己記述型であるので、データの型およびサイズを決定することができる。システムコールパラメータデータ構造には、文字列テーブル222、整数テーブル223、およびローバイナリテーブル224が含まれる。システムコールのパラメータは、それらのデータ型に従ってこれらのテーブル内に格納される。プロセスコントロールブロックデータ構造は、セキュリティ仮想マシンにとって使用可能であるプロセスコントロール情報の各部分のためのエントリを含むテーブルである。一実施形態では、プロセスコントロール情報には、アプリケーション識別子およびスレッド識別子が含まれる。アクション出力セットを、セキュリティプログラムの実行中に生成され、システムコールにおいてセキュリティポリシーを実施するために実行されるべきアクションを指示する、アクションフラグのセットにすることができる。アクションには、システムコールをブロックすること、およびユーザーに通知することが含まれる可能性がある。
図3は、一実施形態のセキュリティ仮想マシンの命令のレイアウトを例示する図である。各命令は、オペレーションフィールド310、パラメータ1フィールド320、真の枝分かれフィールド330、偽の枝分かれフィールド340、およびパラメータ2フィールド350を含む。パラメータ1フィールドは、システムコールに関連付けられたデータ(すなわち、システムコールデータ構造内またはプロセスコントロールデータ構造内に格納されたもの)、および、セキュリティプログラムに関連付けられたパラメータ2フィールド参照データ(すなわち、リテラルまたは動的データ構造内に格納された即時データまたはデータ)を参照する。オペレーションフィールドは、パラメータ2記述子311(「m」)およびオペレーションコード312を含む。パラメータ2記述子は、パラメータ2を解釈する方法を指定する。パラメータ2(p2とも呼ぶ)は、即時データ、動的データへの参照、またはリテラルデータへの参照を含むことができる。参照が指定されるとき、セキュリティ仮想マシンは、命令のオペレーションを実行する前にパラメータ2を間接参照する。オペレーションコードは以下でより詳細に定義するように、命令のオペレーションを識別する。パラメータ1フィールドは、パラメータ1記述子321(「s」)およびインデックス322を含む。パラメータ1記述子は、パラメータ1がシステムコールパラメータを参照するか、プロセスコントロール情報を参照するかを指示する。パラメータ1記述子がシステムコールパラメータを指示する場合、インデックスの高位のビットは、システムコールパラメータデータ構造の文字列テーブルがインデックス付けされるべきであるか、整数テーブルがインデックス付けされるべきであるか、ローバイナリテーブルがインデックス付けされるべきであるかを指定し、下位のビットはテーブルのインデックス付きエントリを指示する。パラメータ1記述子がプロセスコントロール情報を指示する場合、インデックスは特定のプロセスコントロール情報を指示する。真の枝分かれフィールドおよび偽の枝分かれフィールドは、この命令の条件コードが真であると評価するか偽であると評価するかに応じて、実行するための次の命令を指定するオフセットを含む。オフセットは、実行されるべき次の命令をポイントするために、現在の命令ポインタに追加される。
表1および2は、一実施形態のセキュリティ仮想マシンの命令を例示する。命令を、データにおいてテストを実行するもの、および、テストを行わないものとして分類することができる。表1は非テスト命令を例示する。
Figure 0004902129
表2はテスト命令を例示する。パターン命令は2つの文字列を比較するための正規表現を定義することができ、正規表現は、ファイル名のワイルドカード型の比較(例えば、「*.DAT」)に対して有用である。
Figure 0004902129

図4は、一実施形態のプログラムロードコンポーネントの処理を例示する流れ図である。コンポーネントは、セキュリティプログラムがセキュリティ仮想マシンにロードされるべきであるとき、呼び出される。セキュリティプログラムは、仮想命令、リテラルデータブロック、および動的データブロックを含む。リテラルデータブロックは、リテラルデータテーブルの情報と、その後に続くリテラルデータストアの情報を含む。コンポーネントはリテラルデータブロックを、開始場所で開始してリテラルストアにコピーする。次いで、コンポーネントは、その基本場所をリテラルデータテーブル内の各オフセットに追加して、オフセットをポインタに変換する。コンポーネントは動的データブロックを、類似の方法で処理する。仮想命令は、リテラルストアおよび動的ストアの開始に対する複数のオフセットを含む。ブロック401で、コンポーネントはリテラルストア内の開始場所を識別し、その開始場所で開始して、セキュリティプログラムのリテラルデータブロックをコピーする。ブロック402で、コンポーネントは開始場所をリテラルデータテーブルの各オフセットに追加して、セキュリティプログラムのオフセットをポインタに変換する。ブロック403で、コンポーネントは動的ストア内の開始場所を識別し、その開始場所で開始して、セキュリティプログラムの動的データブロックをコピーする。ブロック404で、コンポーネントは開始場所を動的データテーブルの各オフセットに追加して、セキュリティプログラムのオフセットをポインタに変換する。ブロック405で、コンポーネントはセキュリティプログラムの仮想命令を命令ストアにコピーし、次いでコンパイルする。
図5は、一実施形態のシステムコールインターセプトコンポーネントの処理を例示する流れ図である。コンポーネントは、システムコールがインターセプトされるときに呼び出される。コンポーネントはシステムコールパラメータデータ構造およびプロセスコントロールデータ構造を初期化し、次いでセキュリティ仮想マシンを開始する。コンポーネントはまた、命令の命令ポインタを提供して、実行を開始して、システムコールを処理することもできる。セキュリティサブプログラムが使用されるとき、コンポーネントは開始命令ポインタへの、および開始データポインタへのシステムコールの、そのシステムコールのためのリテラルおよび動的データ構造へのマッピングを有することができる。プログラムロードコンポーネントを複数回コールして、異なるシステムコールを処理するために、セキュリティプログラムの異なるサブプログラムをロードすることができる。命令およびデータはオフセットベースであるので、命令およびデータを、命令ストアおよびデータ構造の次に使用可能な場所に格納することができる。ブロック501で、コンポーネントは、現在の命令ポインタ(ipとも呼ぶ)をセキュリティプログラムの開始命令ポインタに設定し、アクション出力セットを初期状態(例えば、空)にリセットする。ブロック502〜504で、コンポーネントは、システムコールのパラメータをシステムコールパラメータデータ構造に格納しながらループする。ブロック502で、コンポーネントはシステムコールの次のパラメータを選択する。判断ブロック503で、システムコールのすべてのパラメータがすでに選択されている場合、コンポーネントはブロック505に続き、そうでなければコンポーネントはブロック504に続く。ブロック504で、コンポーネントは、選択されたパラメータをシステムコールパラメータデータ構造の適切なテーブル内に格納し、次いでブロック502にループして、システムコールの次のパラメータを選択する。ブロック505〜507で、コンポーネントは、文字列プロセスコントロール情報をプロセスコントロールデータ構造に格納しながらループする。ブロック505で、コンポーネントは、システムコールを出したプロセスについての次のプロセスコントロール情報を選択する。判断ブロック506で、すべてのプロセスコントロール情報がすでに選択されている場合、コンポーネントはブロック508に続き、そうでなければコンポーネントはブロック507に続く。ブロック507で、コンポーネントは、選択されたプロセスコントロール(pcとも呼ぶ)情報をプロセスコントロールデータ構造内に格納し、次いでブロック505にループして、次のプロセスコントロール情報を選択する。代替として、内部プロセスコントロールデータ構造を使用および初期化するのではなく、セキュリティシステムはプロセスコントロール情報を、必要とされるときにプロセスコントロールブロックから直接検索することができる。プロセスコントロールブロックは、プロセスが作成されるとき、オペレーティングシステムによって作成されることは、当業者には理解されよう。ブロック508で、コンポーネントはセキュリティ仮想マシン(vmとも呼ぶ)を起動して、セキュリティポリシーを、インターセプトされたシステムコール上で実施する。セキュリティ仮想マシンによるセキュリティプログラムの実行が完了した上で、コンポーネントはアクション出力セットのアクションを実行する。
図6は、一実施形態のセキュリティ仮想マシンのプロセッサエンジンの処理を例示する流れ図である。プロセッサエンジンはシステムコールパラメータデータ構造を、インターセプトされたシステムコールに基づいて初期化し、セキュリティ仮想マシンを起動し、出力アクションセットのアクションを実行する。ブロック601〜607で、プロセッサエンジンは、命令ストア内に格納されたセキュリティプログラムの命令をロードおよび実行しながら、停止命令が実行されるまでループする。一実施形態では、セキュリティポリシーは、ルールの条件が満たされるときは常に他のルールはテストされないことを定義することができる。ブロック601で、プロセッサエンジンは、現在の命令ポインタによってポイントされた命令をフェッチする。ブロック602で、プロセッサエンジンはコンポーネントを呼び出して、パラメータ1およびパラメータ2を間接参照する。判断ブロック603で、命令のオペレーションコードがテストオペレーションである場合、プロセッサエンジンはブロック604に続く。命令のオペレーションコードが非テストオペレーションである場合(停止オペレーションを除く)、プロセッサエンジンはブロック608に続く。命令のオペレーションコードが停止オペレーションである場合、プロセッサエンジンはブロック609に続く。ブロック604で、プロセッサエンジンは評価テストコンポーネントを呼び出して、テストオペレーションが真であると評価するか、偽であると評価するかを判断する。呼び出されたコンポーネントは、条件コードフラグを真または偽にセットする。判断ブロック605で、条件コードが真である場合、プロセッサエンジンはブロック607に続き、そうでなければプロセッサエンジンはブロック606に続く。ブロック606で、プロセッサエンジンは偽の枝分かれフィールドのオフセットを現在の命令ポインタに追加し、次いでブロック601にループして、次の命令をフェッチする。ブロック607で、プロセッサエンジンは真の枝分かれフィールドのオフセットを現在の命令ポインタに追加し、次いでブロック601にループして、次の命令をフェッチする。ブロック608で、プロセッサエンジンは非テスト実行コンポーネントを呼び出し、次いでブロック601にループして、次の命令をフェッチする。非テスト実行コンポーネントは命令のオペレーションを実行し、現在の命令ポインタを、実行されるべき次の命令をポイントするようにセットする。非テスト実行コンポーネントは命令の真の枝分かれのオフセット(または、ジャンプ命令の場合、パラメータ2)を命令ポインタに追加する。ブロック609で、コンポーネントは停止命令を実行し、次いで完了する。
図7は、一実施形態のセキュリティ仮想マシンの間接参照コンポーネントの処理を例示する流れ図である。このコンポーネントは、フェッチされた命令のパラメータ1およびパラメータ2を間接参照する。ブロック701〜708で、コンポーネントはパラメータ1を間接参照する。判断ブロック701で、パラメータ1が、パラメータ1記述子によって指示されたシステムコールパラメータである場合、コンポーネントはブロック703に続き、そうでなければコンポーネントはブロック702に続く。ブロック702で、コンポーネントは、間接参照されたパラメータ1を、パラメータ1のインデックスによって指定されたプロセスコントロール情報にセットし、次いでブロック709に続く。判断ブロック703で、パラメータ1のインデックスが、システムコールパラメータが整数であることを指示する場合、コンポーネントはブロック704に続き、そうでなければコンポーネントはブロック705に続く。ブロック704で、コンポーネントは間接参照されたパラメータ1を、インデックスによって指定された整数にセットし、ブロック709に続く。判断ブロック705で、パラメータ1のインデックスが、システムコールパラメータが文字列であることを指示する場合、コンポーネントはブロック706に続き、そうでなければコンポーネントはブロック707に続く。ブロック706で、コンポーネントは間接参照されたパラメータ1を、インデックスによって指定された文字列にセットし、ブロック709に続く。判断ブロック707で、パラメータ1のインデックスが、システムコールパラメータがローバイナリであることを指示する場合、コンポーネントはブロック708に続き、そうでなければエラーが発生している。ブロック708で、コンポーネントは間接参照されたパラメータ1を、インデックスによって指定されたローバイナリにセットし、ブロック709に続く。ブロック709〜714で、コンポーネントはパラメータ2を間接参照する。判断ブロック709で、パラメータ2記述子が即時データを指示する場合、コンポーネントはブロック710に続き、そうでなければコンポーネントはブロック711に続く。ブロック710で、コンポーネントは間接参照されたパラメータ2を、フェッチされた命令内のパラメータ2の値にセットし、次いで戻る。判断ブロック711で、パラメータ2記述子がリテラルデータを指示する場合、コンポーネントはブロック712に続き、そうでなければコンポーネントはブロック713に続く。ブロック712で、コンポーネントは間接参照されたパラメータ2を、フェッチされた命令内のパラメータ2によって指定されたリテラルデータにセットし、次いで戻る。判断ブロック713で、パラメータ2記述子が動的データを指示する場合、コンポーネントはブロック714に続き、そうでなければエラーが発生している。ブロック714で、コンポーネントは間接参照されたパラメータ2を、フェッチされた命令内のパラメータ2によって指定された動的データにセットし、次いで戻る。
図8は、一実施形態のセキュリティ仮想マシンの評価テストコンポーネントの処理を例示する流れ図である。コンポーネントはロードされた命令のオペレーションコードをデコードし、そのオペレーションコードのテストを実施するためにコンポーネントを呼び出す。呼び出されたコンポーネントは条件コードを真または偽にセットする。判断ブロック801〜803で、コンポーネントは、ロードされた命令のオペレーションコードをデコードする。ブロック804〜806で、コンポーネントは、デコードされたオペレーションコードを実装するためのコンポーネントを呼び出し、次いで戻る。
図9は、一実施形態のセキュリティ仮想マシンのテストコンポーネントの処理を例示する流れ図である。テストコンポーネントは、テストオペレーションコードを実装する。ブロック901で、コンポーネントは条件コードを、間接参照されたパラメータ2の値にセットし、次いで戻る。
図10は、一実施形態のセキュリティ仮想マシンの文字列マッチコンポーネントの処理を例示する流れ図である。コンポーネントは、間接参照されたパラメータ1が間接参照されたパラメータ2とマッチするかどうかを判断する。一実施形態では、セキュリティ仮想マシンはパターンマッチングを使用することができる。例えば、パラメータは「ワイルドカード」指定またはより一般には正規表現を含むことができる。判断ブロック1001で、パラメータ1およびパラメータ2の長さがマッチする場合、コンポーネントはブロック1003に続き、そうでなければこれらの間接参照されたパラメータはマッチすることができず、コンポーネントはブロック1002に続く。ブロック1002で、コンポーネントは条件コードを偽にセットし、次いで戻る。ブロック1003〜1006で、コンポーネントは、これらの間接参照されたパラメータの文字列の各文字をチェックしながらループする。ブロック1003で、コンポーネントは各文字列の次の文字を選択する。判断ブロック1004で、文字列のすべての文字がすでに選択されている場合、コンポーネントはブロック1008に続き、そうでなければコンポーネントはブロック1005に続く。ブロック1005で、コンポーネントは選択された文字を正規化する。例えば、コンポーネントは各文字を小文字にして、ケースインセンシティブ比較(case insensitive comparison)を実施することができる。判断ブロック1006で、選択された文字がマッチする場合、コンポーネントはブロック1003にループして、文字列の次の文字を選択し、そうでなければコンポーネントはブロック1007に続く。ブロック1007で、コンポーネントは条件コード(ccとも呼ぶ)を偽にセットし、次いで戻る。ブロック1008で、文字列のすべての文字はマッチし、コンポーネントは条件コードを真にセットし、次いで戻る。
図11は、一実施形態のセキュリティ仮想マシンの非テストコンポーネントの処理を例示する流れ図である。コンポーネントは、フェッチされた命令の非テストオペレーションコードのオペレーションを実行し、これには、現在の命令ポインタを、実行するための次の命令をポイントするようにセットすることが含まれる。判断ブロック1101で、オペレーションコードがアクションオペレーションである場合、コンポーネントはブロック1102に続き、そうでなければコンポーネントはブロック1103に続く。ブロック1102で、コンポーネントはフェッチされた命令のパラメータ2をアクション出力セットに追加し、次いでブロック1107に続く。判断ブロック1103で、オペレーションコードがリセットオペレーションである場合、コンポーネントはブロック1104に続き、そうでなければコンポーネントはブロック1105に続く。ブロック1104で、コンポーネントはアクション出力セットをクリアし、次いでブロック1107に続く。判断ブロック1105で、オペレーションコードがジャンプオペレーションである場合、コンポーネントは1106に続き、そうでなければコンポーネントはさらなるオペレーションコードをデコードし続ける。ブロック1106で、コンポーネントはパラメータ2を現在の命令ポインタに追加し、次いで戻る。ブロック1107で、コンポーネントは真の枝分かれフィールド(tbとも呼ぶ)の値を現在の命令ポインタに追加し、次いで戻る。
セキュリティシステムの特定の実施形態を本明細書で例示のために説明したが、様々な修正を、本発明の精神および範囲から逸脱することなく行うことができることは、当業者には理解されよう。セキュリティ仮想マシンを使用するセキュリティシステムを使用して、幅広い種類のセキュリティポリシーを実施することができることは、当業者には理解されよう。例えば、セキュリティシステムを使用して、ネットワークを介して受信されたメッセージ、トランザクションプロセッサによって受信されたトランザクション、および、より一般には、アプリケーションプログラミングインターフェイスを提供するいかなるアプリケーションものセキュリティを実施することができる。したがって、本発明は、添付の特許請求の範囲による以外には限定されない。
一実施形態のセキュリティシステムのコンポーネントを例示するブロック図である。 一実施形態のデータストアのデータ構造を例示するブロック図である。 一実施形態のセキュリティ仮想マシンの命令のレイアウトを例示する図である。 一実施形態のプログラムロードコンポーネントの処理を例示する流れ図である。 一実施形態のシステムコールインターセプトコンポーネントの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンのプロセッサエンジンの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンの間接参照コンポーネントの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンの評価テストコンポーネントの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンのテストコンポーネントの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンの文字列マッチコンポーネントの処理を例示する流れ図である。 一実施形態のセキュリティ仮想マシンの非テストコンポーネントの処理を例示する流れ図である。
符号の説明
100 ユーザーモード
101 アプリケーション
102 ポリシーコンパイラ
103 ポリシーストア
110 セキュリティシステム
120 カーネルモード
121 システムコールインターセプト
122 プログラムロード
127 プロセッサエンジン
128 命令ストア
129 データストア
202 リテラルデータテーブル
203 リテラルデータストア
211 動的データテーブル
221 システムコールパラメータ
222 文字列テーブル
223 整数テーブル
224 ローバイナリテーブル
231 プロセスコントロールブロックテーブル
241 アクション出力セット

Claims (32)

  1. セキュリティポリシーを実施するための第1の命令セットを有するコンピュータデバイス内の方法であって、
    高水準言語のセキュリティポリシーを提供するステップであって、前記セキュリティポリシーは望まない振る舞いを引き起こす可能性のあるシステムコールのパラメータを示す、ステップと、
    前記高水準言語の前記セキュリティポリシーをセキュリティプログラムに、セキュリティ仮想マシンの第2の命令セットに基づいてコンパイルするステップであって、前記セキュリティ仮想マシンの前記第2の命令セットは前記コンピュータデバイスの前記第1の命令セットとは異なり、前記セキュリティ仮想マシンは、前記コンピュータデバイスの前記第1の命令セットの命令を使用して実装される、ステップと、
    前記セキュリティプログラムを前記セキュリティ仮想マシンの命令ストアに前記コンピュータデバイスによってロードするステップと、
    カーネルモードにおける前記コンピュータデバイスで実行するオペレーティングシステムの制御の下で、
    ユーザモードにおける前記コンピュータデバイス上で実行するアプリケーションから、パラメータと共に、前記オペレーティングシステムのシステムコールの呼び出しを受け取るステップであって、前記呼び出しは前記セキュリティ仮想マシンの外部でアプリケーションが実行されている間発生するセキュリティ実施イベントである、ステップと、
    前記呼び出しを受け取り、前記コンピュータデバイスによって実行される前記第1の命令セットの命令によって前記セキュリティ仮想マシンの制御下にある間、
    前記セキュリティ実施イベントが前記セキュリティポリシーに適合するかを確認するためのパラメータを含む前記セキュリティ実施イベントのデータに基づいて、前記命令ストアの前記第2の命令セットの前記命令を実行するステップであって、前記第2の命令セットの前記命令は、前記セキュリティ実施イベントの前記データに含まれる前記パラメータが前記セキュリティポリシーに示されているかどうかを確認することである、ステップと、
    前記セキュリティ実施イベントが前記セキュリティポリシーに適合したとき、前記システムコールの呼び出しを許可するステップと、
    前記セキュリティ実施イベントが前記セキュリティポリシーに適合しなかったとき、前記システムコールの呼び出しを阻止するステップと
    を備えることを特徴とする方法。
  2. 前記システムコールを出すアプリケーションのプロセスコントロール情報は、前記セキュリティ実施イベントの前記データであることを特徴とする請求項1に記載の方法。
  3. 前記セキュリティプログラムのデータはリテラルデータ構造内に格納されることを特徴とする請求項1に記載の方法。
  4. 命令は、前記リテラルデータ構造内に格納されたリテラルデータへの参照を含むことを特徴とする請求項3に記載の方法。
  5. 前記セキュリティプログラムのデータは動的データ構造内に格納されることを特徴とする請求項1に記載の方法。
  6. 前記第2の命令セットの命令は、前記動的データ構造内に格納された動的データへの参照を含むことを特徴とする請求項5に記載の方法。
  7. 前記第2の命令セットの命令は、実行するための次の命令の場所を識別することを特徴とする請求項1に記載の方法。
  8. 前記セキュリティ仮想マシンは、ブール、整数、文字列およびローバイナリデータ型をサポートすることを特徴とする請求項1に記載の方法。
  9. 前記セキュリティ仮想マシンは正規表現パターンマッチング比較をサポートすることを特徴とする請求項1に記載の方法。
  10. 前記第2の命令セットの命令は、オペレーションコード、パラメータおよび枝分かれフィールドを含むことを特徴とする請求項1に記載の方法。
  11. 前記枝分かれフィールドは、前記命令の条件が真であると評価するときに次の命令を指定する真の枝分かれフィールド、および、前記命令の前記条件が偽であると評価するときに次の命令を指定する偽の枝分かれフィールドを含むことを特徴とする請求項10に記載の方法。
  12. コンピュータデバイスによって実行して、セキュリティ仮想マシンの外部においてユーザモードで実行しているアプリケーションがシステムコールをセキュリティポリシーに違反するパラメータと共に、カーネルモードにおいて実行しているオペレーティングシステムへ出しているときを検出するための前記セキュリティ仮想マシンを実装する第1の命令セットを有するコンピュータ可読記録媒体であって、前記コンピュータ可読記録媒体はさらに第2の命令セットを有し、前記セキュリティ仮想マシンは、
    前記セキュリティポリシーを実装する前記第2の命令セットの命令を含む命令ストアであって、前記第2の命令セットは前記第1の命令セットとは異なる、命令ストアと、
    前記セキュリティポリシーのデータを含むデータストアと、
    システムコールのパラメータを含むパラメータストアと、
    前記命令ストアの前記命令を、前記データストアのデータおよび前記パラメータストアのパラメータを使用して実行して、前記セキュリティ仮想マシンの外部において実行している前記アプリケーションの前記システムコールが前記セキュリティポリシーに違反するかどうかを判断するプロセッサエンジンと
    を備え、システムコールの発行における前記オペレーティングシステムは、前記パラメータストアにパラメータを保存し、前記プロセッサエンジンを呼び出し、前記プロセッサエンジンによって前記システムコールが前記セキュリティポリシーに違反することが判定されたとき前記システムコールを許可せず、前記セキュリティポリシーを実装する前記命令の実行は、前記セキュリティ実施イベントをどのように処理するかを指定するアクション出力セットを生成し、アクション出力セットは前記システムコールにおいて前記セキュリティポリシーを実施するために実行されるべきアクションを指示し、前記アクションはユーザに通知することを含むことを特徴とするコンピュータ可読記録媒体。
  13. 前記セキュリティポリシーを実装する前記命令は、高水準言語における前記セキュリティポリシーの表現からコンパイルされることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  14. 前記高水準言語はXMLベースのフォーマットにおけるものであることを特徴とする請求項13に記載のコンピュータ可読記録媒体。
  15. 前記高水準言語は、条件、および、前記条件が満たされるときに実行するためのアクションに関して、指定されるルールを有することを特徴とする請求項13に記載のコンピュータ可読記録媒体。
  16. 前記セキュリティ仮想マシンはカーネルモードで実行することを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  17. プログラムロードコンポーネントは命令を前記命令ストアにロードすることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  18. 前記命令を実行するときに使用されるプロセスコントロール情報を格納するための、プロセスコントロール情報ストアを含むことを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  19. 前記データストアは、リテラルデータ構造および動的データ構造を含むことを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  20. 命令は前記データストアへの参照を含むことを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  21. 各命令は、実行するための次の命令の場所を識別することを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  22. 前記セキュリティ仮想マシンは、ブール、整数、文字列およびローバイナリデータ型をサポートすることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  23. 前記仮想マシンは正規表現パターンマッチング比較をサポートすることを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  24. 命令は、オペレーションコード、パラメータおよび枝分かれフィールドを含むことを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  25. 前記枝分かれフィールドは、前記命令の条件が真であると評価するときに次の命令を指定する真の枝分かれフィールド、および、前記命令の前記条件が偽であると評価するときに次の命令を指定する偽の枝分かれフィールドを含むことを特徴とする請求項12に記載のコンピュータ可読記録媒体。
  26. セキュリティポリシーを実施するための命令符号化されたコンピュータ可読記録媒体であって、前記命令はセキュリティ仮想マシンによる実行のためのものであり、前記セキュリティポリシーの高水準言語表現からコンパイルされ、セキュリティ仮想マシン内部で実行されていないアプリケーションが前記セキュリティポリシーとともにコンパイルすることを確認される必要がある動作の実行を試みるとき前記命令はコンピュータデバイス上で実行している前記セキュリティ仮想マシンによって実行され、オペレーティングシステムが前記アプリケーションが確認される必要がある動作の実行を試みていることを検出したとき、前記オペレーティングシステムは前記セキュリティ仮想マシンを使用して前記動作が前記セキュリティポリシーに適合するかを決定し、前記セキュリティ仮想マシンが、前記動作が前記セキュリティポリシーに適合しないことを示すとき、前記オペレーティングシステムは前記動作が実行されることを許可せず、前記セキュリティ仮想マシンが、前記動作が前記セキュリティポリシーに適合することを示すとき、前記オペレーティングシステムは前記動作が実行されることを許可することを特徴とするコンピュータ可読記録媒体。
  27. 前記セキュリティポリシーを実施するために使用されたデータのためのデータストアをさらに含むことを特徴とする請求項26に記載のコンピュータ可読記録媒体。
  28. 前記データストアはリテラルデータおよび動的データを含むことを特徴とする請求項26に記載のコンピュータ可読記録媒体。
  29. 前記命令は再配置可能セキュリティサブプログラムを形成することを特徴とする請求項26に記載のコンピュータ可読記録媒体。
  30. 各命令は、実行するための次の命令を識別することを特徴とする請求項26に記載のコンピュータ可読記録媒体。
  31. 前記セキュリティポリシーは、システムコールのパラメータが確認される、それぞれの前記システムコールのためのサブポリシーを含み、それぞれのサブポリシーは分離されているサブプログラムへコンパイルされ、前記他のセキュリティサブプログラムとは独立して前記命令ストアに読み込まれることを特徴とする請求項1に記載の方法。
  32. セキュリティポリシーを実施するための第1の命令セットを有するコンピュータデバイス内の方法であって、
    高水準言語のセキュリティポリシーを提供するステップであって、前記セキュリティポリシーは望まない振る舞いを引き起こす可能性のあるシステムコールのパラメータを示し、前記セキュリティポリシーはセキュリティ仮想マシンの第2の命令セットに基づいて前記高水準言語からセキュリティプログラムへコンパイルされ、前記セキュリティ仮想マシンの前記第2の命令セットは前記コンピュータデバイスの前記第1の命令セットとは異なり、前記セキュリティ仮想マシンは、前記コンピュータデバイスの中央処理装置によって直接実行される前記コンピュータデバイスの前記第1の命令セットの命令を使用して実装される、ステップと、
    前記セキュリティプログラムを前記セキュリティ仮想マシンの命令ストアに前記コンピュータデバイスによってロードするステップと、
    カーネルモードにおける前記コンピュータデバイスの中央処理装置によって直接実行される前記コンピュータデバイスの前記第1の命令セットの命令を使用して実装される、オペレーティングシステムの制御の下で、
    ユーザモードにおける前記コンピュータデバイス上で実行するアプリケーションから、パラメータと共に、前記オペレーティングシステムのシステムコールの呼び出しを受け取るステップであって、前記アプリケーションが実行されている間発生するセキュリティ実施イベントであり、前記アプリケーションは前記コンピュータデバイスの中央処理装置によって直接実行される前記コンピュータデバイスの前記第1の命令セットの命令を使用して実装される、ステップと、
    前記オペレーティングシステムの前記システムコールの前記呼び出しを受け取り、カーネルモードにおける前記セキュリティ仮想マシンの実行を開始し、
    カーネルモードにおいて前記セキュリティ仮想マシンが実行されている間、前記セキュリティ実施イベントが前記セキュリティポリシーに適合するかどうかを確認するためのパラメータを含む前記セキュリティ実施イベントのデータに基づいて前記命令ストアの前記第2の命令セットの前記命令を実行するステップであって、前記第2の命令セットの前記命令は、前記セキュリティ実施イベントの前記データに含まれる前記パラメータが前記セキュリティポリシーに示されているかどうかを確認することである、ステップと、
    前記セキュリティ仮想マシンの実行が停止したのち、
    前記セキュリティ実施イベントが前記セキュリティポリシーに適合したとき、前記システムコールを実行するステップと、
    前記セキュリティ実施イベントが前記セキュリティポリシーに適合しなかったとき、前記システムコールの実行を阻止するステップと
    を備えることを特徴とする方法。
JP2005088743A 2004-04-27 2005-03-25 セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム Expired - Fee Related JP4902129B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/832,798 2004-04-27
US10/832,798 US8607299B2 (en) 2004-04-27 2004-04-27 Method and system for enforcing a security policy via a security virtual machine

Publications (2)

Publication Number Publication Date
JP2005316964A JP2005316964A (ja) 2005-11-10
JP4902129B2 true JP4902129B2 (ja) 2012-03-21

Family

ID=34939240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005088743A Expired - Fee Related JP4902129B2 (ja) 2004-04-27 2005-03-25 セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム

Country Status (17)

Country Link
US (1) US8607299B2 (ja)
EP (1) EP1596298B1 (ja)
JP (1) JP4902129B2 (ja)
KR (1) KR101143154B1 (ja)
CN (1) CN1690957B (ja)
AU (1) AU2005200911B2 (ja)
BR (1) BRPI0501171A (ja)
CA (1) CA2499688C (ja)
CO (1) CO5680123A1 (ja)
MX (1) MXPA05003403A (ja)
MY (1) MY147383A (ja)
NO (1) NO336813B1 (ja)
NZ (1) NZ539022A (ja)
RU (1) RU2390837C2 (ja)
SG (1) SG116580A1 (ja)
TW (1) TWI423040B (ja)
ZA (1) ZA200502451B (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US8607299B2 (en) 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
WO2006017388A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
US7913092B1 (en) * 2005-12-29 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for enforcing application security policies using authenticated system calls
US7725614B2 (en) * 2006-08-08 2010-05-25 Sandisk Corporation Portable mass storage device with virtual machine activation
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US20080250407A1 (en) * 2007-04-05 2008-10-09 Microsoft Corporation Network group name for virtual machines
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US9940181B2 (en) * 2008-07-14 2018-04-10 Nyotron Information Security Ltd. System and method for reacting to system calls made to a kernal of the system
US8533833B2 (en) * 2008-07-14 2013-09-10 Nyotron Information Security Ltd. System, a method, and a data-structure for processing system calls in a computerized system that implements a kernel
EP2194456A1 (en) * 2008-12-05 2010-06-09 NTT DoCoMo, Inc. Method and apparatus for performing a file operation
US20100162240A1 (en) * 2008-12-23 2010-06-24 Samsung Electronics Co., Ltd. Consistent security enforcement for safer computing systems
US8561090B2 (en) * 2009-02-26 2013-10-15 Red Hat, Inc. Method and an apparatus to implement secure system call wrappers
EP2237200A1 (en) * 2009-04-01 2010-10-06 Alcatel Lucent Method for filtering the streaming of virtual environment content assets, a related system, network element and a related virtual environment content asset
US8429648B2 (en) * 2009-05-28 2013-04-23 Red Hat, Inc. Method and apparatus to service a software generated trap received by a virtual machine monitor
US8813069B2 (en) * 2009-05-29 2014-08-19 Red Hat, Inc. Migration of functionalities across systems
KR101113820B1 (ko) * 2010-03-16 2012-02-29 소프트캠프(주) 응용프로그램의 파일 입출력 보안방법과 보안시스템
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
US9129138B1 (en) * 2010-10-29 2015-09-08 Western Digital Technologies, Inc. Methods and systems for a portable data locker
US8566899B2 (en) * 2011-03-16 2013-10-22 Symantec Corporation Techniques for securing a checked-out virtual machine in a virtual desktop infrastructure
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
AU2012337403B2 (en) 2011-11-16 2015-04-30 V-Key Inc Cryptographic system and methodology for securing software cryptography
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
US8966574B2 (en) 2012-02-03 2015-02-24 Apple Inc. Centralized operation management
CN102831342B (zh) * 2012-07-28 2016-01-06 北京深思数盾科技有限公司 一种提高安卓系统中应用程序保护强度的方法
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US20150277949A1 (en) * 2014-03-27 2015-10-01 Thiam Wah Loh Securing shared interconnect for virtual machine
US10402584B1 (en) * 2015-10-01 2019-09-03 Hrl Laboratories, Llc System and method for translating security objectives of computer software to properties of software code
US10289853B2 (en) * 2016-03-31 2019-05-14 Microsoft Technology Licensing, Llc Secure driver platform
US10650138B2 (en) * 2017-01-27 2020-05-12 Hewlett Packard Enterprise Development Lp System call policies for containers
US11831655B2 (en) 2017-10-02 2023-11-28 Qualcomm Incorporated Incorporating network policies in key generation
CN109639449B (zh) * 2017-10-09 2021-09-03 中兴通讯股份有限公司 虚拟化流镜像策略自动化管理的方法、设备及介质
CN109992974B (zh) * 2017-12-29 2023-04-14 中兴通讯股份有限公司 虚拟机字节码文件的保护方法、设备及可读存储介质
US10747711B2 (en) * 2018-03-20 2020-08-18 Arizona Board Of Regents On Behalf Of Northern Arizona University Dynamic hybridized positional notation instruction set computer architecture to enhance security
US11108823B2 (en) 2018-07-31 2021-08-31 International Business Machines Corporation Resource security system using fake connections
US11182507B2 (en) * 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10452868B1 (en) * 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US11698980B2 (en) * 2019-09-12 2023-07-11 Arm Limited System, devices and/or processes for secure computation on a virtual machine
US11588859B2 (en) * 2021-03-15 2023-02-21 Zscaler, Inc. Identity-based enforcement of network communication in serverless workloads
WO2022270385A1 (ja) 2021-06-22 2022-12-29 デジタル・インフォメーション・テクノロジー株式会社 プログラム、情報処理装置、方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
JP3381927B2 (ja) * 1997-01-17 2003-03-04 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 分散コンピュータ・システムにおいて資源を保護する方法
US6370571B1 (en) * 1997-03-05 2002-04-09 At Home Corporation System and method for delivering high-performance online multimedia services
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6125447A (en) * 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6170009B1 (en) 1998-07-17 2001-01-02 Kallol Mandal Controlling devices on a network through policies
US6658571B1 (en) * 1999-02-09 2003-12-02 Secure Computing Corporation Security framework for dynamically wrapping software applications executing in a computing system
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
GB2365561B (en) 1999-12-14 2004-06-16 Ibm Conditional access control
US6567974B1 (en) * 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
WO2001065366A1 (en) 2000-03-02 2001-09-07 Alarity Corporation System and method for process protection
US6973493B1 (en) * 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
CA2315449A1 (en) * 2000-08-10 2002-02-10 Ibm Canada Limited-Ibm Canada Limitee Generation of runtime execution traces of applications and associated problem determination
KR20020033859A (ko) 2000-10-30 2002-05-08 송영호 리눅스 보안 커널
WO2002086699A2 (en) * 2001-04-23 2002-10-31 Atmel Corporation Microprocessor for executing byte compiled java code
US20020184520A1 (en) * 2001-05-30 2002-12-05 Bush William R. Method and apparatus for a secure virtual machine
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
GB2376761A (en) * 2001-06-19 2002-12-24 Hewlett Packard Co An arrangement in which a process is run on a host operating system but may be switched to a guest system if it poses a security risk
US7698713B2 (en) 2001-09-20 2010-04-13 Google Inc. Altered states of software component behavior
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
JP2003173301A (ja) * 2001-12-07 2003-06-20 Hitachi Ltd ネットワーク,サーバおよびストレージのポリシーサーバ
JP4522705B2 (ja) 2001-12-13 2010-08-11 独立行政法人科学技術振興機構 ソフトウェア安全実行システム
US7415270B2 (en) * 2002-02-15 2008-08-19 Telefonaktiebolaget L M Ericsson (Publ) Middleware services layer for platform system for mobile terminals
US7536181B2 (en) * 2002-02-15 2009-05-19 Telefonaktiebolaget L M Ericsson (Publ) Platform system for mobile terminals
US7178049B2 (en) 2002-04-24 2007-02-13 Medius, Inc. Method for multi-tasking multiple Java virtual machines in a secure environment
US20030204500A1 (en) * 2002-04-25 2003-10-30 Jean-Francois Delpech Process and apparatus for automatic retrieval from a database and for automatic enhancement of such database
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7082598B1 (en) * 2002-07-17 2006-07-25 Vmware, Inc. Dynamic driver substitution
US7149510B2 (en) * 2002-09-23 2006-12-12 Telefonaktiebolaget Lm Ericsson (Publ) Security access manager in middleware
JP2004126854A (ja) 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
US7117481B1 (en) * 2002-11-06 2006-10-03 Vmware, Inc. Composite lock for computer systems with multiple domains
US7657937B1 (en) * 2003-01-02 2010-02-02 Vmware, Inc. Method for customizing processing and response for intrusion prevention
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US8607299B2 (en) 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine

Also Published As

Publication number Publication date
EP1596298B1 (en) 2017-02-08
KR20060044764A (ko) 2006-05-16
EP1596298A1 (en) 2005-11-16
US8607299B2 (en) 2013-12-10
AU2005200911A1 (en) 2007-02-15
CO5680123A1 (es) 2006-09-29
NZ539022A (en) 2007-05-31
NO336813B1 (no) 2015-11-02
KR101143154B1 (ko) 2012-05-08
AU2005200911B2 (en) 2010-10-21
CA2499688A1 (en) 2005-10-27
NO20051525L (no) 2005-10-28
NO20051525D0 (no) 2005-03-22
TWI423040B (zh) 2014-01-11
CN1690957A (zh) 2005-11-02
JP2005316964A (ja) 2005-11-10
CA2499688C (en) 2014-02-25
BRPI0501171A (pt) 2006-01-10
TW200617702A (en) 2006-06-01
RU2390837C2 (ru) 2010-05-27
CN1690957B (zh) 2010-06-09
MY147383A (en) 2012-11-30
SG116580A1 (en) 2005-11-28
RU2005107408A (ru) 2006-08-27
MXPA05003403A (es) 2005-10-31
ZA200502451B (en) 2006-12-27
US20050257243A1 (en) 2005-11-17

Similar Documents

Publication Publication Date Title
JP4902129B2 (ja) セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム
EP1258805B1 (en) Placing exception throwing instruction in compiled code
US8104021B2 (en) Verifiable integrity guarantees for machine code programs
US7171655B2 (en) Verifier to check intermediate language
US20080120604A1 (en) Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation
CN108153518B (zh) 一种java程序反混淆方法及终端
Van Rossum et al. The python language reference
AU2004232058A1 (en) Method and system for detecting vulnerabilities in source code
Qiu et al. Libcapsule: Complete confinement of third-party libraries in android applications
US7266804B2 (en) Strategy for selectively making non-public resources of one assembly visible to another
Xiong et al. Static taint analysis method for intent injection vulnerability in android applications
JP2006216038A (ja) セキュリティクリティカルデータコンテナ
Nair et al. Trishul: A policy enforcement architecture for java virtual machines
BRPI0501171B1 (pt) Method in a computing device to enforce a security policy
Dawson Secure input validation in Rust with parsing-expression grammars
CN116010100A (zh) 区块链系统中的合约调用方法、装置、设备及存储介质
Hessling et al. The Regina Rexx Interpreter
Drepper Defensive programming for red hat enterprise linux (and what to do if something goes wrong)
Long et al. ISO/IEC JTC1 SC22 WG14 N1158
Octeau Analysis of Inter-Component Communication in mobile applications through retargeting
Wielemaker J. Wielemaker@ vu. nl
Nature Type CWE-119: Failure to Constrain Operations within the Bounds of a Memory Buffer
Amsterdam jan@ swi. psy. uva. nl http://www. swi. psy. uva. nl/projects/SWI-Prolog/SWI-Prolog is a Prolog implementation based on a subset of the WAM (Warren Abstract Machine). SWI-Prolog was developed as an _* o_* p_* e_* n Prolog environment, providing a powerful and bi-directional interface to C in an era this was unknown

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110805

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111205

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111228

R150 Certificate of patent or registration of utility model

Ref document number: 4902129

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150113

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees