JP4575350B2 - コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法 - Google Patents

コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法 Download PDF

Info

Publication number
JP4575350B2
JP4575350B2 JP2006351470A JP2006351470A JP4575350B2 JP 4575350 B2 JP4575350 B2 JP 4575350B2 JP 2006351470 A JP2006351470 A JP 2006351470A JP 2006351470 A JP2006351470 A JP 2006351470A JP 4575350 B2 JP4575350 B2 JP 4575350B2
Authority
JP
Japan
Prior art keywords
instruction
computer system
instructions
permutation sequence
virtual machine
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.)
Active
Application number
JP2006351470A
Other languages
English (en)
Other versions
JP2007220091A (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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
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
Priority claimed from US11/353,893 external-priority patent/US8694797B2/en
Priority claimed from US11/353,896 external-priority patent/US8041958B2/en
Application filed by Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Publication of JP2007220091A publication Critical patent/JP2007220091A/ja
Application granted granted Critical
Publication of JP4575350B2 publication Critical patent/JP4575350B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、一般的に悪意あるソフトウェアを回避することに係り、特にコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法に関する。
コンピューター・ウィルスのような悪意あるソフトウェアはさまざまな方法でコンピューター・システムに侵入することが可能である。例えば、それらはコンピューター・システムに挿入されることになっているディスクを経由して、あるいはコンピューター・システムのユーザーによって開かれることになっているeメールを経由してコンピューター・システムに侵入することができる。悪意あるソフトウェアはコンピューター・システム内で実行されるといくつかの問題を引き起こす。例えば、コンピューター・セキュリティが危険にさらされるかも知れず、あるいはコンピューター・システム内のファイルが破壊されるかも知れない。
悪意あるソフトウェアのあるタイプは、検索ストリングをスキャンするなどの簡単な検出技術を用いて容易に検出することができる。しかしながらこの検出処理の形式も圧縮や暗号化を経て悪意あるコードを変換することによって容易に覆され、それによりスキャン・フィルターを迂回する。悪意あるソフトウェアを検出するための他の方法は、プログラムの実行中に悪意ある動作を阻止しようとしている間にプログラムを実行することである。動作ブロッキング(behavior blocking)として知られているこの技術は多くの欠点を有している。悪意ある動作を阻止することを試みるにもかかわらず、プログラムはコンピューター・システムに害を引き起こす可能性がある。さらに、動作ブロッキング機構は、通常はブロッキング決定(blocking determination)に当たって動作の全体のログを見ることができない。したがって、動作ブロッキング機構は次善のブロッキング判断を行うかもしれず、それは有害なプログラムが実行を許可されている間に無害なプログラムがブロックされるかもしれないことを意味する。
さらにもう一つの悪意あるソフトウェアを検出するための方法は、コンピューター・システムが疑わしいコードの悪意ある動作から保護されるようにコンピューター・システムの隔離された環境内で疑わしいコードをエミュレートすることである。エミュレーションの一つの欠点は、ウィルスの攻撃からコンピューター・システムを部分的に保護するかも知れないが、コンピューター・システム自体は保護されない。さらに、データが感染を受ける可能性があり、それは隔離した環境において破壊にまで至る。
よって、コンピューター・システム内で悪意あるソフトウェアの実行を防止する改善された方法を提供することは望ましいことである。
本発明の好ましい実施の形態によれば、順列(permutation)がコンピューター・システムにおけるアプリケーション・プログラムの実際の如何なる実行よりも前に並べ替えられた命令のシーケンスをもたらすためにアプリケーション・プログラム内で命令のサブセットについて行われる。並べ替えられた命令のシーケンスの順列シーケンス番号は並べ替えられた命令ポインター・テーブルに格納される。並べ替えられた命令のシーケンスは、並べ替えられた命令ポインター・テーブルに格納された並べ替えられた命令のシーケンスの順列シーケンス番号にしたがって、並べ替えられた命令のシーケンスをコンピューター・システム内のプロセッサーの実際のマシン・コードに翻訳できる実行モジュールにおいて実行される。
また、コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前にアプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすためにアプリケーション・プログラムをクロスコンパイルすることが行われる。コンピューター・システムでプロセッサーの実際のマシン・コードにアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、アプリケーション・プログラムのクロスコンパイルされたコードのセットが実行される。
本発明はコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法を提供する。もしVMM(仮想計算機・マネージャー)が実行されるべき各並べ替えられたアプリケーションのハッシュに関連する順列を維持するならば、サンプリング・アタックでさえも(ここでアプリケーションを並べ替えたサンプルがアタッカーによって何とか入手され、順列が決定され、ウィルスが適用され、そして感染を実行するために送られても)機能しなくなる。
本発明のすべての特徴及び利点は以下の詳細な記述において明らかになるであろう。
好ましい使用の形態、さらにはその目的およびその利点と同様に発明それ自身も添付する図面とともに読む時に具体的な実施の形態の以下の詳細な記述を参照することによって最もよく理解されるであろう。
通常、コンピューター・システム内には命令セットのいくつかのレベルがある。第1の(最も低い)レベルはマシン・レベル命令であり、第2のレベルはオペレーティング・システム・アプリケーション・バイナリー・インターフェース命令である。第2のレベルでは、オペレーティング・システムがマシン・レベル命令をより理解されやすくするためにマシン・レベル命令の一部を抽出したものである。第3のレベルはマクロ・レベル命令であり、アプリケーションがプログラミングの容易さを可能にするためにコンピューター・システムの制御をさらに抽出したものである。
多くの技術が第2及び第3の命令のレベルの保護に向けられて来ていたので、本発明は、特に第1のレベルが多くのコンピューター・ウィルスによって使用されるレベルであるのでもっぱら第1の命令のレベルの保護に向けられる。
一般的にいえば、コンピューター・システム内にプロセッサーのマシン・レベル命令セットを知らないでコンピューター・システム内で実行することができるマシン・レベル・プログラムを書き込むことは、不可能ではないにしても起こり得ないことである。さらに、コンピューター・システムでのソフトウェアのインストールは、インストールされているコンピューター・システムの命令セットを最初に理解するためのソフトウェアを必要とする。したがって、本発明の好ましい実施の形態によれば、アプリケーション・プログラムは、最初にアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換され、アプリケーション・プログラムのクロスコンパイルされたコードのセットは、それからアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識することが可能な実行モジュール内で実行される。
特に図1を参照すると、本発明の好ましい実施の形態にしたがってコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図が示されている。図示されるように、コンピューター・システム10は、変換モジュール11と実行モジュール12を含む。コンピューター・システム10内で実行されることになっている如何なるアプリケーション・プログラムもインストール・プロセスを経る必要がある。インストール・プロセスの間にコンピューター・システム10のユーザーは、アプリケーション・プログラムがコンピューター・システム10内にインストールされるべきか否かを決定することができる。もしユーザーが、アプリケーション・プログラムがコンピューター・システム10内にインストールされるべきであると判断した場合は、アプリケーション・プログラムは次に変換モジュール11に送られ、そこでアプリケーション・プログラムはアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換される。アプリケーション・プログラムのクロスコンパイルされたコードのセットは、その後アプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、実際のプロセッサーのマシン・コードに変換することが可能な実行モジュール12内で実行される。
インストール・プロセスを経ることなく、アプリケーション・プログラムが実行モジュール12によって実行されることはないであろう。例えば、不正なパス15に示されるように、たとえウィルス・プログラムがユーザーの検出の下で密かに入り込み、ユーザーの認識なしにコンピューター・システム10内に存在したとしても、ウィルス・プログラムはインストール・プロセスを経ていないので実行モジュール12によってまだ実行されない。そのため、コンピューター・システム10はウィルス・プログラムによってもたらされるかも知れない潜在的な害から安全である。
実際、変換モジュール11と実行モジュール12は相互から独立しているべきである。事実上、実行モジュール12は変換モジュール11以外の如何なるソースからもコードを受け入れることを防止されるべきである。
ところで図2を参照すると、本発明の好ましい実施の形態が組み込まれたコンピューティング環境のブロック・ダイアグラムが図示されている。図示されているように、コンピューター・システム20は、ハードウェア構造21、仮想計算機・マネージャー(VMM)あるいはハイパーバイザー22及び仮想計算機23a―23bを含む。仮想計算機23a及び23bは、好ましくは仮想計算機23a内での如何なる実行も仮想計算機23bから独立し、あるいはその逆もまた同様になるように分離された区画に設置されている。VMM22は仮想計算機23a及び23bの間のすべての通信を制御する。さらに、VMM22はハードウェア構造21と直接通信することができる。ハードウェア構造21は、プロセッサー、レジスター、メモリー管理装置、メモリー素子、入出力装置などの既知の構造を含む。
オペレーティング・システムと複数のアプリケーション・プログラムが仮想計算機23a―23bのそれぞれの中で同時に実行されることが可能である。例えば、オペレーティング・システム24及びアプリケーション・プログラム25は仮想計算機23aで実行され、一方、オペレーティング・システム26及びアプリケーション・プログラム27は仮想計算機23bで実行される。
必要とはされないが、オペレーティング・システム24はオペレーティング・システム26と異なる場合がある。例えば、オペレーティング・システム24はオープン・ソースのLinuxオペレーティング・システムであり、一方オペレーティング・システム26はMicrosoft Corporationによって作成されたWindows(登録商標)オペレーティング・システムであることも可能である。同様に、仮想計算機23aによってエミュレートされた基本となるプロセッサーもまた仮想計算機23bによってエミュレートされた基本となるプロセッサーと異なる場合がある。例えば、仮想計算機23aによってエミュレートされた基本となるプロセッサーがIntel Corporationによって作成されたPentium(登録商標)プロセッサーであり、一方仮想計算機23bによってエミュレートされた基本となるプロセッサーがInternational Business Machines Corporationによって作成されたPowerPC(登録商標)プロセッサーであることも可能である。
仮想計算機23a―23bのそれぞれは、そのオペレーティング・システム及び関連したアプリケーション・プログラムを含んでいるが、ユーザー・レベルで作動する。VMM22が直接実行を使用する場合、VMM22は、仮想計算機23a―23bのどちらもがハードウェア構造21の動作を制御する各種の特権を与えられたレジスターに直接アクセスできないように、いわゆるユーザー・モード(即ち、制限された特権)に設定される。むしろ、すべての特権命令はVMM22にトラップされるであろう。
図2において、仮想計算機23aはアプリケーション・プログラムの初期のクロスコンパイルを行うためのクロスコンパイラー28を含むことが図示されており、さらに仮想計算機23bはクロスコンパイルされたコードを実行するための実行モジュール29を含むことが図示されている。クロスコンパイルは好ましくは順列アルゴリズムを経由して行われ、その結果は並べ替えられた命令ポインター・テーブル30に格納される。並べ替えられた命令ポインター・テーブル30は複数の順列シーケンスのエントリーを含む。順列シーケンスのそれぞれはアプリケーション・プログラムのクロスコンパイルされたコードのセットに関連している。並べ替えられた命令ポインター・テーブル30内のすべての順列シーケンスは、相互に異なるべきである必要はないが、互いに異なる傾向にある。図2において、並べ替えられた命令ポインター・テーブル30はVMM22内に設置されるように図示されているが、並べ替えられた命令ポインター・テーブル30が仮想計算機23bによってアクセスされることができるならば仮想計算機23a内に設置されることも可能である。
順列を実行する典型的な方法は以下の通りである。最初に、命令のサブセット、nが順列の目的のために命令のグループから選択される。すべての命令の順列が等しく有用であるとは限らない。例えば、識別(ID)命令の順列はまったく役に立たない。したがって、ある種のマシン命令(例えばJUMP命令など)が重要な命令として識別されて、並べ替えられるであろう総ての重要な命令を確実にする。
順列を生成するためにはいくつかの方法がある。一つの方法は、データ・セグメント中のそれぞれの命令が異なるマッピングを有するような機能に基づいたハッシュあるいは暗号化を利用することである。即ち、マッピングはH(A)、H(A)、・・・、H(A)であって、ここでHは機能に基づくハッシュ、Aは命令である。機能に基づくハッシュあるいは暗号化の使用に伴う問題は、一般的なコンパイルの観点からは、同じ命令が異なるハッシュの結果をもたらすかも知れないことである。例えば、命令Aと命令Aとは同じ命令かも知れないが、H(A)は必ずしもH(A)とは同じではない。
他の方法は異なるマッピング機能であるP(A)を利用することである。ここでPは順列であり、Aは命令であるが、P(A)はP(A)、P(A)、・・・P(A)を生成する。この方法は、P(J)が、ここでJは与えられた命令であるが、コード・セグメント中のどこに生じても同じであるべきなので、より予測可能なクロスコンパイル結果をもたらす。
順列シーケンスは命令のサブセットであるnが並べ替えられるか変換されるかという方法を指示する。各順列シーケンスは複数のスロットを有するエントリーとして見なすことができ、各スロットは命令番号で満たされることになっている。r番目の順列シーケンスを発生させるために、0とn!−1の間の乱数が最初に選択される。例えば、並べ替えられるのに必要な命令のサブセットであるnが5の場合(これは5!=120の順列シーケンスを意味するが)、乱数101が101番目の順列シーケンスとして0と5!−1の間で選択される。
最初の命令番号のスロット位置であるPosは(n−1)!によって除された選択された乱数rの商によって表され、以下の通りである。
Figure 0004575350
分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるPosの決定のために選択された乱数rを置き換える。各決定に対して、分母(n−1)!のnは一つずつ減らされる。
このようにして、選択された乱数101に対して、第1の命令番号のスロット位置は、図3aに示されるように101/(5−1)!=4である。101/(5−1)!の余りは5であり、第2の命令番号のスロット位置は、図3bに示されるように5/(4−1)!=0である。5/(4−1)!の余りは5であり、第3の命令番号のスロット位置は、図3cに示されるように5/(3−1)!=2である。5/(3−1)!の余りは1であり、第4の命令番号のスロット位置は、図3dに示されるように1/(2−1)!=1である。第5の命令番号は、図3eに示されるように残りの開いているスロット位置になる。
順列シーケンス「25431」(図3eより)は、次に101番目の順列シーケンスに対するエントリーとして並べ替えられた命令ポインター・テーブル30(図2より)に入力される。アプリケーション・プログラムは、101番目の順列シーケンスにしたがってクロスコンパイラー28(図2より)を経由してクロスコンパイルされたコードのセットに並べ替えられる。実行中には、クロスコンパイルされたコードのセットは、並べ替えられた命令ポインター・テーブル30に格納された101番目の順列シーケンスにしたがって実行モジュール29(図2より)を経由して実行される。
例えば、並べ替えられるものとして選択された5つの命令がADD、SUBTRACT、JUMP、BRANCH及びSTOREであるならば、これらの命令の各々は、即ち、命令番号1はADD、命令番号2はSUBTRACT、命令番号3はJUMP、命令番号4はBRANCH、命令番号5はSTOREというように一つの命令番号が割り当てられる。101番目の順列シーケンスが図2のクロスコンパイラー28内でアプリケーション・プログラムのクロスコンパイルを行うために利用される時、アプリケーション・プログラムでの上記5つの命令の各出現は、順列シーケンス「25431」にしたがって変換される。換言すれば、アプリケーション・プログラムでのそれぞれのADD命令はSUBTRACT命令に変換され、アプリケーション・プログラムでのそれぞれのSUBTRACT命令はSTORE命令に変換され、アプリケーション・プログラムでのそれぞれのJUMP命令はBRANCH命令に変換され、アプリケーション・プログラムでのそれぞれのBRANCH命令はJUMP命令に変換され、そしてアプリケーション・プログラムでのそれぞれのSTORE命令はADD命令に変換される。上記変換の逆のことがアプリケーション・プログラムのクロスコンパイルされたコードの実行中に図2の実行モジュール29内で行われる。
順列は静的なあるいは動的などちらの方法でも行うことが可能である。もし順列が静的な方法で行われるならば、コンピューター・システムのグループが同じ順列シーケンスを使用するように設定される。そのような実務は、各アプリケーション・プログラムのクロスコンパイルがインストール中に一度だけ実行されることを必要とされるので、情報技術管理者にとってより簡便であろう。
もし順列が動的な方法で行われるとするならば、いくつかの選択がある。順列シーケンスのセットは周期的に変更することができる。それらの順列に対するクロスコンパイルは一度だけ実行されることが可能であり、その上コンピューター・システムがブートされるたびに、実際に使用に当たって順列シーケンスに基づいてクロスコンパイルされたプログラムの異なるセットを実行することができる。さらに、順列シーケンスはコンピューター・システムがブートされるたびに不規則に変更することができる。そのような場合、クロスコンパイルは、コンピューター・システム上で動作するクロスコンパイラーによって「オンザフライ(直接処理)」で行われなければならないであろう。
さらに、順列シーケンスは各アプリケーション・プログラムに対しても変更されることが可能で、その変更は異なる方法により実施することができる。最も単純な実施は、ストリーミング暗号化アルゴリズムに対するキーとしてアプリケーションの署名ハッシュをVMMに使用させることで、それによってそのアプリケーション・プログラムのための固有の命令セットを発生させることである。如何なる変更されたアプリケーション・プログラムも(バッファー・オーバーフローを引き起こすウィルスによって主記憶装置内で変更されるように)異なる命令セットを発生し始めるであろう。
もう一つの方法として、アプリケーション・プログラムが読み込まれるたびにVMMが乱数を発生させ、アプリケーション・プログラムのコード・セグメントがストリーミング暗号化あるいはクロスコンパイルを変更するためのハッシュ(可逆的である必要のない)エンジンを経て実行される。この方法は、P(A)関数がP(A)なる一定の関数になり、予測不可能な状態が維持されるという点でセキュリティーの別のレベルを提供する。
本発明は完全に機能的なコンピューター・システムの状況において記述されているが、本発明のメカニズムがさまざまな形態においてプログラム製品として頒布されることが可能で、しかも本発明は実際に頒布を実施するために利用される信号搬送媒体(signal bearing media)の特定のタイプにかかわらず等しく適合することを当業者が高く評価するということに注目することもまた重要である。信号搬送媒体の例は、制限なく、フロッピー・ディスクやコンパクト・ディスクのような記録型媒体やアナログあるいはデジタル通信リンクのような伝送型媒体を含む。
発明が特に好ましい実施の形態を参照して図示及び記述されているが、形式及び詳細についてのさまざまな変更が発明の精神及び範囲から外れることなく行われることが当業者によって理解されるであろう。
本発明の好ましい実施の形態に基づくコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図である。 本発明の好ましい実施の形態が組み込まれたコンピューター環境のブロック・ダイアグラムである。 本発明の好ましい実施の形態にしたがって命令において並べ替えられているシーケンスを表したものである。
符号の説明
10、20 コンピューター・システム
11 変換モジュール
12、29 実行モジュール
21 ハードウェア構造
22 仮想計算機・マネージャー
23a、23b 仮想計算機
24、26 オペレーティング・システム
25、27 アプリケーション・プログラム
28 クロスコンパイラー
30 並べ替えられた命令ポインター・テーブル

Claims (6)

  1. コンピューター・システム内でウィルス・プログラムの実行を防止するための方法であって、
    前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第1の仮想計算機により下記式
    Figure 0004575350
    (Pos;命令番号のスロット位置、n;命令のサブセット、r;順列シーケンス番号)
    を用い、最初の命令番号のスロット位置であるPosは(n−1)!によって除された選択された乱数rの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるPosの決定のために選択された乱数rを置き換え、各決定に対して、分母(n−1)!のnは一つずつ減らされることにより順列を行うステップと、
    前記命令の順列シーケンス番号を命令ポインター・テーブルに格納するステップと、
    前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の第2の仮想計算機の実行モジュールにおいて実行するステップとからなり、
    前記第1及び第2の仮想計算機は前記コンピューター・システム内の仮想計算機・マネージャーにより制御されるステップとからなる方法。
  2. 前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるステップからなる請求項1記載の方法。
  3. コンピューター・システム内でウィルス・プログラムの実行を防止するためのコンピューター・プログラムを記録したコンピューターに読み取り可能な記録型媒体であって、
    前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第1の仮想計算機により下記式
    Figure 0004575350
    (Pos;命令番号のスロット位置、n;命令のサブセット、r;順列シーケンス番号)
    を用い、最初の命令番号のスロット位置であるPosは(n−1)!によって除された選択された乱数rの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるPosの決定のために選択された乱数rを置き換え、各決定に対して、分母(n−1)!のnは一つずつ減らされることにより順列を行うためのプログラム・コードと、
    前記命令の順列シーケンス番号を命令ポインター・テーブルに格納するためのプログラム・コードと、
    前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の第2の仮想計算機の実行モジュールにおいて実行するためのプログラム・コードとからなり、
    前記第1及び第2の仮想計算機は前記コンピューター・システム内の仮想計算機・マネージャーにより制御されるプログラム・コードを含む記録型媒体。
  4. 前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるためのプログラム・コードを含む請求項記載の記録型媒体。
  5. ウィルス・プログラムの実行を防止することができるコンピューター・システムであって、
    前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第1の仮想計算機により下記式
    Figure 0004575350
    (Pos;命令番号のスロット位置、n;命令のサブセット、r;順列シーケンス番号)
    を用い、最初の命令番号のスロット位置であるPosは(n−1)!によって除された選択された乱数rの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるPosの決定のために選択された乱数rを置き換え、各決定に対して、分母(n−1)!のnは一つずつ減らされることにより順列を行うための手段と、
    前記命令の順列シーケンス番号を格納するための命令ポインター・テーブルと、
    前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスを前記コンピューター・システム内でプロセッサーの実際のマシン・コードに翻訳できる第2の仮想計算機の実行モジュールにおいて実行するための手段と、
    前記第1及び第2の仮想計算機を制御するための仮想計算機・マネージャーとからなるコンピューター・システム。
  6. 前記第1の仮想計算機でのオペレーティング・システムは前記第2の仮想計算機でのオペレーティング・システムと異なっている請求項記載のコンピューター・システム。
JP2006351470A 2006-02-14 2006-12-27 コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法 Active JP4575350B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/353,893 US8694797B2 (en) 2006-02-14 2006-02-14 Method for preventing malicious software from execution within a computer system
US11/353,896 US8041958B2 (en) 2006-02-14 2006-02-14 Method for preventing malicious software from execution within a computer system

Publications (2)

Publication Number Publication Date
JP2007220091A JP2007220091A (ja) 2007-08-30
JP4575350B2 true JP4575350B2 (ja) 2010-11-04

Family

ID=37908644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006351470A Active JP4575350B2 (ja) 2006-02-14 2006-12-27 コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法

Country Status (5)

Country Link
JP (1) JP4575350B2 (ja)
DE (1) DE102007005887B4 (ja)
FR (1) FR2897452B1 (ja)
GB (1) GB2436442B (ja)
SG (1) SG135173A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3281104B1 (en) * 2015-04-07 2024-01-24 Runsafe Security, Inc. System and method of obfuscation through binary and memory diversity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056966A (ja) * 1998-08-07 2000-02-25 Nippon Telegr & Teleph Corp <Ntt> マイクロプロセッサシステムおよびマイクロプロセッサ動作解析防止方法
JP2005085188A (ja) * 2003-09-11 2005-03-31 Fujitsu Ltd プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置
JP2005532622A (ja) * 2002-07-08 2005-10-27 ジェムプリュス 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4042280B2 (ja) * 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7493483B2 (en) 2004-02-19 2009-02-17 International Business Machines Corporation Method to prevent vulnerability to virus and worm attacks through instruction remapping

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056966A (ja) * 1998-08-07 2000-02-25 Nippon Telegr & Teleph Corp <Ntt> マイクロプロセッサシステムおよびマイクロプロセッサ動作解析防止方法
JP2005532622A (ja) * 2002-07-08 2005-10-27 ジェムプリュス 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
JP2005085188A (ja) * 2003-09-11 2005-03-31 Fujitsu Ltd プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置

Also Published As

Publication number Publication date
FR2897452B1 (fr) 2016-12-09
GB0702890D0 (en) 2007-03-28
DE102007005887B4 (de) 2019-06-13
DE102007005887A1 (de) 2007-08-30
IE20080383A1 (en) 2008-08-20
GB2436442B (en) 2008-04-16
GB2436442A (en) 2007-09-26
SG135173A1 (en) 2007-09-28
FR2897452A1 (fr) 2007-08-17
JP2007220091A (ja) 2007-08-30
IE20070090A1 (en) 2007-09-19

Similar Documents

Publication Publication Date Title
US8041958B2 (en) Method for preventing malicious software from execution within a computer system
US8694797B2 (en) Method for preventing malicious software from execution within a computer system
US7603704B2 (en) Secure execution of a computer program using a code cache
US7594111B2 (en) Secure execution of a computer program
EP1800434B1 (en) Proactive computer malware protection through dynamic translation
JP4629796B2 (ja) 限定的プロセスでのファイル変換
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US8590041B2 (en) Application sandboxing using a dynamic optimization framework
Saxena et al. Efficient fine-grained binary instrumentationwith applications to taint-tracking
US7251735B2 (en) Buffer overflow protection and prevention
Li et al. Zipper stack: Shadow stacks without shadow
Arthur et al. Getting in control of your control flow with control-data isolation
US10885184B1 (en) Rearranging executables in memory to prevent rop attacks
JP4575350B2 (ja) コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法
Parida et al. PageDumper: a mechanism to collect page table manipulation information at run-time
Yamiun et al. Detecting windows based exploit chains by means of event correlation and process monitoring
Kumar et al. Protection against buffer overflow attacks through runtime memory layout randomization
Geden et al. RegGuard: Leveraging CPU registers for mitigation of control-and data-oriented attacks
Davi et al. Building control-flow integrity defenses
Kisore et al. FFRR: a software diversity technique for defending against buffer overflow attacks
Wadhwani JavaScript Metamorphic Malware Detection Using Machine Learning Techniques
GB2443764A (en) Preventing malicious software from execution within a computer system
Taki et al. Experiments on ROP Attack with Various Instruction Set Architectures
Fournaris et al. VirISA: Recruiting Virtualization and Reconfigurable Processor ISA for Malicious Code Injection Protection
IE85016B1 (en) Method for preventing malicious software from execution within a computer system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100726

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100819

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4575350

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250