JP3572016B2 - 信頼されないプログラムを実行するための方法 - Google Patents

信頼されないプログラムを実行するための方法 Download PDF

Info

Publication number
JP3572016B2
JP3572016B2 JP2000508048A JP2000508048A JP3572016B2 JP 3572016 B2 JP3572016 B2 JP 3572016B2 JP 2000508048 A JP2000508048 A JP 2000508048A JP 2000508048 A JP2000508048 A JP 2000508048A JP 3572016 B2 JP3572016 B2 JP 3572016B2
Authority
JP
Japan
Prior art keywords
program
memory
code
api
applet
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
JP2000508048A
Other languages
English (en)
Other versions
JP2001514411A (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

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、電子的データ処理に関し、特に、信頼できないコードを包含する実行可能プログラムからのシステム損傷を回避することに関する。
【0002】
【従来の技術】
インターネットブラウザの進歩は、WWW(ワールドワイドウェブ:World Wide Web)の動的及びインタラクティブなページを作り出す。しかしながら、進歩はまた、ウェブページを単に見ることから発生する多くのコンピュータシステムセキュリティリスクを作り出す。インターネットブラウザは、プログラム又は、ウェブページに埋め込まれた他の実行可能なコードを自動的にダウンロードし、実行する。リモートコンピュータからプログラムをダウンロードし、実行する能力は、ホストコンピュータを種々のセキュリティリスクに曝す。例えばコンピュータシステム又は、コンピュータシステムのデータを修正する敵意のあるプログラムは、パスワード、銀行預金口座情報のようなユーザデータを盗み、ユーザにシステムリソースを利用できなくさせる。その結果、セキュリティの問題は、インターネットアプリケーションの開発において重要である。
【0003】
ある従来技術のアプローチにより、Javaアプレットとして知られる実行可能なコードの特定のフォームにセキュリティを設けた。実行可能なコードソースプログラムは、書き込まれ、プラットフォーム独立バイトコードに変換されダウンロードされる。プラットフォーム独立トークン化されたバイトコードは、実行可能コードがすることができる厳格な制限を配置する仮想マシーンで走る。従来技術のアプローチにおける実行可能なコードは、オペレーティングシステムへのアクセスが非常に制限されていた。従って、Java言語はより強力になるので、オペレーティングシステムがすでに実行できる多くの関数を複製しなければならない。
【0004】
ActiveXコントロールは、Javaの制限された能力を回避する実行可能なコードのフォームである。ActiveXは、OLE(Object Linking and Embedding)及びCOM(Component Object Model)と呼ばれるマイクロソフト社の2つの技術の産物である。ActiveXは、それがインターネットを利用することができるという特徴をサポートする。例えば、ActiveXコントロールは、Webブラウザによって自動的にダウンロードされ、実行される。
【0005】
ActiveXコントロールが、ネイティブコードで書かれるので、それらはオペレーティングシステムに十分にアクセスでき、コントロールが稼働するメモリを処理することができる。このアクセスは、コントロールが、スタンドアロンアプリケーションに対する拡張のようなきつく制御された環境で稼働するときに、強力である。しかしながら、ActiveXコントロールが、インターネットエクスプローラのようなウェブブラウザのようなアプリケーションによってインターネット上の知らない又は信用できないソースからダウンロードされるとき、オペレーティングシステムへの十分なアクセスは、深刻なセキュリティの問題を生ずる。ActiveXコントロールは、いかなるオペレーティングシステムのサービスにもアクセスするように設計される。敵意のあるActiveXコントロールは、ホストシステムのハードドライブのお情報を検索することができ、ウィルスを注入することができ、又は、ホストシステムを損傷させることができた。オペレーティングシステムに対するActiveXの無制限のアクセスによる問題は、無制限のアクセスが、セキュリティ違反に対するリスクにホストシステムを置くことである。
【0006】
従って、ホストシステムのセキュリティを妥協することのない、ホストオペレーティングシステムのパワーにアクセスする能力を備えた実行可能なコードのフォームの必要性がある。
【0007】
【発明が解決しようとする課題】
本発明は、ネイティブ、即ち直接実行可能なコードで書かれた信頼されたい実行可能なコードに関するセキュリティポリシーを実行する。実行可能なコードは、メモリの外側へのリファレンスが制限される予め割り当てられたメモリ範囲、即ちサンドボックス内にロードされる。実行中、実行可能なコードに追加されたチェック(「スニフコード(sniff code)」)は、これらの制限を強制する。信頼されないコードにおける在来のアプリケーションプログラムインターフェース(API)コールは、ホストシステムのセキュリティの侵害を防止しながら、実行コードがホストオペレーティングシステムにアクセスすることができる変換コードモジュール(「サンク(thunks)」)で置換される。コントロール又はアプレットにおける静的リンクは、コールによってサンクモジュールに置換される。実行中にAPIコールが作られるとき、コントロールはサンクに移送し、APIコールがオペレーティングシステムで実行されることが許容されるべきか否か判断する。
【0008】
【課題を解決するための手段】
本発明は、メモリおよびインターフェースモジュールを有するパーソナルコンピュータプラットフォームで実行するために書かれた信頼されない第2のプログラムを、CPUを有するコンピュータが実行可能な第1のプログラムに変換して実行するための方法であって、前記CPUにより前記第2のプログラムに関してメモリの所定境界領域を割り当て、前記CPUにより前記第2のプログラムを前記メモリの境界領域内にロードし、当該ロードされた第2のプログラム中の、前記インターフェースモジュールがリンク先となっている命令を前記CPUにより検出し、当該検出した命令のリンク先を、前記インタフェースモジュールから、該命令をブロックするための変換コードモジュールに前記CPUにより置換し、当該置換が行われた第2のプログラムを第1のプログラムに変換し、当該変換された第1のプログラムの中の前記メモリ境域以外の領域に対してリファレンスを行う命令を前記CPUにより検出し、当該検出した命令の実行時のリファレンスをブロックするためのチェックコードを前記第のプログラムの中に前記CPUにより配置し、前記チェックコードが配置された第1のプログラムを前記CPUにより実行することを特徴とする。
【発明の実施の形態】
以下の実施の形態の詳細な説明において、添付の図面を参照するが、それらは、本発明を実施するための特定の実施形態の例示として示したものである。これらの実施形態は、当業者が本発明を実施するのに十分に詳細に記載されており、他の実施形態が利用可能であり、本発明の精神及び範囲を逸脱することなく論理的及び電気的な変更をすることができることを理解すべきである。それゆえ、以下の詳細な説明を限定的な意味にとってはならず、本発明の範囲は特許請求の範囲のみによって定義される。複数の図で表される同一のコンポーネントは同じ参照番号によって識別される。
【0009】
図1及び以下の議論は、本発明を実行することができる適当な計算環境の一般的な説明を短く提供するものである。望まないけれども、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールのようなコンピュータ実行可能な命令の一般的なコンテキストで記載される。一般的に、プログラムモジュールは、特定のタスクを実行し、又は、特定の抽象データ型を実行する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを包含する。更に、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能なカスタマエレクトロニック、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、などを包含する他のコンピュータシステムで実行されうることは、当業者には明らかであろう。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散計算環境でも実行される。分散計算環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置される。
【0010】
図1は、本発明が実施される適当な計算環境の簡単な一般的な説明を提供する。本発明は、以下において、他の環境でも可能であるが、パーソナルコンピュータ(PC)によって実行されるプログラムモジュールのようなコンピュータ実行可能な命令の一般的なコンテキストとして記載する。プログラムモジュールは、特定のタスクを実行し、特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを包含する。本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能なカスタマエレクトロニック、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、などを包含する他のコンピュータシステムで実行されうることは、当業者には明らかであろう。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散計算環境でも実行される。分散計算環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置される。
【0011】
図1は、本発明を実行するためのシステムの例を示す。それは従来のパーソナルコンピュータ20のフォームにおいて、汎用のコンピュータデバイスを採用し、該コンピュータは、演算ユニット21と、システムメモリ22と、システムメモリ及び他のシステムコンポーネントを演算ユニット21に接続するシステムバス23とを含む。システムバス23は、メモリバス又はメモリコントローラ、周辺バス、及び、ローカルバスを包含する種々のタイプのものであってよく、多数のバス構造を使用するものであってよい。システムメモリ22は、ROM24とRAM25を包含する。ROM24にストアされた基本入力/出力システム(BIOS)は、パーソナルコンピュータ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,光ディスク31、ROM24、及びRAM25にストアされうる。プログラムモジュールは、オペレーティングシステム35と、1又はそれ以上のアプリケーションプログラム36と、他のプログラムモジュール37と、プログラムデータ38とを包含しうる。ユーザは、ユーザは、キーボード40及びポインティングデバイス42のような入力デバイスを介してコマンド及び情報をパーソナルコンピュータに入力する。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛生アンテナ(サテライト・ディッシュ)、スキャナ等を包含する。これら及び他の入力デバイスはしばしば、システムバス23に接続されたシリアルポートインターフェース46を介して演算ユニット21に接続されるが、それらは、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB)のような図1に示されていない他のインターフェースを介して接続されうる。モニタ47又は他の表示デバイスまたは、ビデオアダプタ48のようなインターフェースを介してシステムバス23に接続されうる。モニタに加え、パーソナルコンピュータは典型的には、スピーカ及びプリンタのような楽しゅう偏出力デバイス(図示せず)を含む。
【0013】
パーソナルコンピュータ20は、リモートコンピュータ49のような1又はそれ以上のリモートコンピュータに対して論理的な接続を使用してネットワークされた環境で使用されうる。リモートコンピュータ49は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピア・デバイス、又は他の一般的なネットワークノードであってよい。それは典型的には、パーソナルコンピュータ20と接続する上述の多くの又は全てのコンポーネントを包含するが、記憶装置50だけを図1に例示した。図1に示した論理的な接続は、ローカルエリアネットワーク(LAN)51及びワイドエリアネットワーク(WAN)52を含む。かかるネットワーク環境は、オフィス、企業の広汎なネットワーク、イントラネット及びインターネットでありふれている。
【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によって表されるような演算ユニット21に命令を直接送信することによって、オペレーティングシステム35の制御下で実行する。プログラム36は、アプリケーションプログラムインターフェース(API)コード352−354のブロックを呼び出すことによって標準のAPIファンクションを実行する。各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−393と呼ばれる変換モジュールによって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をバイバスすることができ、カーネルを直接呼び出すことができる。それ故、エミュレータ39は、この命令を無条件にブロックし、それは、ライン364に全く出力コードを生成しない。ライン363でのサブルーチンコール(CALL)及びリターン(RET)、無条件/条件付のジャンプ(JMP/Jxx)のような他の問題のある命令は、サブルーチンコールによってライン364に置換され、これらの命令のひとつがシミュレーションされたとき、既にコンパイルされたコードのキャッシュは、コール又はジャンプのキャッシュ内の宛先アドレスを判断するために検索される必要がある。
【0021】
アプレット362からのAPIコールは、APIコード352−354に直接処理されない。むしろ、サンクコード391−393はそれらをインターセプトし、それらで何をするか決定する。391でのようないくつかのコールは、サンク391によって対応するAPI352に直接通され、これらのコールは、システムに大混乱をもたらすことはなく、従って、セキュリティリスクが存在しない。392のような他のサンクは、その特定のコールの所定の特徴に依存して、それに対応するAPI353にコールを通すかどうか決定し、それをAPIに出す前にコールを修正することができる。393のようなあるサンクは、コールをそれらのAPI354に完全に認めず、これらのコールは、システムのセキュリティを犯し、信頼できないアプレット362によって許容されない。
【0022】
図3は、パーソナルコンピュータ20で実行されるアプレットがパーソナルコンピュータのセキュリティを有しない全てのオペレーティングシステムサービスにアクセスすることができる発明のある実施形態の大まかなステップ400を図示する。
【0023】
ステップ410では、ウェブブラウザのようなホストアプリケーションがアプレットを割り当てられたメモリ範囲にロードする。割り当てられたメモリ範囲を、このアプリケーションではサンドボックスと呼ぶ。サンドボックスは、アプレットをストアするための最初のメモリセグメントと、アプレットを実行する間、ストレジをアドレス可能にするためのランタイムメモリセグメントとの両方を含み、これらは在来のいかなる手段でも割り当てられ得る。この実施形態では、OS35は、ステップ411でエミュレータ39を呼び出す。ステップ412は、アプレット362のコードをストアするために、図1のRAM22におけるアドレスの領域及び範囲を割り当て、ランタイムワーキングストレージを使用するためのアプレットに関する他の領域を割り当て、これらの2つの領域は、他のいかなるアプレット、アプリケーションプログラム、又は他のシステムのファシリティに影響を与えることなく、安全に実行することができるサンドボックスを一緒に構成する。それらは、各セキュリティドメインのためのひとつのXW86サンドボックスとなる、即ち同じセキュリティ設定を有する全てのコントロールが同じサンドボックスでプレイする。セキュリティ設定がウェブページのURL(uniform resource locator)を含むので、各オープンウェブページは、少なくとも1つのサンドボックスを有する。通常、同じウェブページの全てのコントローラは、同じサンドボックスにある。それらのカスタムインターフェースが安全でないけれども、サンドボックス内でインターアプレットを実行することは許容される。
【0024】
ステップ420は、実行のためにアプレットを準備する。
【0025】
ステップ421は、リンクを備えるアプレットの静的リンクをサンクモジュールと置換する。即ち、エミュレータ39は、アプレット362のコード内でAPI352−354に対する全てのコールを見つけ、それらを対応するサンク391−393に対するコールに変更する。静的リンクは、アプレットの実行中、一定を維持するリンクである。DLL即ちダイナミックリンクライブラリは、実行可能な関数のライブラリ、又は、Windowsアプリケーションによって使用することができるデータである。典型的には、DLLは、1又はそれ以上の特定の関数を提供し、DLLは、DLLに対する静的又は動的なリンクのいずれかを生成することによってアクセスされる。DLLは、最後に拡張子.dllを備える記述でファイルされる。サンクDLLは、サンドボックス内の安全なAPIである。サンクDLLは、安全であると考えられない多くのAPIをブロックし、制限する。例えば、CreateFileが知られたロケーションにだけ許容されうる。同様に、アプレットは、パスワードを記録するための他の処理を生成することができない。上述のように、いくつかのサンクは、対応するAPIにコントロールを単に通す。例えば、「CreateWindow」、「CreateDialog」、「CreateIcon」、「CreateCursor」と名付けられたWin32API及び同様な関数は、他のプロセスに影響せず、信頼できないコードを許容しうる。一方、所定の他のAPIは、信頼できないコードを完全に利用できなくさせなければならない。例えば、「CreateProcess」を許容することにより、信頼できないアプレットをサンドボックスの外側で別のプログラムを実行することができ、「ExitWindowsEx()」のようなオペレーションを完全にブロックすることができ、それにより、信頼できないコードは現在のユーザをログオフすることができず、コンピュータをオフにすることができない。393のようなサンクが、ライン395によって表示されたコントロールにエラーコードバックを戻すことによってAPIをブロックする。
【0026】
いくつかのAPIはある条件下、又は所定の修正で許容されうる。この場合、392のようなサンクは、それが対応するAPI353を呼び出すか又はブロックするかのいずれかであった後、内部演算を実行し、修正されたパラメータをAPIに通す。例えば、「SendMessage()」は通常メッセージをウィンドウに送信する。SendMessageサンクにより、ActiveXコントロールがメッセージをそのコントロールによって生成されたウィンドウに送信することができる。しかしながら、サンクは、ウェブブラウザによって、又は他のアプリケーションプログラムによるそれ自身の全てのメッセージをブロックする。このことにより、コントロールが、他のプログラムに属するウィンドウによって実行されるべきであるキーストロークをまねるためにVM_CHARメッセージを送信することによってセキュリティを侵害することを防止する。
【0027】
他の例は、メモリをどんな場所にも普通に割り当てる「GlobalAlloc」、「HeapCreate」のようなWin32APIを含む。これらのAPIに関するサンクは、対応するAPIの全体のコードを組み込み、サンドボックスメモリ内で完全に実行するようにリコンパイルし、サンドボックスの境界内のみでメモリを割り当てることができる。
【0028】
次いで、ステップ422は、アプレットのコードを図2のエミュレータ39によって実行されうるオブジェクトコードにコンパイルする。コードが要求されたものになったとき、コンパイルは直ちに又はパート毎に全て進行し、コンパイルされたコードは、サンドボックスの外側に配置された図4のコンパイルされたキャッシュ357に配置される。これらの方法におけるコンパイルは、在来のものであり、発明の本質には関係しない。
【0029】
ステップ423は、認められないメモリリファレンスに対する禁止を強化するためにアプレット自身のコードにチェックコードを挿入する。「スニフ(sniff)コード」と呼ばれるこのチェックコードは、アプレットのコードによって全てのメモリの読み書きを調べ、その結果からそれらを許可し、又は許可しない。アプレットがサンドボックスの外側のメモリにアクセスするのを防止することにより、アプレットのセキュリティは向上する。予め割り当てられた範囲からだけのアプレットに対して全てのメモリを提供することにより、スニフコードオーバーヘッドを低減させ、その結果、メモリ範囲の効率的なチェックを生じる。更なる最適化技術が、基本のブロックレベルでコードをコンパイルすることによって追加される。例えば、種々のメモリリファレンスが同じレジスタを使用するアプレットによってなされるならば、コンパイラは、各アクセスに関するスニフコードに対する別々のコールを生成するのではなく、一回だけそのレジスタによってアドレス可能な全体の範囲をチェックすることができる。詳細な例を図4と一緒に示す。基本的には、スニフコードによって、割り当てられたサンドボックス内と、システムを損傷しない所定の他のメモリ内とだけで、アプレットがRAMアドレスを参照することができる。(エミュレータ39がサンドボックスの外側でメモリを参照することができないが、それはサンドボックスにメモリ領域を割り当てるための能力を有する。デバイス独立ビットマップイメージのような目的に関して、余分のスニフコードオーバーヘッドは労力より小さく、さもなければ最初のサンドボックス領域内にイメージをコピーするように要求される。)
ステップ430は、アプレットを実行する。ステップ431は、命令シーケンスに続く。
【0030】
現在の命令がAPIに対するコールであるならば、ステップ421によって配置されたリンクは、コールがステップ432で完全にブロックされ、ステップ433で実行され、ステップ434で更に処理され、次いで、ブロックされ又は許可されうるかどうか判断する。
【0031】
現在の命令が、LOAD又はSTOREのようなメモリリファレンス命令であるならば、ステップ435によって、命令がそのサンドボックス内のアドレスを参照するならば、ステップ436がその命令を実行することができる。もしそうでなければ、ステップ437は、リファレンスがさもなければ許容されるかどうか判断する。もしそうならば、ステップ435はそれを実行し、さもなければ、ステップ438はアクセスをブロックし、エラーを返す。スニフコードはこれらのステップを実行する。他のX86命令は、ステップ436によって直接実行される。各命令の後、コントロールはステップ431に戻る。プロセス400は、ホストアプリケーションがそれを終了するまで、続く。
【0032】
いくつかのシステムでは、433のようなブロックによってAPIの実行が、他のセキュリティ暴露を現す。APIの引き数がサンドボックスにおけるデータに対するポインタであるならば、サンクがAPIに対して示されたメモリのコンテンツ及び、APIに対する実際のコールを検査する時間の間は、短い時間である。マルチスレッドアプレットでは、アプレット内の他の実行スレッドが、APIに対して示されたメモリのコンテンツを変更し、それによってAPIに対して無効にされたデータを転送することができる。かかるアタックを防止するために、ブロック433−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はまた、サンドボックス215の外側に配置される。セキュリティポリシーが実際に実行されることがここであるので、サンドボックス215の外側のWHKRNL32325の位置は、特に重要であり、それがサンドボックスの内側にあるならば、ルージュアプレットが、それを修正することによってセキュリティを妥協することができうる。
【0034】
以下の例は本発明の作動の例示を示す。前に述べたように、この実施例は、x86Win32アプレットを実行するための前述のWx86VMエミュレータを利用し、Windows95又はWindowsNTオペレーティングシステム下でx86プラットフォームで修正されずにコントロールする。
【0035】
マイクロソフトインターネットエクスプローラのようなウェブブラウザは、インターネットからハードドライブのc:¥temp¥foo.ocxに、foo.ocxと呼ばれるActiveXコントロール(アプレット)をダウンロードする。拡張子.ocxはActiveXコントロールを示す。
【0036】
次いで、インターネットエクスプローラは、システムにおいてWx86VMの存在を探す。Wx86VMコンポーネントが利用可能であるならば、インターネットエクスプローラは、それを呼び出し、コントロールに関する全てのセキュリティに関する情報を提供し、ロードされるべきコントロールを要求する。Wx86VMコンポーネントは、インターネットエクスプローラがそれを提供し、Wx86VMにそれを送り出すか、オブジェクトリンカをOLE32に行かせるかどうか判断するセキュリティ情報を調べ、それを取り扱う。
【0037】
コントロールがWx86VMエミュレータにおいて送り出されるべきならば、Wx86VMはメモリの割り当てられた領域、又は、ActiveXコントロールに関するサンドボックスを生成する。Wx86VMは、ActiveXコントロール(図4では362と示す)foo.ocxをサンドボックス内にロードする。
【0038】
Wx86VMは、391のようなAPIサンクDLL(安全API)をサンドボックス内にロードする。Wx86VMは、前述の出願(ドケット777.016US1)において十分に説明したようなオペレーティングシステムローダ内でDLLの名前を修正することができる。このことにより、Wx86VMは、規定を呼び出す際に違いを取り扱うために、x86イメージと本来の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をディスパッチするとき、DLLは、パラメータをサンドボックスのスタックから本来のスタックにコピーし、APIの引数を検査し、コールを作り、サンドボックスのEAXレジスタに戻り値を戻すように移動させることができる。
【0040】
例えば、x86アプレット又はコントロールが、kernel32!CreateFileに対する静的なリンクを有するならば、Wx86VMはそのリンクを、wikrnl32!CreateFileと解決する。アプレットがCreateFileを呼び出すとき、wikrnl32!CreateFileは、サンドボックスからネイティブにスイッチするBOP命令を実行し、Wx86IDispatchBop()をWx86VMI.dllに呼び出す。Wx86DispatchBop()は、コールをwhkrnl32!whCreateFile()にディスパッチする。その関数は、ネイティブkernel32!CreateFile()を呼び出し、戻り値をシミュレーションされた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 SNIFFREAD4.ECX
MOV EAX,[ECX]
LEA EAX,[ESI+4]
CALL SNIFFREAD4.ECX
MOV EDX,[ECX]
スニフコードは、以下のように挿入される
LEA EAX,[ESI+4]
CALL SNIFFREAD8.ECX
MOV EAX,[ECX]
MOV EDX,[ESI+4]
上の記述は例示的なものであり、制限的なものではない。上の記述をみれば、当業者にとって多くの他の実施形態が明らかである。それ故、本発明の範囲は、特許請求の範囲と均等な範囲とあわせて、特許請求の範囲を参照して決定されるべきである。
【図面の簡単な説明】
【図1】本発明が実施される、例示的な計算環境のシステム図である。
【図2】本発明を組み込む実行環境のブロック図である。
【図3】本発明の主なステップを記述するフローチャートである。
【図4】メモリ内のサンドボックス領域の簡単化したブロック図である。

