JP2001514411A - 信頼できない実行可能コードに関するセキュリティ向上 - Google Patents

信頼できない実行可能コードに関するセキュリティ向上

Info

Publication number
JP2001514411A
JP2001514411A JP2000508048A JP2000508048A JP2001514411A JP 2001514411 A JP2001514411 A JP 2001514411A JP 2000508048 A JP2000508048 A JP 2000508048A JP 2000508048 A JP2000508048 A JP 2000508048A JP 2001514411 A JP2001514411 A JP 2001514411A
Authority
JP
Japan
Prior art keywords
memory
code
applet
untrusted
area
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
JP2000508048A
Other languages
English (en)
Other versions
JP3572016B2 (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 JP2001514411A publication Critical patent/JP2001514411A/ja
Application granted granted Critical
Publication of JP3572016B2 publication Critical patent/JP3572016B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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/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/54Monitoring 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 adding security routines or objects to programs

Abstract

(57)【要約】 信頼されない実行可能なコードプログラム(アプレット又はコントロール)は、ネイティブ、直接実行可能なコードで書かれる。実行可能なコードは、メモリの外側へのリファレンスが制限される予め割り当てられたメモリ範囲(サンドボックス)内にロードされ、外側のメモリに対するリファレンスが、実行可能なコードに追加されたチェック(スニフコード)によって厳重に制限される。信頼されないコードにおける在来のアプリケーションプログラムインターフェース(API)コールは、ホストシステムのセキュリティの侵害を防止しながら、実行コードがホストオペレーティングシステムにアクセスすることができる変換コードモジュール(サンク)で置換される。コードにおける静的リンクは、コールによってサンクモジュールに置換される。実行中にAPIコールが作られるとき、コントロールはサンクに移送し、APIコールがオペレーティングシステムで実行されることが許容されるべきか判断する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、電子的データ処理に関し、特に、信頼できないコードを包含する実
行可能プログラムからのシステム損傷を回避することに関する。
【0002】
【従来の技術】
インターネットブラウザの進歩は、WWW(ワールドワイドウェブ:World Wi
de Web)の動的及びインタラクティブなページを作り出す。しかしながら、進歩
はまた、ウェブページを単に見ることから発生する多くのコンピュータシステム
セキュリティリスクを作り出す。インターネットブラウザは、プログラム又は、
ウェブページに埋め込まれた他の実行可能なコードを自動的にダウンロードし、
実行する。リモートコンピュータからプログラムをダウンロードし、実行する能
力は、ホストコンピュータを種々のセキュリティリスクに曝す。例えばコンピュ
ータシステム又は、コンピュータシステムのデータを修正する敵意のあるプログ
ラムは、パスワード、銀行預金口座情報のようなユーザデータを盗み、ユーザに
システムリソースを利用できなくさせる。その結果、セキュリティの問題は、イ
ンターネットアプリケーションの開発において重要である。
【0003】 ある従来技術のアプローチにより、Javaアプレットとして知られる実行可
能なコードの特定のフォームにセキュリティを設けた。実行可能なコードソース
プログラムは、書き込まれ、プラットフォーム独立バイトコードに変換されダウ
ンロードされる。プラットフォーム独立トークン化されたバイトコードは、実行
可能コードがすることができる厳格な制限を配置する仮想マシーンで走る。従来
技術のアプローチにおける実行可能なコードは、オペレーティングシステムへの
アクセスが非常に制限されていた。従って、Java言語はより強力になるので
、オペレーティングシステムがすでに実行できる多くの関数を複製しなければな
らない。
【0004】 ActiveXコントロールは、Javaの制限された能力を回避する実行可能なコード のフォームである。ActiveXは、OLE(Object Linking and Embedding)及び COM(Component Object Model)と呼ばれるマイクロソフト社の2つの技術の
産物である。ActiveXは、それがインターネットを利用することができるという 特徴をサポートする。例えば、ActiveXコントロールは、Webブラウザによって自
動的にダウンロードされ、実行される。
【0005】 ActiveXコントロールが、ネイティブコードで書かれるので、それらはオペレ ーティングシステムに十分にアクセスでき、コントロールが稼働するメモリを処
理することができる。このアクセスは、コントロールが、スタンドアロンアプリ
ケーションに対する拡張のようなきつく制御された環境で稼働するときに、強力
である。しかしながら、ActiveXコントロールが、インターネットエクスプロー ラのようなウェブブラウザのようなアプリケーションによってインターネット上
の知らない又は信用できないソースからダウンロードされるとき、オペレーティ
ングシステムへの十分なアクセスは、深刻なセキュリティの問題を生ずる。Acti
veXコントロールは、いかなるオペレーティングシステムのサービスにもアクセ スするように設計される。敵意のあるActiveXコントロールは、ホストシステム のハードドライブのお情報を検索することができ、ウィルスを注入することがで
き、又は、ホストシステムを損傷させることができた。オペレーティングシステ
ムに対するActiveXの無制限のアクセスによる問題は、無制限のアクセスが、セ キュリティ違反に対するリスクにホストシステムを置くことである。
【0006】 従って、ホストシステムのセキュリティを妥協することのない、ホストオペレ
ーティングシステムのパワーにアクセスする能力を備えた実行可能なコードのフ
ォームの必要性がある。
【0007】
【発明が解決しようとする課題】
本発明は、ネイティブ、即ち直接実行可能なコードで書かれた信頼されたい実
行可能なコードに関するセキュリティポリシーを実行する。実行可能なコードは
、メモリの外側へのリファレンスが制限される予め割り当てられたメモリ範囲、
即ちサンドボックス内にロードされる。実行中、実行可能なコードに追加された
チェック(「スニフコード(sniff code)」)は、これらの制限を強制する。信
頼されないコードにおける在来のアプリケーションプログラムインターフェース
(API)コールは、ホストシステムのセキュリティの侵害を防止しながら、実
行コードがホストオペレーティングシステムにアクセスすることができる変換コ
ードモジュール(「サンク(thunks)」)で置換される。コントロール又はアプ
レットにおける静的リンクは、コールによってサンクモジュールに置換される。
実行中にAPIコールが作られるとき、コントロールはサンクに移送し、API
コールがオペレーティングシステムで実行されることが許容されるべきか否か判
断する。
【0008】
【課題を解決するための手段】 【発明の実施の形態】
以下の実施の形態の詳細な説明において、添付の図面を参照するが、それらは
、本発明を実施するための特定の実施形態の例示として示したものである。これ
らの実施形態は、当業者が本発明を実施するのに十分に詳細に記載されており、
他の実施形態が利用可能であり、本発明の精神及び範囲を逸脱することなく論理
的及び電気的な変更をすることができることを理解すべきである。それゆえ、以
下の詳細な説明を限定的な意味にとってはならず、本発明の範囲は特許請求の範
囲のみによって定義される。複数の図で表される同一のコンポーネントは同じ参
照番号によって識別される。
【0009】 図1及び以下の議論は、本発明を実行することができる適当な計算環境の一般
的な説明を短く提供するものである。望まないけれども、本発明は、パーソナル
コンピュータによって実行されるプログラムモジュールのようなコンピュータ実
行可能な命令の一般的なコンテキストで記載される。一般的に、プログラムモジ
ュールは、特定のタスクを実行し、又は、特定の抽象データ型を実行する、ルー
チン、プログラム、オブジェクト、コンポーネント、データ構造などを包含する
。更に、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイク
ロプロセッサベース又はプログラム可能なカスタマエレクトロニック、ネットワ
ークPC、ミニコンピュータ、メインフレームコンピュータ、などを包含する他
のコンピュータシステムで実行されうることは、当業者には明らかであろう。本
発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによ
ってタスクが実行される分散計算環境でも実行される。分散計算環境では、プロ
グラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置される
【0010】 図1は、本発明が実施される適当な計算環境の簡単な一般的な説明を提供する
。本発明は、以下において、他の環境でも可能であるが、パーソナルコンピュー
タ(PC)によって実行されるプログラムモジュールのようなコンピュータ実行
可能な命令の一般的なコンテキストとして記載する。プログラムモジュールは、
特定のタスクを実行し、特定の抽象データ型を実行するルーチン、プログラム、
オブジェクト、コンポーネント、データ構造などを包含する。本発明が、ハンド
ヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプ
ログラム可能なカスタマエレクトロニック、ネットワークPC、ミニコンピュー
タ、メインフレームコンピュータ、などを包含する他のコンピュータシステムで
実行されうることは、当業者には明らかであろう。本発明はまた、通信ネットワ
ークを介してリンクされたリモート処理デバイスによってタスクが実行される分
散計算環境でも実行される。分散計算環境では、プログラムモジュールは、ロー
カルとリモートの両方のメモリ記憶装置に配置される。
【0011】 図1は、本発明を実行するためのシステムの例を示す。それは従来のパーソナ
ルコンピュータ20のフォームにおいて、汎用のコンピュータデバイスを採用し
、該コンピュータは、演算ユニット21と、システムメモリ22と、システムメ
モリ及び他のシステムコンポーネントを演算ユニット21に接続するシステムバ
ス23とを含む。システムバス23は、メモリバス又はメモリコントローラ、周
辺バス、及び、ローカルバスを包含する種々のタイプのものであってよく、多数
のバス構造を使用するものであってよい。システムメモリ22は、ROM24と
RAM25を包含する。ROM24にストアされた基本入力/出力システム(B
IOS)は、パーソナルコンピュータ20のコンポーネントの間に情報を転送す
る基本ルーチンを包含する。BIOS24はまた、システムのスタートアップル
ーチンを包含する。パーソナルコンピュータは更に、ハードディスク(図示せず
)から読み出し、該ディスクに書き込むハードディスクドライブ27と、リムー
バブル磁気ディスク29から読み出し、該ディスク29に書き込む磁気ディスク
ドライブ28と、CD−ROM又は他の光学媒体のようなリムーバブル光ディス
ク31から読み出し、該ディスク31に書き込む光ディスクドライブ30とを包
含する。ハードディスクドライブ27、磁気ディスクドライブ28、及び、光デ
ィスクドライブ30は、ハードディスクドライブインターフェース32と磁気デ
ィスクドライブインターフェース33と、光ディスクドライブインターフェース
34のそれぞれによってシステムバス23に接続される。ドライブ及びそれらの
関係するコンピュータ読み取り可能媒体は、コンピュータ読み取り可能命令、デ
ータ構造、プログラムモジュール、及び、パーソナルコンピュータ20に関する
他のデータの不揮発的なストレージを提供する。ここで記載した例示的な環境は
、ハードディスク、リムーバブル磁気ディスク29及びリムーバブル光ディスク
31を採用するけれども、コンピュータによってアクセス可能なデータをストア
することができる他のタイプのコンピュータ読み取り可能媒体をまた具体的な操
作環境に使用することもできることは当業者にとって明らかであろう。かかる媒
体は、磁気カセット、フラッシュメモリカード、ディジタル汎用ディスク、ベル
ヌーイカートリッジ、RAM、ROM及び同様なものを包含する。
【0012】 プログラムモジュールは、ハードディスク、磁気ディスク29,光ディスク3
1、ROM24、及びRAM25にストアされうる。プログラムモジュールは、
オペレーティングシステム35と、1又はそれ以上のアプリケーションプログラ
ム36と、他のプログラムモジュール37と、プログラムデータ38とを包含し
うる。ユーザは、ユーザは、キーボード40及びポインティングデバイス42の
ような入力デバイスを介してコマンド及び情報をパーソナルコンピュータに入力
する。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲ
ームパッド、衛生アンテナ(サテライト・ディッシュ)、スキャナ等を包含する
。これら及び他の入力デバイスはしばしば、システムバス23に接続されたシリ
アルポートインターフェース46を介して演算ユニット21に接続されるが、そ
れらは、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(US
B)のような図1に示されていない他のインターフェースを介して接続されうる
。モニタ47又は他の表示デバイスまたは、ビデオアダプタ48のようなインタ
ーフェースを介してシステムバス23に接続されうる。モニタに加え、パーソナ
ルコンピュータは典型的には、スピーカ及びプリンタのような楽しゅう偏出力デ
バイス(図示せず)を含む。
【0013】 パーソナルコンピュータ20は、リモートコンピュータ49のような1又はそ
れ以上のリモートコンピュータに対して論理的な接続を使用してネットワークさ
れた環境で使用されうる。リモートコンピュータ49は、他のパーソナルコンピ
ュータ、サーバ、ルータ、ネットワークコンピュータ、ピア・デバイス、又は他
の一般的なネットワークノードであってよい。それは典型的には、パーソナルコ
ンピュータ20と接続する上述の多くの又は全てのコンポーネントを包含するが
、記憶装置50だけを図1に例示した。図1に示した論理的な接続は、ローカル
エリアネットワーク(LAN)51及びワイドエリアネットワーク(WAN)5
2を含む。かかるネットワーク環境は、オフィス、企業の広汎なネットワーク、
イントラネット及びインターネットでありふれている。
【0014】 LANネットワーク環境に配置されたとき、PC20は、ネットワークインタ
ーフェイス又はアダプタ53を介してローカルネットワーク51に接続する。イ
ンターネットのようなWANネットワーク環境で使用されるとき、PC20は典
型的にはネットワーク52にわたって通信を確立するためのモデム54又は他の
手段を包含する。モデム54は、PC20の内部又は外部にあってよく、シリア
ルポートインターフェース46を介してシステムバス23に接続する。ネットワ
ーク化された環境では、20内に存在するように示されたプログラムモジュール
又はその一部は、リモート記憶装置50にストアされうる。もちろん、ネットワ
ーク接続は例示的に示されたものであり、コンピュータ間の通信リンクを確立す
る他の手段で置換することができる。
【0015】 本発明では、アプリケーションプログラム36としてパーソナルコンピュータ
20で稼働する在来のウェブブラウザが、リモートコンピュータ49からアプレ
ットを自動的にダウンロードする。「アプレット」は短いプログラムであり、通
常は単一の関数で実行され、他のアプリケーション内で実行されるように設計さ
れている。アプレットは、それらが必要なときにリモートコンピュータからしば
しばダウンロードされ、それらがプライマリアプリケーションによって実行され
た後、ローカルコンピュータからときどき消去されうる。
【0016】 図2は、本発明における、アプレットを稼働するためのファシリティを含む殆
どが在来の実行環境を示す。用語「アプレット」は、従来技術において正確に定
義されていない。この用語は一般的には、単一の関数又は制限された範囲の関数
を実行するための小さなプログラムと呼ばれるが、用語は本来は、プログラムの
サイズ又はその関数の範囲を制限されない。アプレットは、特定の目的でWWW
ページのようなオンラインソースからしばしばダウンロードされ、実際には、ア
プレットはダウンロードされるとすぐに実行され、ついで実行後削除される。以
下に記載する好ましい実施形態では、用語「コントロール」又は「ActiveXコン トロール」は、アプレットと同意語と考えて良い。ある場合では、発明それ自身
が小さなプログラム、ダウンロードされたプログラム、又は、他のいかなるプロ
グラムの特定のフォームで使用することを制限しない。本発明は、「信頼される
」ことがないいかなるプログラムについても有用である、即ち、該プログラムと
は、システムリソースに十分にアクセスしたならば、システムを損傷させるかも
知れない、不確実な出所又は効果のプログラムである。
【0017】 Windows95のようなオペレーティングシステム35は、通常のアプリケーショ ンプログラム36をメモリ内にロードするためのローダモジュール351を採用
する。プログラム36は、ライン361によって表されるような演算ユニット2
1に命令を直接送信することによって、オペレーティングシステム35の制御下
で実行する。プログラム36は、アプリケーションプログラムインターフェース
(API)コード352−354のブロックを呼び出すことによって標準のAP
Iファンクションを実行する。各APIは、図1のディスプレィ47にダイアロ
グボックスを表示するように、特定のレベルのファンクションを実行するための
プロセッサ21によって直接実行可能な命令を包含する。OS35は、一般的に
、数千の独立したAPIを含んでおり、数ダースのダイナミックリンクライブラ
リ(DLL)として通常パッケージングされており、Microsoft WindowsNTオペ レーティングシステムでは、これらのDLLは、集合名詞的に「Win32」として知ら
れている。
【0018】 エミュレータプログラムによって、ある演算ユニット21用に書かれたアプリ
ケーションプログラムが、異なる命令セットを有する別の演算ユニットで実行さ
れる。ここで採用する特定のWx86VMエミュレータ39は、インテル「x86」プ
ロセッサ(80386,80486,ペンティアムなど)用に書かれたプログラ
ムをDigital Equipment Corp.のAlpha及びIBMのPowerPCのようなプロセッサで実
行するためにオリジナルに開発されたものである。それについては、出願中であ
るシリアル番号08/912,454及び08/904,057により詳細に記載してある。本目的に
関して、Wx86VMと呼ばれるいくぶん修正されたバージョンは、殆どの修正されて
いない命令をx88プロセッサ21に通すが、記載するようなその他をブロックし 、変換する。Wx86VMは、「サンクコード」(又は単に「サンク」)391−39
3と呼ばれる変換モジュールによってAPIを実行する際にWx86をまねるが、こ
こでのサンクコードの目的は、セキュリティを提供することであり、異なるプラ
ットフォーム用に書かれたAPIコードを実行するために、あるプラットフォー
ムからAPIコールをすることができるというそれらの本来の目的ではない。
【0019】 362のようなアプレットが実行されるとき、インターネットウェブブラウザ
のようなホストプログラム36は、エミュレータ39を呼び出す。エミュレータ
は、アプレットコードを所定のメモリ領域にロードするため、及びそれの使用の
ために別の所定のメモリ領域を割り当てるために、それ自身のローダモジュール
396を採用する。これらの領域は、そのアプレットに関する「サンドボックス
(sandbox)」と呼ばれる。アプレットの実行中、エミュレータ39は、アプレ ットのコードを、サンドボックスの外側に存在するコンパイルされたキャッシュ
にコンパイルする。コンパイルプロセス中、エミュレータはまた、メモリスニフ
(sniff)コード394をキャッシュ内に挿入する。
【0020】 アプレット362は、それが書かれた同じプロセッサプラットフォーム21で
実行するので、エミュレータ39は、ActiveXコントロールを実行するために( ライン363で表された)個々の命令を変換する必要がない。しかしながら、そ
れは、セキュリティを提供する目的のためにそれらをフィルタリングし、変換す
る。例えば、APIはオペレーティングシステム35のカーネルを呼び出すため
に、x86割り込み(INT)命令を使用する。それ故、コントロールにおける
INT命令は、APIサンク391−393及びスニフコード394をバイバスす ることができ、カーネルを直接呼び出すことができる。それ故、エミュレータ3
9は、この命令を無条件にブロックし、それは、ライン364に全く出力コード
を生成しない。ライン363でのサブルーチンコール(CALL)及びリターン(RE
T)、無条件/条件付のジャンプ(JMP/Jxx)のような他の問題のある命令は、サ
ブルーチンコールによってライン364に置換され、これらの命令のひとつがシ
ミュレーションされたとき、既にコンパイルされたコードのキャッシュは、コー
ル又はジャンプのキャッシュ内の宛先アドレスを判断するために検索される必要
がある。
【0021】 アプレット362からのAPIコールは、APIコード352−354に直接処 理されない。むしろ、サンクコード391−393はそれらをインターセプトし
、それらで何をするか決定する。391でのようないくつかのコールは、サンク
391によって対応するAPI352に直接通され、これらのコールは、システム に大混乱をもたらすことはなく、従って、セキュリティリスクが存在しない。3
92のような他のサンクは、その特定のコールの所定の特徴に依存して、それに
対応するAPI353にコールを通すかどうか決定し、それをAPIに出す前にコールを 修正することができる。393のようなあるサンクは、コールをそれらのAPI354
に完全に認めず、これらのコールは、システムのセキュリティを犯し、信頼でき
ないアプレット362によって許容されない。
【0022】 図3は、パーソナルコンピュータ20で実行されるアプレットがパーソナルコ
ンピュータのセキュリティを有しない全てのオペレーティングシステムサービス
にアクセスすることができる発明のある実施形態の大まかなステップ400を図
示する。
【0023】 ステップ410では、ウェブブラウザのようなホストアプリケーションがアプ
レットを割り当てられたメモリ範囲にロードする。割り当てられたメモリ範囲を
、このアプリケーションではサンドボックスと呼ぶ。サンドボックスは、アプレ
ットをストアするための最初のメモリセグメントと、アプレットを実行する間、
ストレジをアドレス可能にするためのランタイムメモリセグメントとの両方を含
み、これらは在来のいかなる手段でも割り当てられ得る。この実施形態では、OS
35は、ステップ411でエミュレータ39を呼び出す。ステップ412は、アプ
レット362のコードをストアするために、図1のRAM22におけるアドレス
の領域及び範囲を割り当て、ランタイムワーキングストレージを使用するための
アプレットに関する他の領域を割り当て、これらの2つの領域は、他のいかなる
アプレット、アプリケーションプログラム、又は他のシステムのファシリティに
影響を与えることなく、安全に実行することができるサンドボックスを一緒に構
成する。それらは、各セキュリティドメインのためのひとつのXW86サンドボック
スとなる、即ち同じセキュリティ設定を有する全てのコントロールが同じサンド
ボックスでプレイする。セキュリティ設定がウェブページのURL(uniform re
source locator)を含むので、各オープンウェブページは、少なくとも1つのサ
ンドボックスを有する。通常、同じウェブページの全てのコントローラは、同じ
サンドボックスにある。それらのカスタムインターフェースが安全でないけれど
も、サンドボックス内でインターアプレットを実行することは許容される。
【0024】 ステップ420は、実行のためにアプレットを準備する。
【0025】 ステップ421は、リンクを備えるアプレットの静的リンクをサンクモジュー
ルと置換する。即ち、エミュレータ39は、アプレット362のコード内でAPI3
52-354に対する全てのコールを見つけ、それらを対応するサンク391−393
に対するコールに変更する。静的リンクは、アプレットの実行中、一定を維持す
るリンクである。DLL即ちダイナミックリンクライブラリは、実行可能な関数の ライブラリ、又は、Windowsアプリケーションによって使用することができるデ ータである。典型的には、DLLは、1又はそれ以上の特定の関数を提供し、DLLは
、DLLに対する静的又は動的なリンクのいずれかを生成することによってアクセ スされる。DLLは、最後に拡張子.dllを備える記述でファイルされる。サンクDLL
は、サンドボックス内の安全なAPIである。サンクDLLは、安全であると考えられ
ない多くのAPIをブロックし、制限する。例えば、CreateFileが知られたロケー ションにだけ許容されうる。同様に、アプレットは、パスワードを記録するため
の他の処理を生成することができない。上述のように、いくつかのサンクは、対
応するAPIにコントロールを単に通す。例えば、「CreateWindow」、「CreateDia
log」、「CreateIcon」、「CreateCursor」と名付けられたWin32API及び同様な 関数は、他のプロセスに影響せず、信頼できないコードを許容しうる。一方、所
定の他のAPIは、信頼できないコードを完全に利用できなくさせなければならな い。例えば、「CreateProcess」を許容することにより、信頼できないアプレッ トをサンドボックスの外側で別のプログラムを実行することができ、「ExitWind
owsEx()」のようなオペレーションを完全にブロックすることができ、それによ り、信頼できないコードは現在のユーザをログオフすることができず、コンピュ
ータをオフにすることができない。393のようなサンクが、ライン395によ
って表示されたコントロールにエラーコードバックを戻すことによってAPIをブ ロックする。
【0026】 いくつかのAPIはある条件下、又は所定の修正で許容されうる。この場合、3 92のようなサンクは、それが対応するAPI353を呼び出すか又はブロックす るかのいずれかであった後、内部演算を実行し、修正されたパラメータをAPIに 通す。例えば、「SendMessage()」は通常メッセージをウィンドウに送信する。S
endMessageサンクにより、ActiveXコントロールがメッセージをそのコントロー ルによって生成されたウィンドウに送信することができる。しかしながら、サン
クは、ウェブブラウザによって、又は他のアプリケーションプログラムによるそ
れ自身の全てのメッセージをブロックする。このことにより、コントロールが、
他のプログラムに属するウィンドウによって実行されるべきであるキーストロー
クをまねるためにVM_CHARメッセージを送信することによってセキュリティを侵 害することを防止する。
【0027】 他の例は、メモリをどんな場所にも普通に割り当てる「GlobalAlloc」、「Hea
pCreate」のようなWin32APIを含む。これらのAPIに関するサンクは、対応するAP
Iの全体のコードを組み込み、サンドボックスメモリ内で完全に実行するように リコンパイルし、サンドボックスの境界内のみでメモリを割り当てることができ
る。
【0028】 次いで、ステップ422は、アプレットのコードを図2のエミュレータ39に
よって実行されうるオブジェクトコードにコンパイルする。コードが要求された
ものになったとき、コンパイルは直ちに又はパート毎に全て進行し、コンパイル
されたコードは、サンドボックスの外側に配置された図4のコンパイルされたキ
ャッシュ357に配置される。これらの方法におけるコンパイルは、在来のもの
であり、発明の本質には関係しない。
【0029】 ステップ423は、認められないメモリリファレンスに対する禁止を強化する
ためにアプレット自身のコードにチェックコードを挿入する。「スニフ(sniff )コード」と呼ばれるこのチェックコードは、アプレットのコードによって全て
のメモリの読み書きを調べ、その結果からそれらを許可し、又は許可しない。ア
プレットがサンドボックスの外側のメモリにアクセスするのを防止することによ
り、アプレットのセキュリティは向上する。予め割り当てられた範囲からだけの
アプレットに対して全てのメモリを提供することにより、スニフコードオーバー
ヘッドを低減させ、その結果、メモリ範囲の効率的なチェックを生じる。更なる
最適化技術が、基本のブロックレベルでコードをコンパイルすることによって追
加される。例えば、種々のメモリリファレンスが同じレジスタを使用するアプレ
ットによってなされるならば、コンパイラは、各アクセスに関するスニフコード
に対する別々のコールを生成するのではなく、一回だけそのレジスタによってア
ドレス可能な全体の範囲をチェックすることができる。詳細な例を図4と一緒に
示す。基本的には、スニフコードによって、割り当てられたサンドボックス内と
、システムを損傷しない所定の他のメモリ内とだけで、アプレットがRAMアド
レスを参照することができる。(エミュレータ39がサンドボックスの外側でメ
モリを参照することができないが、それはサンドボックスにメモリ領域を割り当
てるための能力を有する。デバイス独立ビットマップイメージのような目的に関
して、余分のスニフコードオーバーヘッドは労力より小さく、さもなければ最初
のサンドボックス領域内にイメージをコピーするように要求される。) ステップ430は、アプレットを実行する。ステップ431は、命令シーケン
スに続く。
【0030】 現在の命令がAPIに対するコールであるならば、ステップ421によって配置 されたリンクは、コールがステップ432で完全にブロックされ、ステップ43
3で実行され、ステップ434で更に処理され、次いで、ブロックされ又は許可
されうるかどうか判断する。
【0031】 現在の命令が、LOAD又はSTOREのようなメモリリファレンス命令であるならば 、ステップ435によって、命令がそのサンドボックス内のアドレスを参照する
ならば、ステップ436がその命令を実行することができる。もしそうでなけれ
ば、ステップ437は、リファレンスがさもなければ許容されるかどうか判断す
る。もしそうならば、ステップ435はそれを実行し、さもなければ、ステップ
438はアクセスをブロックし、エラーを返す。スニフコードはこれらのステッ
プを実行する。他のX86命令は、ステップ436によって直接実行される。各命 令の後、コントロールはステップ431に戻る。プロセス400は、ホストアプ
リケーションがそれを終了するまで、続く。
【0032】 いくつかのシステムでは、433のようなブロックによってAPIの実行が、他 のセキュリティ暴露を現す。APIの引き数がサンドボックスにおけるデータに対 するポインタであるならば、サンクがAPIに対して示されたメモリのコンテンツ 及び、APIに対する実際のコールを検査する時間の間は、短い時間である。マル チスレッドアプレットでは、アプレット内の他の実行スレッドが、APIに対して 示されたメモリのコンテンツを変更し、それによってAPIに対して無効にされた データを転送することができる。かかるアタックを防止するために、ブロック4
33−1は、APIの引数の「ディープコピー(deep copy)」を実行し、ブロック
433−2は、APIからの戻り値をディープコピーする。更に特別に、ステップ 433がAPIを実行するとき、ステップ433−1は、APIが実際にコールされる
前に、サンドボックス内のそれらの位置から、サンドボックスの外の別の位置に
、APIに通された全ての引数を最初にコピーする。アプレット自身がこのコピー にアクセスすることができないので、APIは、既に保存されているデータだけを 有効にする。ステップ433は、次いで、サンドボックスの外に、戻り値を置き
、APIコンポーネントを実行した後、ステップ433−2は、アプレットの使用 のためにサンドボックスの内側に戻り値をコピーする。所望ならば、ディープコ
ピーが、選択的に使用されうる。
【0033】 図4は、本発明に関するそれらの領域のみを示すシステムRAM25のメモリ
マップである。予め割り当てられた範囲251は、サンドボックスを形成する。
それは、アプレット362と、アプレットの実行中に、アドレス可能なワーキン
グストレージに関するランタイムメモリセグメント252と、変換コードサンク
391−393(ここではサンク391としてだけ示す)をストアするためのセ
グメントと、をストアするための最初のメモリセグメントを包含する。サンドボ
ックス251の外側のメモリ22は、ここでは352によって表されるAPI
DLLと、カーネル32355とを包含する。他のワーキングメモリ領域は、356 として表される。コンパイルされたキャッシュ357はまた、サンドボックス2
15の外側に配置される。セキュリティポリシーが実際に実行されることがここ
であるので、サンドボックス215の外側のWHKRNL32325の位置は、特に重要
であり、それがサンドボックスの内側にあるならば、ルージュアプレットが、そ
れを修正することによってセキュリティを妥協することができうる。
【0034】 以下の例は本発明の作動の例示を示す。前に述べたように、この実施例は、x
86Win32アプレットを実行するための前述のWx86VMエミュレータを利用し、Win
dows95又はWindowsNTオペレーティングシステム下でx86プラットフォームで 修正されずにコントロールする。
【0035】 マイクロソフトインターネットエクスプローラのようなウェブブラウザは、イ
ンターネットからハードドライブのc:\temp\foo.ocxに、foo.ocxと呼ばれるActi
veXコントロール(アプレット)をダウンロードする。拡張子.ocxはActiveXコン
トロールを示す。
【0036】 次いで、インターネットエクスプローラは、システムにおいてWx86VMの存在を
探す。Wx86VMコンポーネントが利用可能であるならば、インターネットエクスプ
ローラは、それを呼び出し、コントロールに関する全てのセキュリティに関する
情報を提供し、ロードされるべきコントロールを要求する。Wx86VMコンポーネン
トは、インターネットエクスプローラがそれを提供し、Wx86VMにそれを送り出す
か、オブジェクトリンカをOLE32に行かせるかどうか判断するセキュリティ情報 を調べ、それを取り扱う。
【0037】 コントロールがWx86VMエミュレータにおいて送り出されるべきならば、Wx86VM
はメモリの割り当てられた領域、又は、ActiveXコントロールに関するサンドボ ックスを生成する。Wx86VMは、ActiveXコントロール(図4では362と示す)f
oo.ocxをサンドボックス内にロードする。
【0038】 Wx86VMは、391のようなAPIサンクDLL(安全API)をサンドボックス内にロ ードする。Wx86VMは、前述の出願(ドケット777.016US1)において十分に説明し
たようなオペレーティングシステムローダ内でDLLの名前を修正することができ る。このことにより、Wx86VMは、規定を呼び出す際に違いを取り扱うために、x8
6イメージと本来のAPIとの間にサンクコードを挿入することができる。再配置す
るための名前のリストは、レジストリにストアされる。例えば、カーネル32(
図4では355)は、(図4ではサンク391と示す)wikrnl32に再配置され、
user32.dllはwiuser32.dllに再配置される。APIサンクは次の2つのDLLから構成
される:1つは、Wx86VM内で稼働する「wi」という接頭辞が付いたDLLであり、 今後は信頼性がなく、他のひとつはWx86VMの外側で稼働し、「wh」という接頭辞
が付いたDLLであり、安全ポリシーを実行するために信頼される。
【0039】 「wi」DLLは、それらが置換するための本来のDLLとして同じエクスポートを有
する。これらのエクスポートは、サンドボックスの外でスイッチングをするため
にWx86VMに対して応答可能であり、次いで、安全モードにおいて適当なサンクを
呼び出し、これは更に、そのAPIに関してセキュリティポリシーを実行する。特 定のAPIに関するセキュリティがないならば、サンクは単に本来のAPIを呼び出す
。「BOP」と呼ばれるこのコールは、典型的には、モードスイッチが起こるのを 必要とするWx86.dllを合図する無効なx86 opcodeである。BOPコマンドは、フォ ーム「BOP(DLL#,API#)」を有する。Wx86VMが、DLLがサンドボックスのレジスタ セット及びスタックにアクセスする、(図4ではwhkrnl32352のような)「wh
」という接頭辞であるホストサイドサンクDLLにBOPをディスパッチするとき、DL
Lは、パラメータをサンドボックスのスタックから本来のスタックにコピーし、A
PIの引数を検査し、コールを作り、サンドボックスのEAXレジスタに戻り値を戻 すように移動させることができる。
【0040】 例えば、x86アプレット又はコントロールが、kernel32!CreateFileに対す る静的なリンクを有するならば、Wx86VMはそのリンクを、wikrnl32!CreateFile と解決する。アプレットがCreateFileを呼び出すとき、wikrnl32!CreateFileは 、サンドボックスからネイティブにスイッチするBOP命令を実行し、Wx86IDispat
chBop()をWx86VMI.dllに呼び出す。Wx86DispatchBop()は、コールをwhkrnl32!wh
CreateFile()にディスパッチする。その関数は、ネイティブkernel32!CreateFil
e()を呼び出し、戻り値をシミュレーションされたEAXレジスタにコピーし、戻る
【0041】 Wx86VMはまた、エミュレータ39コードWx86cpu.dllをロードする。アプレッ トの実行中、プロセッサがBOP命令に出会うとき、エミュレーションは停止する 。
【0042】 アプレットの実行は、必要とされるコードをコンパイルし、コードをコンパイ
ルされたキャッシュに置くことにより始まる。コンパイルされたコードは、メモ
リ読み書きオペレーションが安全なオペレーションであることを確認するために
それにおいてスニフチェックを有する。アクセスされるメモリが、所定のサンド
ボックス領域の外側であるならば、メモリにアクセスする試みのオペレーション
は失敗する。例えば、アプレットfoo.ocxが命令MOV EAX,[ESI+4]を包含するなら
ば、コンパイラは、命令が安全であることを確認するためのMOV命令の前にスニ フコードを挿入する。以下の命令: MOV EAX,[ESI+4] は、スニフコードが挿入された後に、 LEA ECX,[ESI+4] CALL SNIFFREAD4.ECX MOV EAX,[ECX] となる。
【0043】 スニフコードがオーバーヘッドに加わるので、基本的なブロックレベルでコー
ドをコンパイルするとき、追加の最適化技術は適用されうる。例えば、アプレッ
トが同じレジスタを使用する種々のメモリリファレンスを作るならば、コンパイ
ラは、一回だけ全体の範囲をチェックし、個々のスニフコールを生成しない。ア
プレットfoo.ocxが以下の命令を包含するならば、 MOV EAX,[ESI+4] MOV EDX,[ESI+8] スニフコードは、以下のように挿入される: LEA EAX,[ESI+4] CALL SNIFFREAD8.ECX MOV EAX,[ECX] MOV EDX,[ESI+4] むしろ、より小さな効率的な仕方でスニフコードを挿入する: LEA EAX,[ESI+4] CALL SNIFFREAD4.ECX MOV EAX,[ECX] LEA EAX,[ESI+4] CALL SNIFFREAD4.ECX MOV EDX,[ECX] 上の記述は例示的なものであり、制限的なものではない。上の記述をみれば、
当業者にとって多くの他の実施形態が明らかである。それ故、本発明の範囲は、
特許請求の範囲と均等な範囲とあわせて、特許請求の範囲を参照して決定される
べきである。
【図面の簡単な説明】
【図1】 本発明が実施される、例示的な計算環境のシステム図である。
【図2】 本発明を組み込む実行環境のブロック図である。
【図3】 本発明の主なステップを記述するフローチャートである。
【図4】 メモリ内のサンドボックス領域の簡単化したブロック図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バラッティー スディープ アメリカ合衆国 ワシントン州 98008 ベルヴィュー ワンハンドレッドアンドシ ックスティフィフス プレイス ノースイ ースト 3272 Fターム(参考) 5B017 AA07 BA06 BB06 CA01 5B076 FD00

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 メモリ及びインターフェースモジュールを有するパーソナルコンピュータプラ
    ットフォームで直接実行するために書かれた信頼されないプログラムを実行する
    ための方法であって、 信頼されないプログラムに関してメモリの所定の境界領域を割り当て、 信頼されないプログラムを境界メモリ領域内にロードし、 境界領域の外側のメモリに対してリファレンスをブロックするための信頼され
    たプログラム内にチェックコードを配置し、 インターフェースモジュールの所定のひとつの実行をパスし、ブロックするた
    めの変換コードモジュールに対するリンクを備えるインターフェースモジュール
    に対するコードにリンクを置換し、 信頼されないプログラムを実行する、 ステップからなる方法。
  2. 【請求項2】 境界メモリ領域が更に、信頼されなプログラムに関するワーキングストレージ
    の領域を包含することを特徴とする、請求項1に記載の方法。
  3. 【請求項3】 チェックコードが、全体としてメモリアドレスのブロックで作動することを特
    徴とする、請求項2に記載の方法。
  4. 【請求項4】 変換コードモジュールの第1のセットが、インターフェースモジュールの対応
    するセットに直接アクセスすることを特徴とする、請求項1に記載の方法。
  5. 【請求項5】 変換コードモジュールの第2のセットが、インターフェースモジュールの第2
    の対応するセットにアクセスすることを特徴とする、請求項4に記載の方法。
  6. 【請求項6】 信頼されないプログラムをストアするためのメモリの所定の境界領域を割り当
    て、 信頼されないプログラムを境界メモリ領域内にロードし、 境界領域の外側のメモリに対してリファレンスをブロックするための信頼され
    たプログラム内にチェックコードを配置し、 インターフェースモジュールの所定のひとつの実行をパスし、ブロックするた
    めの変換コードモジュールに対するリンクを備えるインターフェースモジュール
    に対するコードにリンクを置換する、 コンピュータ実行可能命令コードを包含するコンピュータ読み取り可能記憶媒
    体。
  7. 【請求項7】 ネイティブプロセッサと、 メモリと、 該ネイティブプロセッサと、 該ネイティブプロセッサによって直接実行可能であるネイティブコード で書かれた信頼されないプログラムを実行するためのエミュレータと、 オペレーティングシステムのインターフェースモジュールを使用すること
    によって実行可能であるオペレーティングシステムと、 を有するコンピュータシステムであって、 エミュレータが、 信頼されないプログラムをメモリの境界領域内にロードするためのロードモジ
    ュールと、 メモリの境界領域の外で、信頼されないプログラムによるアクセスを制限する
    ための信頼されないプログラム内に挿入可能なチェックコードと、 オペレーティングシステムのインターフェースモジュールの対応するセットに
    アクセスするための信頼されないプログラムにリンク可能な変換コードモジュー
    ルのセットと、 を備える、コンピュータシステム。
  8. 【請求項8】 メモリ及びオペレーティングシステムを備えるネイティブコンピュータプラッ
    トフォームで直接実行するように書かれた信頼されないプログラムを実行するた
    めの方法であって、 信頼されないプログラムに関してメモリの所定の境界領域を割り当て、 信頼されないプログラムを境界メモリ領域内にロードし、 境界領域の外側のメモリに対するリファレンスをブロックするために、信頼さ
    れないプログラム内にチェックコードを配置する、 ステップを有する方法。
  9. 【請求項9】 信頼されないプログラムに関するランタイムワーキングストレージとして境界
    メモリ領域の一部を割り当てることを更に有する、請求項8に記載の方法。
  10. 【請求項10】 複数の更なるコードモジュールを境界メモリ領域内にロードすることを更に有
    し、該コードモジュールが信頼されないプログラムにアクセス可能である、 ことを特徴とする請求項8に記載の方法。
  11. 【請求項11】 メモリ及びオペレーティングシステムを備えるネイティブコンピュータプラッ
    トフォームで直接実行するように書かれた信頼されないプログラムを実行するた
    めの方法であって、該オペレーティングシステムが、信頼されないプログラムに
    よってリンク可能なインターフェースモジュールのセットを包含し、 インターフェースモジュールの所定のサブセットに対応する変換コードモジュ
    ールのセットを構築し、該変換コードモジュールが、サブセットにおけるインタ
    ーフェースモジュールのそれぞれにコントロールをパスすることができ、 変換コードモジュールの対応するものに対するリンクを備えるインターフェー
    スモジュールに信頼されないプログラムコードのリンクを置換し、信頼されない
    プログラムによってインターフェースモジュールのあるひとつだけの実行をする
    ことができる、 ステップを有する方法。
  12. 【請求項12】 信頼されないコードにアクセス可能なメモリの境界領域内に変換コードモジュ
    ールのセットをストアする、 ことを更に有する請求項11に記載の方法。
  13. 【請求項13】 アプレットに関するセキュリティを提供する方法であって、 アプレットを予め割り当てられたメモリ範囲内にロードし、予め割り当てられ
    たメモリ範囲が、アプレットをストアするための最初のメモリセグメントと、ア
    プレットによってメモリアクセスが予め割り当てられたメモリ範囲に制限される
    ようにアプレットの実行中にアクセス可能なストレージに関するランタイムメモ
    リセグメントとの両方を包含し、 危険なAPIに対する各静的なコントロールリンクをサンクDLLと置換し、
    アプレットによって作られた危険なAPIコールが制限される、 ステップを有する方法。
  14. 【請求項14】 アプレットに関するセキュリティを提供する方法であって、 アプレットを予め割り当てられたメモリ範囲にロードし、 アプレットにおける各静的コントロールリンクをサンクDLLと置換し、 アプレットを実行し、 APIコールがアプレットによって作られるとき、コントロールをDLLに転
    送し、 APIコールがオペレーティングシステムで実行することができ、それによっ
    てアプレットに関するセキュリティが提供され得るかどうか判断するために、定
    のセキュリティルールを適用する、 ステップを有する方法。
  15. 【請求項15】 ロードステップの予め割り当てられたメモリ範囲が、コントロールランタイム
    に関するメモリを包含する、請求項14に記載のアプレットに関するセキュリテ
    ィを提供する方法。
  16. 【請求項16】 実行ステップが、予め割り当てられたメモリ範囲に対するコントロールによる
    メモリアクセスを制限するようにスニフコードを利用する、請求項14に記載の
    アプレットに関するセキュリティを提供する方法。
  17. 【請求項17】 スニフコードが、パフォーマンスを向上するようにメモリブロックで稼働する
    、請求項16に記載のアプレットに関するセキュリティを提供する方法。
  18. 【請求項18】 安全なAPIを利用する予め割り当てられたメモリ範囲の外側で、コールを移
    送するステップを更に包含する、請求項14に記載のアプレットに関するセキュ
    リティを提供する方法。
  19. 【請求項19】 ウェブベースのアプリケーションを実行するコンピュータシステムに関するセ
    キュリティを提供する方法であって、 ウェブベースのアプリケーションを介して実行可能なコードをダウンロードし
    、 メモリの所定の領域内に実行可能なコードをロードするためにWx86VMを 使用し、 コンピュータシステムのセキュリティが破壊されないように、メモリの 所定の領域に対する実行可能なコードの直接のアクセスを晴天するため にWx86VMを使用して、 実行可能なコードのソースが信頼されないソースであるかどうか、 生成された実行可能なコードからソースを判断する、 ステップを有する方法。
  20. 【請求項20】 アプレットを予め割り当てられたメモリ領域内にロードし、該予め割り当てら
    れた領域が、最初のメモリセグメント割り当てと、アプレットによるメモリアク
    セスが予め割り当てられたメモリ領域に制限されるようなランタイムメモリセグ
    メント割り当てと、の両方を包含し、 アプレットにおける各静的コントロールリンクをサンクDLLで置換し、危険
    なAPIコールが制限される、 ことを有するステップを実行するためにWx86VMを利用するコンピュータ実行可能
    な命令を有するコンピュータ読み取り可能媒体。
JP2000508048A 1997-08-28 1998-08-25 信頼されないプログラムを実行するための方法 Expired - Fee Related JP3572016B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/919,844 US6275938B1 (en) 1997-08-28 1997-08-28 Security enhancement for untrusted executable code
US08/919,844 1997-08-28
PCT/US1998/017553 WO1999010795A1 (en) 1997-08-28 1998-08-25 Security enhancement for untrusted executable code

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003394633A Division JP4528517B2 (ja) 1997-08-28 2003-11-25 信頼されないプログラムを実行するための方法

Publications (2)

Publication Number Publication Date
JP2001514411A true JP2001514411A (ja) 2001-09-11
JP3572016B2 JP3572016B2 (ja) 2004-09-29

Family

ID=25442736

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000508048A Expired - Fee Related JP3572016B2 (ja) 1997-08-28 1998-08-25 信頼されないプログラムを実行するための方法
JP2003394633A Expired - Fee Related JP4528517B2 (ja) 1997-08-28 2003-11-25 信頼されないプログラムを実行するための方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2003394633A Expired - Fee Related JP4528517B2 (ja) 1997-08-28 2003-11-25 信頼されないプログラムを実行するための方法

Country Status (5)

Country Link
US (1) US6275938B1 (ja)
EP (1) EP1021753B1 (ja)
JP (2) JP3572016B2 (ja)
DE (1) DE69802834T2 (ja)
WO (1) WO1999010795A1 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302516A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 端末装置およびプログラム
JP2006092495A (ja) * 2004-09-27 2006-04-06 Toshiba Kyaria Kk マイクロコンピュータのデータ記憶方法
JP2007512560A (ja) * 2003-11-25 2007-05-17 サジエム・コミユニカシオン ビデオ投射方法および装置
JP2008027306A (ja) * 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
US7421713B2 (en) 2002-06-12 2008-09-02 Matsushita Electric Industrial Co., Ltd. Safe service extension platform
JP2009505275A (ja) * 2005-08-15 2009-02-05 ソニー エリクソン モバイル コミュニケーションズ, エービー モジュール内の実行アプリケーション・プログラムの安全性を検査するシステム、方法、及びコンピュータプログラム
JP2009506439A (ja) * 2005-08-25 2009-02-12 フォーティファイ ソフトウェア, インコーポレイテッド セキュリティを提供するためのプログラムの解析および補完のための装置および方法
WO2010016332A1 (ja) * 2008-08-07 2010-02-11 ソニー株式会社 通信装置、通信方法、及びプログラム
JP2010511227A (ja) * 2006-11-28 2010-04-08 マイクロソフト コーポレーション 信頼性の低いアドレス空間への実行コードのコンパイル
JP5061908B2 (ja) * 2005-12-27 2012-10-31 日本電気株式会社 プログラム実行制御方法および装置ならびに実行制御プログラム
US8347392B2 (en) 2005-08-25 2013-01-01 Hewlett-Packard Development Company, L.P. Apparatus and method for analyzing and supplementing a program to provide security
US8838950B2 (en) 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
JP2017016669A (ja) * 2011-07-20 2017-01-19 マイクロソフト テクノロジー ライセンシング,エルエルシー 信頼レベルのアクティブ化
CN107408053A (zh) * 2015-04-10 2017-11-28 谷歌公司 到本原客户端的二进制翻译

Families Citing this family (224)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6536520B1 (en) 2000-04-17 2003-03-25 Weatherford/Lamb, Inc. Top drive casing system
IL121815A (en) * 1997-09-22 2000-09-28 Security 7 Software Ltd Method and system for the identification and the suppression of executable objects
US7047369B1 (en) * 1997-09-25 2006-05-16 Aladdin Knowledge Systems Ltd. Software application environment
US6584495B1 (en) * 1998-01-30 2003-06-24 Microsoft Corporation Unshared scratch space
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6691230B1 (en) * 1998-10-15 2004-02-10 International Business Machines Corporation Method and system for extending Java applets sand box with public client storage
JP2000122814A (ja) * 1998-10-15 2000-04-28 Hitachi Ltd 拡張型ネットワーク接続二次記憶方法及び装置
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
IL143592A0 (en) 1998-12-07 2002-04-21 Network Ice Corp A method and apparatus for remote installation of network drivers and software
WO2000034867A1 (en) 1998-12-09 2000-06-15 Network Ice Corporation A method and apparatus for providing network and computer system security
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US7451484B1 (en) * 1999-05-27 2008-11-11 International Business Machines Corporation Method for enabling a program written in untrusted code to interact with a security subsystem of a hosting operating system
US6779117B1 (en) * 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
US7346929B1 (en) 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
US7089591B1 (en) 1999-07-30 2006-08-08 Symantec Corporation Generic detection and elimination of marco viruses
US6968539B1 (en) * 1999-09-30 2005-11-22 International Business Machines Corporation Methods and apparatus for a web application processing system
US7281268B2 (en) * 1999-11-14 2007-10-09 Mcafee, Inc. System, method and computer program product for detection of unwanted processes
US8006243B2 (en) 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US7765581B1 (en) 1999-12-10 2010-07-27 Oracle America, Inc. System and method for enabling scalable security in a virtual private network
US7336790B1 (en) 1999-12-10 2008-02-26 Sun Microsystems Inc. Decoupling access control from key management in a network
GB2359908B (en) * 2000-03-04 2004-09-15 Motorola Inc Communication system architecture and method of controlling data download to subscriber equipment
US6836888B1 (en) * 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
EP1277326A2 (en) 2000-04-28 2003-01-22 Internet Security Systems, Inc. Method and system for managing computer security information
AU2001257400A1 (en) 2000-04-28 2001-11-12 Internet Security Systems, Inc. System and method for managing security events on a network
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US7184982B1 (en) 2000-06-23 2007-02-27 Ebs Group Limited Architecture for anonymous trading system
US7024386B1 (en) 2000-06-23 2006-04-04 Ebs Group Limited Credit handling in an anonymous trading system
US7827085B1 (en) 2000-06-23 2010-11-02 Ebs Group Limited Conversational dealing in an anonymous trading system
US6983259B1 (en) 2000-06-23 2006-01-03 Ebs Group Limited Anonymous trading system
US7366690B1 (en) 2000-06-23 2008-04-29 Ebs Group Limited Architecture for anonymous trading system
GB2364586B (en) 2000-06-23 2004-06-16 Ebs Nominees Ltd Deal matching in an anonymous trading system
US7333952B1 (en) 2000-06-23 2008-02-19 Ebs Group Limited Compound order handling in an anonymous trading system
US6907531B1 (en) 2000-06-30 2005-06-14 Internet Security Systems, Inc. Method and system for identifying, fixing, and updating security vulnerabilities
US7093239B1 (en) 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US7178166B1 (en) * 2000-09-19 2007-02-13 Internet Security Systems, Inc. Vulnerability assessment and authentication of a computer by a local scanner
US9027121B2 (en) 2000-10-10 2015-05-05 International Business Machines Corporation Method and system for creating a record for one or more computer security incidents
US7086090B1 (en) * 2000-10-20 2006-08-01 International Business Machines Corporation Method and system for protecting pervasive devices and servers from exchanging viruses
US20020066022A1 (en) * 2000-11-29 2002-05-30 Brad Calder System and method for securing an application for execution on a computer
US7779117B2 (en) 2002-05-31 2010-08-17 Aol Inc. Monitoring digital images
US7260845B2 (en) * 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
AU2002244083A1 (en) 2001-01-31 2002-08-12 Timothy David Dodd Method and system for calculating risk in association with a security audit of a computer network
WO2002093334A2 (en) * 2001-04-06 2002-11-21 Symantec Corporation Temporal access control for computer virus outbreaks
US20020154635A1 (en) * 2001-04-23 2002-10-24 Sun Microsystems, Inc. System and method for extending private networks onto public infrastructure using supernets
AU2002344308A1 (en) * 2001-05-31 2002-12-09 Internet Security Systems, Inc. Method and system for implementing security devices in a network
US20030167350A1 (en) * 2001-06-07 2003-09-04 Curl Corporation Safe I/O through use of opaque I/O objects
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US6920550B2 (en) * 2001-11-15 2005-07-19 Hewlett-Packard Development Company, L.P. System and method for decoding and executing program binaries
US20030101439A1 (en) * 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US7051340B2 (en) * 2001-11-29 2006-05-23 Hewlett-Packard Development Company, L.P. System and method for isolating applications from each other
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
US7673137B2 (en) 2002-01-04 2010-03-02 International Business Machines Corporation System and method for the managed security control of processes on a computer system
US7607171B1 (en) 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US9652613B1 (en) 2002-01-17 2017-05-16 Trustwave Holdings, Inc. Virus detection by executing electronic message code in a virtual machine
US7340777B1 (en) * 2003-03-31 2008-03-04 Symantec Corporation In memory heuristic system and method for detecting viruses
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
WO2003084176A1 (en) * 2002-03-28 2003-10-09 Oleksiy Yuryevich Shevchenko Method and device for computer memory protection against unauthorized access
US20030192035A1 (en) * 2002-04-09 2003-10-09 Duesterwald Ald Evelyn Systems and methods for implementing efficient execution transfers between successive translations of stack-based program code in a virtual machine environment
US7155742B1 (en) 2002-05-16 2006-12-26 Symantec Corporation Countering infections to communications modules
US7367056B1 (en) 2002-06-04 2008-04-29 Symantec Corporation Countering malicious code infections to computer files that have been infected more than once
AU2003238908A1 (en) 2002-06-06 2003-12-22 Green Border Technologies Method and system for implementing a secure application execution environment using derived user accounts for internet content
US7418729B2 (en) * 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
US7380277B2 (en) 2002-07-22 2008-05-27 Symantec Corporation Preventing e-mail propagation of malicious computer code
US7478431B1 (en) 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
US20040025165A1 (en) * 2002-08-05 2004-02-05 Giuseppe Desoli Systems and methods for extending operating system functionality for an application
US7730965B2 (en) 2002-12-13 2010-06-08 Weatherford/Lamb, Inc. Retractable joint and cementing shoe for use in completing a wellbore
US20040133441A1 (en) * 2002-09-04 2004-07-08 Jeffrey Brady Method and program for transferring information from an application
US7469419B2 (en) * 2002-10-07 2008-12-23 Symantec Corporation Detection of malicious computer code
US7159149B2 (en) * 2002-10-24 2007-01-02 Symantec Corporation Heuristic detection and termination of fast spreading network worm attacks
US7249187B2 (en) * 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US7938201B2 (en) 2002-12-13 2011-05-10 Weatherford/Lamb, Inc. Deep water drilling with casing
US7631353B2 (en) * 2002-12-17 2009-12-08 Symantec Corporation Blocking replication of e-mail worms
FR2849314B1 (fr) * 2002-12-18 2005-03-04 France Telecom Procede de communication entre deux unites, et composant logiciel de confiance pour sa mise en oeuvre
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7296293B2 (en) * 2002-12-31 2007-11-13 Symantec Corporation Using a benevolent worm to assess and correct computer security vulnerabilities
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
USRE42877E1 (en) 2003-02-07 2011-11-01 Weatherford/Lamb, Inc. Methods and apparatus for wellbore construction and completion
US7203959B2 (en) 2003-03-14 2007-04-10 Symantec Corporation Stream scanning through network proxy servers
KR100509650B1 (ko) * 2003-03-14 2005-08-23 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
US7650944B1 (en) 2003-07-11 2010-01-26 Weatherford/Lamb, Inc. Vessel for well intervention
US8271774B1 (en) 2003-08-11 2012-09-18 Symantec Corporation Circumstantial blocking of incoming network traffic containing code
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7464408B1 (en) * 2003-08-29 2008-12-09 Solidcore Systems, Inc. Damage containment by translation
FR2859548B1 (fr) * 2003-09-09 2005-11-25 France Telecom Procede de surveillance de l'execution de programmes sur un ordinateur
US7421680B2 (en) * 2003-09-22 2008-09-02 Microsoft Corporation Persisted specifications of method pre-and post-conditions for static checking
US7444678B2 (en) * 2003-10-28 2008-10-28 Aol Llc Securing resources from untrusted scripts behind firewalls
US7657938B2 (en) 2003-10-28 2010-02-02 International Business Machines Corporation Method and system for protecting computer networks by altering unwanted network data traffic
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US7783735B1 (en) 2004-03-22 2010-08-24 Mcafee, Inc. Containment of network communication
US7337327B1 (en) 2004-03-30 2008-02-26 Symantec Corporation Using mobility tokens to observe malicious mobile code
US20050246773A1 (en) * 2004-04-29 2005-11-03 Microsoft Corporation System and methods for processing partial trust applications
US8108902B2 (en) * 2004-04-30 2012-01-31 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US7370233B1 (en) 2004-05-21 2008-05-06 Symantec Corporation Verification of desired end-state using a virtual machine environment
US8707251B2 (en) * 2004-06-07 2014-04-22 International Business Machines Corporation Buffered viewing of electronic documents
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US7484247B2 (en) 2004-08-07 2009-01-27 Allen F Rozman System and method for protecting a computer system from malicious software
US7441042B1 (en) 2004-08-25 2008-10-21 Symanetc Corporation System and method for correlating network traffic and corresponding file input/output traffic
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7690034B1 (en) 2004-09-10 2010-03-30 Symantec Corporation Using behavior blocking mobility tokens to facilitate distributed worm detection
US8819639B2 (en) * 2004-09-15 2014-08-26 Lakeside Software, Inc. System for selectively blocking execution of applications on a computer system
JP4845467B2 (ja) 2004-11-08 2011-12-28 株式会社エヌ・ティ・ティ・ドコモ デバイス管理装置、デバイス及びデバイス管理方法
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
WO2006101549A2 (en) 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US20060123398A1 (en) * 2004-12-08 2006-06-08 Mcguire James B Apparatus and method for optimization of virtual machine operation
US20060156400A1 (en) * 2005-01-06 2006-07-13 Gbs Laboratories Llc System and method for preventing unauthorized access to computer devices
US7456837B2 (en) * 2005-01-10 2008-11-25 International Business Machines Corporation Optimized specular highlight generation
US8104086B1 (en) 2005-03-03 2012-01-24 Symantec Corporation Heuristically detecting spyware/adware registry activity
US7603552B1 (en) * 2005-05-04 2009-10-13 Mcafee, Inc. Piracy prevention using unique module translation
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US8484232B2 (en) * 2005-11-22 2013-07-09 International Business Machines Corporation Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
US8166295B2 (en) * 2005-11-30 2012-04-24 Microsoft Corporation Message security framework
US8572729B1 (en) * 2006-01-30 2013-10-29 Mcafee, Inc. System, method and computer program product for interception of user mode code execution and redirection to kernel mode
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7926105B2 (en) * 2006-02-28 2011-04-12 Microsoft Corporation Using security-related attributes
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US7870387B1 (en) 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US7814556B2 (en) * 2006-05-09 2010-10-12 Bea Systems, Inc. System and method for protecting APIs from untrusted or less trusted applications
US7979891B2 (en) * 2006-05-09 2011-07-12 Oracle International Corporation Method and system for securing execution of untrusted applications
GB2451784B (en) 2006-05-12 2011-06-01 Weatherford Lamb Stage cementing methods used in casing while drilling
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8276689B2 (en) 2006-05-22 2012-10-02 Weatherford/Lamb, Inc. Methods and apparatus for drilling with casing
EP2033145B1 (en) * 2006-06-15 2011-04-06 Kabushiki Kaisha Toshiba Portable electronic device and control method thereof
US20080022378A1 (en) * 2006-06-21 2008-01-24 Rolf Repasi Restricting malicious libraries
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US8239915B1 (en) 2006-06-30 2012-08-07 Symantec Corporation Endpoint management using trust rating data
US8020206B2 (en) 2006-07-10 2011-09-13 Websense, Inc. System and method of analyzing web content
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US20080046724A1 (en) * 2006-07-25 2008-02-21 General Dynamics C4 System, Inc. Method for governing interaction between code within a code base
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US8402529B1 (en) 2007-05-30 2013-03-19 M86 Security, Inc. Preventing propagation of malicious software during execution in a virtual machine
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US7671567B2 (en) * 2007-06-15 2010-03-02 Tesla Motors, Inc. Multi-mode charging system for an electric vehicle
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US8245289B2 (en) 2007-11-09 2012-08-14 International Business Machines Corporation Methods and systems for preventing security breaches
US20090158302A1 (en) * 2007-12-13 2009-06-18 Fiberlink Communications Corporation Api translation for network access control (nac) agent
US20090158407A1 (en) * 2007-12-13 2009-06-18 Fiberlink Communications Corporation Api translation for network access control (nac) agent
US8607324B2 (en) * 2008-01-15 2013-12-10 Microsoft Corporation Untrusted gaming system access to online gaming service
US8621495B2 (en) 2008-01-18 2013-12-31 Microsoft Corporation Methods and apparatus for securing frames from other frames
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
WO2009103742A2 (en) 2008-02-18 2009-08-27 Martin Boesgaard Authenticating a web page with embedded javascript
US8316101B2 (en) * 2008-03-15 2012-11-20 Microsoft Corporation Resource management system for hosting of user solutions
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US9058483B2 (en) * 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8230499B1 (en) 2008-05-29 2012-07-24 Symantec Corporation Detecting and blocking unauthorized downloads
US8510753B2 (en) * 2008-06-27 2013-08-13 Microsoft Corporation Untrusted component hosting
US8621424B2 (en) * 2008-06-30 2013-12-31 Yahoo! Inc. Compiler based code modification for use in document ranking
US8353033B1 (en) * 2008-07-02 2013-01-08 Symantec Corporation Collecting malware samples via unauthorized download protection
US9176754B2 (en) * 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8484721B2 (en) * 2008-08-04 2013-07-09 Moka5, Inc. Locked-down computing environment
US8522200B2 (en) * 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US8510713B1 (en) 2008-10-31 2013-08-13 Google Inc. Method and system for validating a disassembler
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US10419541B2 (en) * 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US20100199357A1 (en) * 2009-02-02 2010-08-05 Microsoft Corporation Secure hosting for untrusted code
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8561183B2 (en) 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8850428B2 (en) 2009-11-12 2014-09-30 Trustware International Limited User transparent virtualization method for protecting computer programs and data from hostile code
US8621619B2 (en) * 2009-12-03 2013-12-31 Google Inc. Dynamic code insertion for static analysis based sandboxes
US8495607B2 (en) 2010-03-01 2013-07-23 International Business Machines Corporation Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
JP5739182B2 (ja) 2011-02-04 2015-06-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制御システム、方法およびプログラム
JP5731223B2 (ja) 2011-02-14 2015-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 異常検知装置、監視制御システム、異常検知方法、プログラムおよび記録媒体
JP5689333B2 (ja) 2011-02-15 2015-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 異常検知システム、異常検知装置、異常検知方法、プログラムおよび記録媒体
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
WO2012117465A1 (ja) * 2011-03-02 2012-09-07 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
US20130179287A1 (en) * 2011-08-08 2013-07-11 Gennady SLOBODSKIY System and method for electronic distribution of software and data
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
US9262597B2 (en) 2013-03-15 2016-02-16 Microsoft Technology Licensing, Llc Validating normalized code representations
WO2015060857A1 (en) 2013-10-24 2015-04-30 Mcafee, Inc. Agent assisted malicious application blocking in a network environment
EP3158489A4 (en) * 2014-06-20 2018-03-14 Waratek Limited Enhanced security for java virtual machines
US9413774B1 (en) 2014-10-27 2016-08-09 Palo Alto Networks, Inc. Dynamic malware analysis of a URL using a browser executed in an instrumented virtual machine environment
US20170039390A1 (en) * 2015-08-08 2017-02-09 James Alexander KING Methods and systems for privacy preserving third party extension
RU2618946C1 (ru) * 2015-12-18 2017-05-11 Акционерное общество "Лаборатория Касперского" Способ блокировки доступа к данным на мобильных устройствах с использованием API для пользователей с ограниченными возможностями
CN106682498B (zh) * 2016-08-16 2019-12-06 腾讯科技(深圳)有限公司 样本的执行方法和装置
US10628138B2 (en) 2018-02-09 2020-04-21 International Business Machines Corporation Automated management of undesired code use based on predicted valuation and risk analysis
TWI669624B (zh) * 2018-09-19 2019-08-21 宏碁股份有限公司 網頁內容自我保護方法以及伺服器
US11573910B2 (en) 2019-08-22 2023-02-07 Intel Corporation Apparatus, system and method to define memory information leak zones in a computing system
EP3786826A1 (en) * 2019-08-30 2021-03-03 Barclays Execution Services Limited Secure validation pipeline in a third party cloud environment
CN111787088B (zh) 2020-06-28 2023-04-28 百度在线网络技术(北京)有限公司 小程序数据处理的方法和装置
US11902453B2 (en) * 2021-06-25 2024-02-13 Intel Corporation Method, system and apparatus for delayed production code signing for heterogeneous artifacts

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0378031A (ja) * 1989-08-22 1991-04-03 Nec Corp 例外検査/代入文オブジェクトの削除方式
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
JPH1083310A (ja) * 1996-06-11 1998-03-31 Internatl Business Mach Corp <Ibm> プログラム・コードの配布方法及びシステム
JPH10124324A (ja) * 1996-10-01 1998-05-15 Internatl Business Mach Corp <Ibm> アプレットを非ipネットワーク上で実行する方法及びコンピュータ・ワークステーション
JP2000516740A (ja) * 1996-08-09 2000-12-12 サイトリクス システムズ(ケンブリッジ)リミテッド 切り離された実行位置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60245097A (ja) * 1984-05-18 1985-12-04 ブラザー工業株式会社 ソフトウエア販売装置
US4982430A (en) * 1985-04-24 1991-01-01 General Instrument Corporation Bootstrap channel security arrangement for communication network
US4688169A (en) * 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
US4796220A (en) * 1986-12-15 1989-01-03 Pride Software Development Corp. Method of controlling the copying of software
JPS63310043A (ja) * 1987-06-12 1988-12-19 Nec Corp プログラムの不正アドレスアクセス検出方式
US5222134A (en) * 1990-11-07 1993-06-22 Tau Systems Corporation Secure system for activating personal computer software at remote locations
JP3485940B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 仮想記憶制御装置及び方法
CA2145068A1 (en) 1992-09-21 1994-03-31 Ric Bailier Richardson System for software registration
US5390314A (en) 1992-10-09 1995-02-14 American Airlines, Inc. Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification
US5983012A (en) 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
US5644709A (en) 1994-04-21 1997-07-01 Wisconsin Alumni Research Foundation Method for detecting computer memory access errors
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5850446A (en) * 1996-06-17 1998-12-15 Verifone, Inc. System, method and article of manufacture for virtual point of sale processing utilizing an extensible, flexible architecture
US5812668A (en) * 1996-06-17 1998-09-22 Verifone, Inc. System, method and article of manufacture for verifying the operation of a remote transaction clearance system utilizing a multichannel, extensible, flexible architecture
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0378031A (ja) * 1989-08-22 1991-04-03 Nec Corp 例外検査/代入文オブジェクトの削除方式
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
JPH1083310A (ja) * 1996-06-11 1998-03-31 Internatl Business Mach Corp <Ibm> プログラム・コードの配布方法及びシステム
JP2000516740A (ja) * 1996-08-09 2000-12-12 サイトリクス システムズ(ケンブリッジ)リミテッド 切り離された実行位置
JPH10124324A (ja) * 1996-10-01 1998-05-15 Internatl Business Mach Corp <Ibm> アプレットを非ipネットワーク上で実行する方法及びコンピュータ・ワークステーション

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421713B2 (en) 2002-06-12 2008-09-02 Matsushita Electric Industrial Co., Ltd. Safe service extension platform
JP2004302516A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 端末装置およびプログラム
US8838950B2 (en) 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
JP2007512560A (ja) * 2003-11-25 2007-05-17 サジエム・コミユニカシオン ビデオ投射方法および装置
JP2006092495A (ja) * 2004-09-27 2006-04-06 Toshiba Kyaria Kk マイクロコンピュータのデータ記憶方法
JP4669687B2 (ja) * 2004-09-27 2011-04-13 東芝キヤリア株式会社 マイクロコンピュータのデータ記憶方法
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
JP2009505275A (ja) * 2005-08-15 2009-02-05 ソニー エリクソン モバイル コミュニケーションズ, エービー モジュール内の実行アプリケーション・プログラムの安全性を検査するシステム、方法、及びコンピュータプログラム
JP2009506439A (ja) * 2005-08-25 2009-02-12 フォーティファイ ソフトウェア, インコーポレイテッド セキュリティを提供するためのプログラムの解析および補完のための装置および方法
US8347392B2 (en) 2005-08-25 2013-01-01 Hewlett-Packard Development Company, L.P. Apparatus and method for analyzing and supplementing a program to provide security
JP5061908B2 (ja) * 2005-12-27 2012-10-31 日本電気株式会社 プログラム実行制御方法および装置ならびに実行制御プログラム
JP2008027306A (ja) * 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
JP2010511227A (ja) * 2006-11-28 2010-04-08 マイクロソフト コーポレーション 信頼性の低いアドレス空間への実行コードのコンパイル
WO2010016332A1 (ja) * 2008-08-07 2010-02-11 ソニー株式会社 通信装置、通信方法、及びプログラム
JP2010039913A (ja) * 2008-08-07 2010-02-18 Sony Corp 通信装置、通信方法、及びプログラム
CN102112992A (zh) * 2008-08-07 2011-06-29 索尼公司 通信装置、通信方法及程序
JP2017016669A (ja) * 2011-07-20 2017-01-19 マイクロソフト テクノロジー ライセンシング,エルエルシー 信頼レベルのアクティブ化
CN107408053A (zh) * 2015-04-10 2017-11-28 谷歌公司 到本原客户端的二进制翻译
JP2018510433A (ja) * 2015-04-10 2018-04-12 グーグル エルエルシー ネイティブ・クライアントへのバイナリ変換
US10162617B2 (en) 2015-04-10 2018-12-25 Google Llc Binary translation into native client

Also Published As

Publication number Publication date
EP1021753A1 (en) 2000-07-26
EP1021753B1 (en) 2001-12-05
JP4528517B2 (ja) 2010-08-18
DE69802834D1 (de) 2002-01-17
DE69802834T2 (de) 2002-09-12
US6275938B1 (en) 2001-08-14
JP2004118866A (ja) 2004-04-15
WO1999010795A1 (en) 1999-03-04
JP3572016B2 (ja) 2004-09-29

Similar Documents

Publication Publication Date Title
JP3572016B2 (ja) 信頼されないプログラムを実行するための方法
US20200257804A1 (en) Method for Validating an Untrusted Native Code Module
US9536079B2 (en) Safely executing an untrusted native code module on a computing device
US9116717B2 (en) Run-time interception of software methods
US8595832B1 (en) Masking mechanism that facilitates safely executing untrusted native code
US8336095B2 (en) User space virtualization system
US9223964B2 (en) Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking
US6834391B2 (en) Method and apparatus for automated native code isolation
JP3377087B2 (ja) ソフトウェア・コンポーネントを処理および配布するための方法および装置
Li et al. Iso-UniK: lightweight multi-process unikernel through memory protection keys
Abrath et al. Resilient self-debugging software protection
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine
Goonasekera et al. LibVM: an architecture for shared library sandboxing
van t Noordende et al. A secure jailing system for confining untrusted applications
Govindarajan Applications and Enhancements of Featherweight Virtual Machine (FVM)
KR20090093930A (ko) 유저 공간 가상화 시스템

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040625

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20070702

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080702

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090702

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100702

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110702

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120702

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees