JP3572016B2 - 信頼されないプログラムを実行するための方法 - Google Patents
信頼されないプログラムを実行するための方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
【発明の属する技術分野】
本発明は、電子的データ処理に関し、特に、信頼できないコードを包含する実行可能プログラムからのシステム損傷を回避することに関する。
【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により検出し、当該検出した命令の実行時のリファレンスをブロックするためのチェックコードを前記第1のプログラムの中に前記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)
- メモリおよびインターフェースモジュールを有するパーソナルコンピュータプラットフォームで実行するために書かれた信頼されない第2のプログラムを、CPUを有するコンピュータが実行可能な第1のプログラムに変換して実行するための方法であって、
前記CPUにより前記第2のプログラムに関してメモリの所定境界領域を割り当て、
前記CPUにより前記第2のプログラムを前記メモリの境界領域内にロードし、
当該ロードされた第2のプログラム中の、前記インターフェースモジュールがリンク先となっている命令を前記CPUにより検出し、当該検出した命令のリンク先を、前記インタフェースモジュールから、該命令をブロックするための変換コードモジュールに前記CPUにより置換し、
当該置換が行われた第2のプログラムを第1のプログラムに変換し、
当該変換された第1のプログラムの中の前記メモリ境域以外の領域に対してリファレンスを行う命令を前記CPUにより検出し、当該検出した命令の実行時のリファレンスをブロックするためのチェックコードを前記第1のプログラムの中に前記CPUにより配置し、
前記チェックコードが配置された第1のプログラムを前記CPUにより実行する
ことを特徴とする方法。
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)
| 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)
| 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 |
-
1997
- 1997-08-28 US US08/919,844 patent/US6275938B1/en not_active Expired - Lifetime
-
1998
- 1998-08-25 JP JP2000508048A patent/JP3572016B2/ja not_active Expired - Fee Related
- 1998-08-25 EP EP98941045A patent/EP1021753B1/en not_active Expired - Lifetime
- 1998-08-25 WO PCT/US1998/017553 patent/WO1999010795A1/en not_active Ceased
- 1998-08-25 DE DE69802834T patent/DE69802834T2/de not_active Expired - Lifetime
-
2003
- 2003-11-25 JP JP2003394633A patent/JP4528517B2/ja not_active Expired - Fee Related
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 |