Claims (1)

  1. メモリおよびインターフェースモジュールを有するパーソナルコンピュータプラットフォームで実行するために書かれた信頼されない第2のプログラムを、CPUを有するコンピュータが実行可能な第1のプログラムに変換して実行するための方法であって、
    前記CPUにより前記第2のプログラムに関してメモリの所定境界領域を割り当て、
    前記CPUにより前記第2のプログラムを前記メモリの境界領域内にロードし、
    当該ロードされた第2のプログラム中の、前記インターフェースモジュールがリンク先となっている命令を前記CPUにより検出し、当該検出した命令のリンク先を、前記インタフェースモジュールから、該命令をブロックするための変換コードモジュールに前記CPUにより置換し、
    当該置換が行われた第2のプログラムを第1のプログラムに変換し、
    当該変換された第1のプログラムの中の前記メモリ境域以外の領域に対してリファレンスを行う命令を前記CPUにより検出し、当該検出した命令の実行時のリファレンスをブロックするためのチェックコードを前記第のプログラムの中に前記CPUにより配置し、
    前記チェックコードが配置された第1のプログラムを前記CPUにより実行する
    ことを特徴とする方法。
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 1997-08-28
US08/919,844 US6275938B1 (en) 1997-08-28 1997-08-28 Security enhancement for untrusted executable code
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 JP2001514411A (ja) 2001-09-11
JP3572016B2 true 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)

Families Citing this family (287)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7147068B2 (en) 1994-10-14 2006-12-12 Weatherford / Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7036610B1 (en) 1994-10-14 2006-05-02 Weatherford / Lamb, Inc. Apparatus and method for completing oil and gas wells
US7040420B2 (en) 1994-10-14 2006-05-09 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7100710B2 (en) 1994-10-14 2006-09-05 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7108084B2 (en) 1994-10-14 2006-09-19 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7228901B2 (en) 1994-10-14 2007-06-12 Weatherford/Lamb, Inc. Method and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US6868906B1 (en) 1994-10-14 2005-03-22 Weatherford/Lamb, Inc. Closed-loop conveyance systems for well servicing
US7013997B2 (en) 1994-10-14 2006-03-21 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. 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
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6536520B1 (en) 2000-04-17 2003-03-25 Weatherford/Lamb, Inc. Top drive casing system
US7140445B2 (en) 1997-09-02 2006-11-28 Weatherford/Lamb, Inc. Method and apparatus for drilling with casing
US7509722B2 (en) 1997-09-02 2009-03-31 Weatherford/Lamb, Inc. Positioning and spinning device
US6742596B2 (en) 2001-05-17 2004-06-01 Weatherford/Lamb, Inc. Apparatus and methods for tubular makeup interlock
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
GB9815809D0 (en) 1998-07-22 1998-09-16 Appleton Robert P Casing running tool
GB2340857A (en) 1998-08-24 2000-03-01 Weatherford Lamb An apparatus for facilitating the connection of tubulars and alignment with a top drive
GB2340858A (en) 1998-08-24 2000-03-01 Weatherford Lamb Methods and apparatus for facilitating the connection of tubulars using a top drive
GB2340859A (en) 1998-08-24 2000-03-01 Weatherford Lamb Method and apparatus for facilitating the connection of tubulars using a top drive
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
JP4501280B2 (ja) 1998-12-09 2010-07-14 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークおよびコンピュータシステムセキュリティを提供する方法および装置
US7188687B2 (en) 1998-12-22 2007-03-13 Weatherford/Lamb, Inc. Downhole filter
WO2000037766A2 (en) 1998-12-22 2000-06-29 Weatherford/Lamb, Inc. Procedures and equipment for profiling and jointing of pipes
GB2345074A (en) 1998-12-24 2000-06-28 Weatherford Lamb Floating joint to facilitate the connection of tubulars using a top drive
GB2347441B (en) 1998-12-24 2003-03-05 Weatherford Lamb Apparatus and method for facilitating the connection of tubulars using a top drive
US6857487B2 (en) 2002-12-30 2005-02-22 Weatherford/Lamb, Inc. Drilling with concentric strings of casing
US7311148B2 (en) 1999-02-25 2007-12-25 Weatherford/Lamb, Inc. Methods and apparatus for wellbore construction and completion
US6896075B2 (en) 2002-10-11 2005-05-24 Weatherford/Lamb, Inc. Apparatus and methods for drilling with casing
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
US7216727B2 (en) 1999-12-22 2007-05-15 Weatherford/Lamb, Inc. Drilling bit for drilling while running casing
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
US7334650B2 (en) 2000-04-13 2008-02-26 Weatherford/Lamb, Inc. Apparatus and methods for drilling a wellbore using casing
US7325610B2 (en) 2000-04-17 2008-02-05 Weatherford/Lamb, Inc. Methods and apparatus for handling and drilling with tubulars or casing
AU2001262958A1 (en) 2000-04-28 2001-11-12 Internet Security Systems, Inc. Method and system for managing computer security information
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
US7921459B2 (en) 2000-04-28 2011-04-05 International Business Machines Corporation System and method for managing security events on a network
GB0010378D0 (en) 2000-04-28 2000-06-14 Bbl Downhole Tools Ltd Expandable apparatus for drift and reaming a borehole
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US7333952B1 (en) 2000-06-23 2008-02-19 Ebs Group Limited Compound order handling in an anonymous trading system
US6983259B1 (en) 2000-06-23 2006-01-03 Ebs Group Limited Anonymous trading system
US7024386B1 (en) 2000-06-23 2006-04-04 Ebs Group Limited Credit handling in an anonymous trading system
GB2364586B (en) 2000-06-23 2004-06-16 Ebs Nominees Ltd Deal matching in an anonymous trading system
US7827085B1 (en) 2000-06-23 2010-11-02 Ebs Group Limited Conversational dealing in an anonymous trading system
US7366690B1 (en) 2000-06-23 2008-04-29 Ebs Group Limited Architecture for anonymous trading system
US7184982B1 (en) 2000-06-23 2007-02-27 Ebs Group Limited Architecture for anonymous trading system
US7162649B1 (en) 2000-06-30 2007-01-09 Internet Security Systems, Inc. Method and apparatus for network assessment and authentication
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
GB2365463B (en) 2000-08-01 2005-02-16 Renovus Ltd Drilling method
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
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
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
US7130466B2 (en) 2000-12-21 2006-10-31 Cobion Ag System and method for compiling images from a database and comparing the compiled images with known 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
AU2002243763A1 (en) 2001-01-31 2002-08-12 Internet Security Systems, Inc. Method and system for configuring and scheduling security audits of a computer network
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
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
US7562388B2 (en) * 2001-05-31 2009-07-14 International Business Machines Corporation Method and system for implementing security devices in a network
US7237264B1 (en) 2001-06-04 2007-06-26 Internet Security Systems, Inc. System and method for preventing network misuse
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
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
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
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
WO2003058451A1 (en) 2002-01-04 2003-07-17 Internet Security Systems, Inc. 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
GB0206227D0 (en) 2002-03-16 2002-05-01 Weatherford Lamb Bore-lining and drilling
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
RU2222043C2 (ru) * 2002-04-15 2004-01-20 Алексей Юрьевич Шевченко Способ защиты памяти компьютеров от несанкционированного доступа и устройство для его осуществления
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
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
EP1525522A2 (en) 2002-06-06 2005-04-27 Green Border Technologies Method and system for implementing a secure application execution environment using derived user accounts for internet content
CN1327343C (zh) 2002-06-12 2007-07-18 松下电器产业株式会社 服务安全扩充平台
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
US6994176B2 (en) 2002-07-29 2006-02-07 Weatherford/Lamb, Inc. Adjustable rotating guides for spider or elevator
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
US6899186B2 (en) 2002-12-13 2005-05-31 Weatherford/Lamb, Inc. Apparatus and method of drilling with casing
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
US7303022B2 (en) 2002-10-11 2007-12-04 Weatherford/Lamb, Inc. Wired casing
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
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
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
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
US7128154B2 (en) 2003-01-30 2006-10-31 Weatherford/Lamb, Inc. Single-direction cementing plug
USRE42877E1 (en) 2003-02-07 2011-11-01 Weatherford/Lamb, Inc. Methods and apparatus for wellbore construction and completion
WO2004076804A1 (en) 2003-02-27 2004-09-10 Weatherford/Lamb Inc. Drill shoe
US7360594B2 (en) 2003-03-05 2008-04-22 Weatherford/Lamb, Inc. Drilling with casing latch
US7503397B2 (en) 2004-07-30 2009-03-17 Weatherford/Lamb, Inc. Apparatus and methods of setting and retrieving casing with drilling latch and bottom hole assembly
CA2517895C (en) 2003-03-05 2009-12-01 Weatherford/Lamb, Inc. Casing running and drilling system
CA2517883C (en) 2003-03-05 2010-01-12 Weatherford/Lamb, Inc. Full bore lined wellbores
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
JP2004302516A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 端末装置およびプログラム
WO2004090279A1 (en) 2003-04-04 2004-10-21 Weatherford/Lamb, Inc. Method and apparatus for handling wellbore tubulars
US8838950B2 (en) 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
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
US7464408B1 (en) * 2003-08-29 2008-12-09 Solidcore Systems, Inc. Damage containment by translation
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
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
US7264067B2 (en) 2003-10-03 2007-09-04 Weatherford/Lamb, Inc. Method of drilling and completing multiple wellbores inside a single caisson
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
FR2862834B1 (fr) * 2003-11-25 2006-03-10 Sagem Procede et dispositif de video-projection
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
US7284617B2 (en) 2004-05-20 2007-10-23 Weatherford/Lamb, Inc. Casing running head
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
JP4669687B2 (ja) * 2004-09-27 2011-04-13 東芝キヤリア株式会社 マイクロコンピュータのデータ記憶方法
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
US7636856B2 (en) * 2004-12-06 2009-12-22 Microsoft Corporation Proactive computer malware protection through dynamic translation
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
GB2424432B (en) 2005-02-28 2010-03-17 Weatherford Lamb Deep water drilling with casing
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
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
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
US8381198B2 (en) 2005-08-15 2013-02-19 Sony Ericsson Mobile Communications Ab Systems, methods and computer program products for safety checking executable application programs in a module
WO2007025279A2 (en) 2005-08-25 2007-03-01 Fortify Software, Inc. Apparatus and method for analyzing and supplementing a program to provide security
JP4997242B2 (ja) * 2005-08-25 2012-08-08 フォーティファイ ソフトウェア, エルエルシー セキュリティを提供するためのプログラムの解析および補完のための装置および方法
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
EP1967981A4 (en) * 2005-12-27 2009-04-22 Nec Corp DEVICE, PROGRAM EXECUTION MONITORING METHOD, AND EXECUTION MONITORING PROGRAM
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
US7857052B2 (en) 2006-05-12 2010-12-28 Weatherford/Lamb, Inc. 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
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
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
JP2008027306A (ja) * 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US20080046724A1 (en) * 2006-07-25 2008-02-21 General Dynamics C4 System, Inc. Method for governing interaction between code within a code base
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US8321936B1 (en) 2007-05-30 2012-11-27 M86 Security, Inc. System and method for malicious software detection in multiple protocols
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
JP2010039913A (ja) * 2008-08-07 2010-02-18 Sony Corp 通信装置、通信方法、及びプログラム
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
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local 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 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
US8973158B2 (en) 2011-07-20 2015-03-03 Microsoft Technology Licensing Llc Trust level activation
CA2844667C (en) * 2011-08-08 2018-07-17 Gennady Slobodsky 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
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated 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
EP3061030A4 (en) 2013-10-24 2017-04-19 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
WO2016162720A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation into native client
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
EP3786826B1 (en) * 2019-08-30 2025-09-17 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
TW202437103A (zh) * 2022-11-02 2024-09-16 日商索尼半導體解決方案公司 應用程式提供裝置、應用程式提供方法及程式

Family Cites Families (22)

* 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 プログラムの不正アドレスアクセス検出方式
JPH0378031A (ja) * 1989-08-22 1991-04-03 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
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
US5983012A (en) 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
US5644709A (en) 1994-04-21 1997-07-01 Wisconsin Alumni Research Foundation Method for detecting computer memory access errors
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
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
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
KR100473022B1 (ko) * 1996-08-09 2005-03-07 사이트릭스 시스템스(리서치 앤 디벨럽먼트) 리미티드 방법 및 장치
US5805829A (en) * 1996-10-01 1998-09-08 International Business Machines Corp Process for running applets over non-IP networks
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3572016B2 (ja) 信頼されないプログラムを実行するための方法
US10685123B2 (en) Method for validating an untrusted native code module
EP2281258B1 (en) Method for safely executing an untrusted native code module on a computing device
Hallaraker et al. Detecting malicious javascript code in mozilla
US8336095B2 (en) User space virtualization system
US8621279B1 (en) System and method for generating emulation-based scenarios for Error Handling
US8595832B1 (en) Masking mechanism that facilitates safely executing untrusted native code
US6834391B2 (en) Method and apparatus for automated native code isolation
Yu Os-level virtualization and its applications
Kato et al. Softwarepot: An encapsulated transferable file system for secure software circulation
van t Noordende et al. A secure jailing system for confining untrusted applications
Golm et al. A Java operating system as the foundation of a secure network operating system
Govindarajan Applications and Enhancements of Featherweight Virtual Machine (FVM)
KR20090093930A (ko) 유저 공간 가상화 시스템
de Bourges Extending SELinux to track memory-pages accesses
Automation et al. Extending .NET Security to Native Code

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