JP6317646B2 - 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体 - Google Patents

情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体 Download PDF

Info

Publication number
JP6317646B2
JP6317646B2 JP2014166326A JP2014166326A JP6317646B2 JP 6317646 B2 JP6317646 B2 JP 6317646B2 JP 2014166326 A JP2014166326 A JP 2014166326A JP 2014166326 A JP2014166326 A JP 2014166326A JP 6317646 B2 JP6317646 B2 JP 6317646B2
Authority
JP
Japan
Prior art keywords
area
dynamic memory
processing
program
content data
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
JP2014166326A
Other languages
English (en)
Other versions
JP2016042318A (ja
Inventor
杉中順子
Original Assignee
杉中 順子
杉中 順子
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 杉中 順子, 杉中 順子 filed Critical 杉中 順子
Priority to JP2014166326A priority Critical patent/JP6317646B2/ja
Publication of JP2016042318A publication Critical patent/JP2016042318A/ja
Application granted granted Critical
Publication of JP6317646B2 publication Critical patent/JP6317646B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、プロセッサが実行する情報処理動作を監視し、不正プログラムの実行を防止する技術に関する。
昨今、不正かつ有害な動作を行う意図で作成された悪意のあるプログラム(以下、不正プログラム)によるファイルの書き換えやシステムの設定変更等によってコンピュータのセキュリティーが大きく損われている。不正プログラムは、通信ネットワークを経由して外部からコンピュータ内のメモリに侵入する。不正プログラムは種々の種類のプログラムやファイルを含み、コンピュータユーザにとって様々な不利益な処理を引き起こす。今日、不正プログラムの実行を監視し、不正動作を規制する各種の対応ソフトウェアが提案されている。
特許文献1には、ウェブサイトから受信した、ジャバスクリプトコードを含むPDFネットワークコンテンツが悪意を有するか否かを検査するシステムが記載されている。すなわち、特許文献1に記載された検査システムは、ネットワークからジャバスクリプトコードを含むPDFネットワークコンテンツをインターセプトする構成のデータアクセスコンポーネントを備え、インターセプトした、ジャバスクリプトコードを含むPDFネットワークコンテンツの少なくとも一部に悪意あるネットワークコンテンツを示す少なくとも1つの不審性が含まれているかを判断すべく、当該PDFネットワークコンテンツの少なくとも一部についてまず検査を行い、不審性が含まれていると判断された場合には、当該PDFネットワークコンテンツの少なくとも一部に悪意あるネットワークコンテンツが含まれているかを検証すべく、当該PDFネットワークコンテンツの少なくとも一部を検証用の仮想マシンに提供するようにしたものである。
特表2014−504765号公報
しかしながら、特許文献1に記載された検査システムは、ウェブサーバからクライアント装置へ送信されるPDFネットワークコンテンツを通信ネットワーク途中でインターセプトして、その適否を検出するものであり、クライアント装置で対応するものではない。しかも、不審性のあると判断したものを、検査システム内に別途用意した仮想マシンで実際に試験動作させて検出するものであり、受信したPDFネットワークコンテンツに対するクライアント装置側でのリアルタイム処理に不正防止対応できるものではない。また、不審性の判断もジャバスクリプトという文字を含むかどうかとか、経験則を用いて判断したりするものに過ぎない。さらに、ウェブサーバからブラウズしたコンテンツに対する情報処理を、動的メモリを逐次確保して行う特異な処理の中で、リアルタイムに不審性の有無の検査を行うものでもない。
本発明は、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータに不正プログラムが埋め込まれていても、その実行を未然に防止する情報処理装置、不正プログラム実行防止方法、プログラム、及び記録媒体を提供することにある。
本発明に係る情報処理装置は、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記デジタルコンテンツデータに対する処理を行う情報処理装置において、前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段と、前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段と、検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段とを備えたものである。
また、本発明に係る不正プログラム実行防止方法は、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記デジタルコンテンツデータに対する処理を行う情報処理装置の前記処理を監視する不正プログラム実行防止方法において、前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフックステップと、前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理ステップと、検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理ステップとを備えたものである。
また、本発明にかかるプログラムは スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記デジタルコンテンツデータに対する処理を行う情報処理装置の前記処理を監視するプログラムにおいて、前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段、前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段、及び、検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段として前記情報処理装置を機能させるものである。
また、本発明に係るコンピュータ読み取り可能な記録媒体は、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記デジタルコンテンツデータに対する処理を行う情報処理装置の前記処理を監視するコンピュータ読み取り可能な記録媒体において、前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段、前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段、及び、検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段として前記情報処理装置を機能させるプログラムを記録したものである。
これらの発明によれば、スクリプト言語、例えばジャバスクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータが、例えばブラウズされて、仮想メモリに展開される。次いで、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムのロードが行われ、前記コンテンツデータに対する処理が可能となる。そして、前記動的メモリ確保用のアルゴリズムの実行の命令が発行されると、この命令がフック手段によってフックされ、フックの度に、その直前の動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容が検査処理手段によって検査、すなわち、検査対象データが取得されて、分析される。この検査の結果、当該アドレスの領域内にNOPコードに代表される所定の不作為コードがスプレイされたと判断可能なデータ量、すなわち所定の閾値を超えて存在している場合、前記コンテンツデータに不正プログラムが仕込まれている可能性があるとして、終了処理手段によって当該コンテンツデータは好ましくは消去されて、その処理の実行が終了される。
このように、動的メモリを確保するためのプログラム(アルゴリズム)に不正プログラムが仕込まれている可能性があると判断した場合に、該当するデータを好ましくは消去し、そのデータに対する処理の実行を阻止することで、不正プログラムの実行が未然に防がれる。
また、前記終了処理手段は、前記仮想メモリに展開した前記コンテンツデータを消去することを特徴とするものである。この構成によれば、不正プログラムが仕込まれている可能性のあるデータ自体を消去することで、その実行が確実に防がれる。
また、本発明は、前記スクリプト言語で記述された動的メモリ確保用のアルゴリズムを周期的に実行させて、前記ヒープ領域内の順次異なる領域に、前記所定の不作為コードとしてのNOP(NO OPERATION)コードをスプレイするヒープスプレイ処理手段を含むものである。この構成によれば、不正動作を阻止するためのヒープスプレイ処理に対して不正プログラムが組み込まれても、不正動作の実行が未然に防がれる。
また、本発明は、仮想マシンの動作を監視する仮想マシンモニタを含み、前記検査処理手段及び前記終了処理手段は、前記仮想マシンモニタに備えられ、前記検査処理手段は、前記動的メモリ確保用のアルゴリズムの実行の命令が前記仮想マシンから発行される時点で制御を前記仮想マシンモニタに遷移させるものである。この構成によれば、仮想マシンモニタ機能を応用することで、不正プログラムの実行が未然に防がれる。
本発明によれば、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータに不正プログラムが埋め込まれていても、その実行を未然に防止することができる。
本発明に係る情報処理装置の一実施形態を示す構成図である。 図1の情報処理装置が仮想マシンに適用された場合の機能構成図の一例である。 ブラウザが関連するメモリマップの図で、(a)はHDDのメモリマップ、(b)はHDDからRAMの仮想メモリ空間に展開された状態のメモリマップである。 未使用領域に対する動的メモリの確保処理と不正動作との関連を説明するための仮想メモリ空間の図である。 仮想マシンモニタが実行する監視ソフトウェアの一例を示す機能構成図である。 起動処理の一例を示すフローチャートである。 監視処理の一例を示すフローチャートである。
図1は、本発明に係る情報処理装置の一実施形態を示す構成図である。本発明が適用される情報処理装置1としては、コンピュータを内蔵するサーバ装置、汎用パーソナルコンピュータ、携行用の情報処理端末等、好ましくはネットワークを介して通信する機能を備えた各種の情報処理装置を含む。
情報処理装置1は、マイクロコンピュータで構成され、プロセッサとしてのCPU(Central Processing Unit)11を含むチップセットとしてのハードウェア部(HW)10を備える。CPU11は、バスBAを介してフラッシュROM(Read Only Memory)21とハードディスクドライブ(HDD)22とを含む補助記憶装置20、RAM(Random Access Memory)30、入力部40、表示部50、及び通信部60と接続されている。
フラッシュROM21は、BIOS(Basic Input/Output System)を格納する。HDD22は、情報作成及び情報処理等を行うOS(Operating System)や、ブラウザの1つであるインターネットエクスプローラ(IE)のプログラムの他、必要なAP(Application Program)等の各種プログラム及び必要なデータ類を格納する。本実施形態では、情報処理装置1を仮想マシンに適用した例で説明する。HDD22に格納される各種プログラムは、図2に示すように、ハードウェア部(HW)10と、RAM30に読み出(ロード)されたソフトウェア(SW)とを備える仮想マシン環境を構築するのに必要な各プログラム及びデータを含む。詳細は図2において説明する。
RAM30は、情報処理装置1が起動する際に補助記憶装置20に格納されているプログラム等がロードされると共に、処理途中の情報が一時的に格納される。RAM30は、仮想メモリ空間及び物理メモリ空間として機能する。情報処理装置1は、補助記憶装置20に格納されているプログラム等がRAM30にロードされ、CPU11によって実行されることで各種の処理実行部として機能する。
入力部40は、テンキー等を備えたキーボードやマウス、タッチパネル等を含み、所要の情報の入力や処理の指示を行うものである。表示部50は、液晶表示パネル等から構成され、入力した内容、処理画像、さらには外部から受信した画像を適宜表示し得るものである。
通信部60は、有線で、又は無線を介して、通信ネットワーク、典型的にはインターネット70に接続され、複数の他の情報処理装置80及び複数のウェブサーバ90との間で必要な情報の授受を行う。通信部60は、ブラウザ機能を利用してウェブサーバ90のウェブページからデジタルコンテンツデータを取得する。なお、ウェブサーバ90には、特定乃至は不特定の者が作成した各種のウェブページが、その所在地であるURL(UniformResource Locator )に対応して設定されている。デジタルコンテンツデータは、ウェブページを記述するためのマークアップ言語であるHTML(Hyper Text Markup Language)で作成されると共に、典型的には、動画その他の高度な演出表示を実行させるジャバスクリプト(Java Script:登録商標)のアルゴリズムが埋め込まれている。
図2は、情報処理装置1が仮想マシンに適用された場合の機能構成図の一例を示すもので、CPU11を含むハードウェア部(HW)10と、RAM30にロードされたソフトウェア部(SW)とで構成されている。
ハードウェア部10は、プロセッサとしてのCPU11の他、仮想化支援技術(VT)12と、RAM(Random Access Memory)等から構成される仮想マシン毎の制御機構であるVMCS(Virtual Machine Control Structure)13と、RAMからなるEPT(Extended Page Table)14とを備える。また、ハードウェア部10は、各種の環境設定値が設定されるレジスタ群111を有する。CPU11は、レジスタ群111の環境設定値を参照しながら、発行された指令に基づいた動作を実行する。
ソフトウェア部(SW)は、1つ以上のゲストOS(ゲストソフトウェア)である仮想マシンVM31と、ホストOS(ホストソフトウェア)である仮想マシンモニタVMM32とを備える。なお、図2では仮想マシンVM、VM−2のように2つ示しているが、以降では仮想マシンVM31を代表にして説明する。VM31は、ゲストソフトウェアとして、オペレーティングシステムOS(主にカーネル(Kernel))、及びこのカーネルの環境下で動作する、前述したインターネットエクスプローラ等の各種のアプリケーションプログラムを含む。
ホストソフトウェアであるVMM32は、補助記憶装置20内のHDD22に格納されており、情報処理装置1の起動を受けてHDD22からRAM30の所定領域にロードされる。VMM32には、本発明に係る監視ソフトウェア(図5参照)が含まれ、VMM32のロードに併せてロードされる。仮想マシンであるVM31のゲストソフトウェアは、ロードされたVMM32が起動されて、それらの管理下でRAM30の所定領域にロードされる。VM31のロード時には、VM31のゲストソフトウェアを動作させるためのGDT(Global Descriptor Table)、IDT(InterruptDescriptor Table)、さらにGDTからのリニアアドレスを物理アドレスに変換するPTE(Page Table Entry)等を含むシステムテーブル310が作成される。
VMM32は、RAM30にロードされたMBR(Master Boot Record)によってRAM30にロードされる際に、環境設定され、次いで、カーネル等のロードの指示、及びそのロード処理の監視を行う。上記において、VMM32は、基本的には、RAM30の所定領域にロードされる際に自己のシステムテーブルを作成し、そのうちのGDTやPTE(いずれも図示せず)に高い特権レベル0(リング0)の設定を行う。また、VMM32は、通常と同様に、すなわちカーネルを特権レベル0(リング0)でロードさせ、AP及びdll(dynamic link library)を特権レベル3(リング3)でロードさせる。そして、dllで作成された、リソースへのデータ書込等の処理要求の際の特権レベル0でのカーネルに対して発行される命令をSyscallという。なお、dllとは、各APからカーネルへのアクセスを実行するための関数であるAPI(Application Programming Interface)の動的なリストであるダイナミックリンクライブラリをいう。APIとは、複数のプログラムが共通に利用できる種々の機能(ソフトウェア)の呼び出し時の手順やデータ形式などを定めた仕様をいう。dllとは、モジュール化して実装されたAPIを、動的なリンクによって実行時にプログラムの結合を行うようにした共有ライブラリをいい、必用に応じてアドインによって追加可能である。
VMM32は、後述する各種の機能を実行するソフトウェア及びデータ類を備え、レジスタ群111及びVMCS13のデータ領域を利用してVM31の動作を制御する。一般的には、VMM32は、(1)ゲストソフトウェアをVM31として実行するモードへの遷移プログラム(及び復帰プログラム)の設定、(2)CPU11の制御をVMM32に渡してVMXrootモードとするExit命令、逆にCPU11の制御をVM31に渡してVMXnon−rootモードとするEntry命令をVT12にセットする処理、(3)VM31が実行する各種のゲストソフトウェア中のフォールトイベント、その他の例外や割込対象となる命令等をそれぞれフック対象とするためのデータのレジスタ群111への設定、(4)レジスタ群111に書き込まれるVMM32、VM31動作時のレジスタ内容(状態を表すフラグや値)及びVM31動作時の物理アドレス−物理アドレスの変換テーブル内容であってEPT14に書き込まれる内容を、VMXrootモードとVMXnon−rootモードとの切り替え毎に、VMCS13内の対応する領域にセーブとロード(なお、ロードとはCPU11のレジスタ群111等への書き込み)とを行わせるプログラムの処理、(5)VM31の動作中にVMCS13による、前記(3)で設定した各命令の発行の有無の監視機能のVT12への設定を行う機能を備える。
VMCS13は、Entry/Exit 時のレジスタ群111、EPT14等の内容を保持したり、振る舞いを制御したりするためのデータ構造体である。VMCS13内のゲスト側のリスト131には、前記(3)で設定した内容、すなわちExit原因に該当する照合用データが、好ましくは全て設定されている。Exit原因としては、各種の例外、割込、無効オペコード違反の発生等がある。本実施形態では、RAM30の仮想メモリへの動的メモリの確保要求を発行する特権リング0でのアクセスであるSyscall命令は、無効オペコード違反(Invalid Opcode Fault)として設定され、フック対象としている。この設定は、レジスタ群111のMSR(Model Specific Register)の内、Syscall命令に関するレジスタに対してdisableのフック条件設定を行うことで可能である。VMM32は、VM31のカーネルをリング0として動作させているため、特権命令は例外とならないことから、VMM32のExit機能を利用してフック対象としている。
VMM32は、Syscall命令が発行されると、これを無効オペコード違反としてフックし、この無効オペコード違反がVMCS13のリスト131に設定されている結果、VT12の監視ロジックによる照合によって、CPU11にExit命令を発行するようにし、CPU11の制御がVMXrootモードに遷移するようにしている。VT12は、VMM32が実行可能なハードウェアで構成された仮想化支援技術であり、Exit命令を受けた時点のVM31の状態、例えばExitの原因となった無効オペコード違反の内容をVMCS13にセーブする。
次に、図3は、ブラウザが関連するメモリマップの図で、(a)はHDD22のメモリマップ、(b)はHDD22からRAM30の一部に設定された仮想メモリ空間310に展開された状態のデジタルコンテンツデータのメモリマップである。図4は、図3(b)に対応する図で、未使用領域に対する動的メモリの確保処理と不正動作との関連を説明するための図である。
以下、本発明が関係するブラウザについて説明する。なお、本実施形態において例示するブラウザは、例えばマイクロソフト社のインターネットエクスプローラ(登録商標)等のいわゆるウェブブラウザであり、HTTP(Hyper Text Transfer Protocol )等のインターネットプロトコルを利用してウェブサイトにアクセスし、HTML等の言語によって記述された文書データや画像データなどのデジタルコンテンツデータを取得し、表示部50に表示させる処理を行うものである。
より具体的には、VM31は、ブラウザによってウェブサーバ90のウェブサイトにURLを指定してアクセス要求を行い、該当するデジタルコンテンツデータの抽出を行って、リクエスト元であるVM31への送信を行わせる。デジタルコンテンツデータは、HDD22のインターネット一時フォルダ222にキャッシュされ、保存される。
デジタルコンテンツデータには、動画演出等を可能にする、解析エンジンとしてのジャバスクリプトのアルゴリズム(プログラム)が埋め込まれている。デジタルコンテンツデータは、インターネット一時フォルダ222からRAM30内の所定の領域となる(リニアアドレスで定義されている)仮想メモリ空間310に読み出される(展開される)ことで、表示部50への表示が行われる。
図3(b)に例示する仮想メモリ空間310は、例えばアドレス0x000000を基準とした所定サイズの、例えば4Gbyteを有する。仮想メモリ空間310は、アドレス0x000000から順番に、スタック領域311、実行コード領域312、ヒープ領域313、データ領域314、ヒープ領域315、及びカーネル領域316を含む。スタック領域311は、実行プログラムが内部的にデータを保存しておく必要がある場合に用いられるもので、プロセスに実行に伴って矢印に示すようにスタックデータが蓄積される。実行コード領域312は、データ領域314に格納された画像データを表示するための各プログラムを格納するものである。
なお、例えば、スタック領域311からヒープ領域315までで2Gbyteを有し、そのうち、実行コード領域312は1Mbyte程度、データ領域314は1Kbyte程度の各サイズに設定されている。このように、ヒープ領域313及びヒープ領域315は大サイズとして準備されている。ヒープ領域とは、動的に確保可能な未使用のメモリ領域のことであり、必要時に動的に確保(allocate)し、使い終わったら解放(delete)することで、限られたメモリを有効に活用するようにしたものである。
図4には、仮想メモリ空間310のヒープ領域313(315)に動的メモリ確保用のアルゴリズムによって作成された各種の領域(31a、31b、31c)が示されている。まず、仮想メモリ空間310のヒープ領域313の適所にあるジャバスクリプト領域31aは、HTMLに埋め込まれていた各種のジャバスクリプトのアルゴリズムが読み込まれたものである。なお、以降、ジャバスクリプト領域31aというときは、動的メモリを確保し、確保した領域内に所定のコードを記述する処理を行うアルゴリズムを備えたジャバスクリプトが格納された領域として説明する。
ヒープ領域315(またはヒープ領域313)の適所にあるプログラム領域31bは、実行コード領域312に格納されている実行コードの内のある実行コードが選択され、対応するdllがHDD22のdll領域から読み出されたものである。プログラム領域31bに読み込まれたdllは、前記の実行コードによって起動される。プログラム領域31bの記憶領域は、実行コードによって確保され、次いで、読み込まれたdllの処理が終了すると、実行コードによって解放される。
また、NOP領域31cは、ジャバスクリプト領域31a内のジャバスクリプトのアルゴリズムによって、NOP(No Operation)コードがスプレイ、すなわち所定容量域(例えば1Kbyte)内に、埋め尽くすようにしてNOPコードが連続して書き込まれたものである。ジャバスクリプトは、図4に示すように、ヒープ領域313(315)の範囲内に対して、プロセスあるいはスレッド(以下、まとめてプロセスという)の単位で、他の処理の合間に、NOPコードのスプレイ処理を連続(ループ)的に継続する。なお、NOPコードとは、「何もすることなく、次のアドレスへ移行する」オペコードで、かかるオペコードを連続して記述しておくことで、当該領域が指定されるとCPU11は何もしない動作を次々のアドレスで繰り返す(処理保留状態とする)ようにしたものである。
ヒープ領域313(315)内に、NOP領域31cを順次形成する理由は、以下の通りである。通常、動的メモリは、あるロード先(例えばプログラム領域31b)を確保され、dllが格納され、dllが実行されて、その後に解放される。その時のアクセス先を示すパラメータとしての基準ポイント(アドレス)やサイズはスタックに格納されている(残っている)。一方、dllは、膨大に存在し、さらにはアドインで追加可能であることから、複数のdllの複雑な使い方、例えば、あるdllから更に他のdllを用いる等の複数のdllを組み合わせる場合に、同じアクセスポイントに対してアクセス操作を行ってしまうというバグ(bug:プログラムの中の誤り)を発生させる場合がある。この場合、当該アクセスは、未使用領域をアクセスしたとして無効オペコード違反として無効とされ、処理を終了させられる。そこで、NOPコードをスプレイしておくことで、続けて同一のプログラム領域31bをアクセスした場合に、前述したような処理保留状態、すなわち、例えばユーザからの何らかの対応操作を受け付けることで直前の状態に戻るような状態に移行させるようにしている。
ところが、外部から取り込んだ前記ジャバスクリプトに不正なプログラムが埋め込まれている場合、例えば、ジャバスクリプトによって作成されたNOP領域31cの領域の一部に、所定のアドレスにジャンプ(JMP)するコード(不正コード)が仕込まれており、かつ、その所定のアドレス、例えば図4のスタック領域311内の適所に、不正なプログラムとしてのコードデータ領域31dが、ウェブサーバ90から受信したデジタルコンテンツデータのRAM30への展開時に読み込まれていたとする場合である。このような場合、前記したように、同一領域がアクセスされて、CPU11の制御が、NOPコードの処理に受け渡されると、CPU11は、NOP領域31c内のNOPコードに従った処理を順番に実行し、いずれかの時点で、不正コードのアドレスに辿り着いて、CPU11の処理がコードデータ領域31dの不正なプログラムに移ることになる。すなわち、外部のウェブサーバ90から受信されたデジタルコンテンツデータによって行われるジャバスクリプト処理は、その展開領域である仮想メモリ空間310を超えて許可されない反面、不正なプログラムを介在させることで、その領域外のデータに対する不正な行為、例えばデータの改竄、破壊あるいは漏洩を招く可能性がある。
そこで、図5に示すVMM32が実行する監視ソフトウェアによって、かかる不正な行為の実行を抑止する。VMM32は、RAM30にロードされたプログラム及びハードウェアによる処理を実行することによって、フック部321、検査部322及び処置部325として機能する。なお、取得部323及び分析部324は検査部322として機能する。
フック部321は、レジスタ群111(のMSR内のSyscall命令に関するレジスタ)に対してdisableのフック条件の設定を行う。VM31動作中に、動的メモリ確保用のアルゴリズムの実行に起因するSyscall命令が発行されると、フック部321によって無効オペコード違反としてフックされ、この無効オペコード違反がVMCS13のリスト131に設定されている結果、VT12の監視ロジックによる照合によって、CPU11にExit命令を発行するようにし、CPU11の制御がVMXrootモードに遷移する。なお、フック処理として、Syscall命令の発行をフック部321によって無効オペコード違反としてフックし、次いで、フック原因として動的メモリ確保用のアルゴリズムの実行に起因するものかを判断するような態様を含めてもよい。
ここで、動的メモリ確保用のアルゴリズムの処理の詳細について説明する。インターネットエクスプローラの操作中に、VM31が、ある実行プログラム(実行コードのプログラム、ジャバスクリプトのアルゴリズム等)によって基準ポイント及びサイズのパラメータを指定して動的メモリの領域確保要求を発行すると、当該要求に対応するdll(API含む)のSyscall命令(Allocate Virtual Memory)がカーネルに対して発行される。カーネルは、要求された基準ポイント及びサイズのパラメータに対応するリニアアドレスとサイズとを設定して、Sysretとして実行プログラムに戻す。従って、実行プログラムは、このSysretを受けて、設定された基準ポイントに所定のプログラムとしての前記dll(または連続するNOP情報)をロードする。
フック部321は、動的メモリ確保用のアルゴリズムの処理に係るSyscallを無効オペコード違反としてフック対象とすることで、全ての動的メモリの確保要求のアクセスをフックするようにしている。また、VMM32は、Sysretによって返送される、設定されたリニアアドレス、サイズの情報、及び当該アドレスに書き込まれる内容を取得し、VMCS13に格納する。なお、格納する内容は、一般的には1回分でよい。
取得部323は、フック部321によるフック処理が発生すると、前回に動的メモリ確保用のアルゴリズムの実行によって設定されたリニアアドレスに書き込まれている内容を読み出す。
分析部324は、読み出された内容を分析する。すなわち、分析部324は、読み出された内容から、NOPコードの個数を計数する。また、分析部324は、計数値が所定の閾値を超えたか否かを判断する。すなわち、前回に設定された領域がNOP領域31cか、それ以外の領域かの検査を行う。所定の閾値とは、NOPコードはプログラム中で一般的に利用されるコードのひとつであることから、実行プログラム中にNOPコードが存在するというだけでは、プログラム領域31bも含まれ、NOP領域31cと断定することはできない。そこで、NOP領域31cであると識別可能な閾値を設定している。
処置部325は、分析部324によって前回の動的メモリとして確保された領域がNOP領域31cであると判断された場合に、当該領域に、不正プログラムが埋め込まれている可能性があるとして、当該動的メモリ領域を消去する指令を発行する。また、処置部325は、分析部324による判断がNOP領域31cでない場合、本来の処理を継続するSysretを戻す。次いで、処置部325は、VT12に対してEntry命令の発行を指示する。
図6は、情報処理装置1の起動処理の一例を示すフローチャートである。情報処理装置1の電源が投入されると、フラッシュROM21からBIOSがRAM30の所定領域にロードされ、次いでBIOSが起動される(ステップS1)。BIOSはHDD22からMBRをRAM30にロードし、このMBRによってHDD22のアクティブな先頭パーティションが指定されて、ここに格納されているVMM32のホストソフトウェアが、前述したようにして、RAM30の領域Aにロードされ、次いで、その一部のOSローダが起動される(ステップS3)。OSローダによって各VMのOS(カーネル)が、前述したようにロードされて、順次起動され(ステップS5)、次いでVM毎にアプリケーションソフトウエアAP(インターネットエクスプローラ等のブラウザを含む)が、前述したようにロードされる(ステップS7)ことで、起動処理が修了する。
図7は、VMMによって実行される監視処理の一例を示すフローチャートである。本フローチャートは、VM31によって実行させるアプリケーションプログラムのうちのインターネットエクスプローラの動作中であって、VMXnon−rootモードに遷移して、種々の処理が実行されている。監視のためのフック処理は、予め設定された種々の処理(例えば、各種のSyscallを含む)のうちのいずれかの処理が実行されることで発生するが、以下では、動的メモリ確保に関わるアクセスに対するフックの発生に関して説明する。
まず、動的メモリの確保に関わるアクセスによるフックが発生したか否かが判断される(ステップS11)。前記フックの判断が否定された場合、ステップS25に進む。一方、前記フックの判断が首肯された場合、VMX−rootモードへの遷移指示が発行され、VT12にExit命令がセットされて(ステップS13)、CPU11の制御がVMM32に渡る。
次いで、前回の動的メモリ確保の処理で確保された領域内のアドレスに書き込まれた内容を読み取り、その内容の分析が行われる(ステップS15)。すなわち、内容の分析では、読み出した内容中に、所定の閾値を超える個数のNOPコードが含まれているか否かが判断される(ステップS17)。NOPコードの個数が閾値を超えていない場合、前回確保された動的メモリの領域はプログラム領域31bであるとして(ステップS17でNo)、本来の処理を実行して(ステップS19)、ステップS23に進む。
一方、NOPコードの個数が閾値を超えている場合、前回確保された動的メモリの領域はNOP領域31cであると判断され(ステップS17でYes)、インターネットエクスプローラの処理を終了するべく、仮想メモリ空間310の内容を消去する命令をカーネルに発行する(ステップS21)。次いで、VMM32によってVMXnon−rootモードへの遷移指示が発行され、VT12にEntry命令がセットされて(ステップS23)、CPU11の制御がVM31に戻される。なお、VM31の動作状態が終了したか否かが判断され(ステップS25)、終了していなければ、ステップS11に戻り、終了したのであれば本フローを終了する。
なお、本発明は、以下の実施態様が採用可能である。
(1)本実施形態では、何もしないオペコードとしてNOPコードを利用したが、NOPコードと同等の処理を有するものとして、例えばNOOPコード、passコード(何の効果もないオペコード)が知られており、本実施形態では、これらを包括して不作為コードとして採用可能である。
(2)本実施形態では、Syscall命令を無効オペコード違反としてExit対象とごしたが、無効オペコード違反に限定されず、Exit対象としてフックできれば他の条件でフックするようにしてもよい。
(3)本発明は、ジャバスクリプト言語に限らず、スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むデータに関して適用可能である。
(4)本実施形態では、ブラウザを利用した例で説明したが、これに限定されず、
(i)あるプロセス(スレッド)が動的にメモリを確保する
(ii)確保したヒープ領域に不作為コードを書き込む
(iii)上記行為を繰り返す
という、繰り返し行われるメモリの動的確保という行為に対して、プロセス(スレッド)による前回書き込み内容から判断するという点で捉える。こうすることで、ヒープスプレイがPDF等から行われたとしても、同様のルールにより対策が適用される。すなわち、ブラウザを利用する態様の他、別の方法で外部から取得し、あるいは既に所得済みの態様を含む。また、コンテンツデータはデジタルデータに限定されず、イメージデータを含むアナログのデータでもよい。
(5)本実施形態では、Intel(登録商標)VMMに基づいて説明したが、これに限定されず、AMD社のVMM、ゲストカーネルをリング1あるいは2(ゲストアプリケーションをリング3など)で制御する態様にも同様に適用可能である。
(6)本実施形態では、VM及びVMMで動作する情報処理装置で説明したが、これに限定されず、情報処理装置起動時に、OSよりも先に、リング0で起動する監視プログラムを立ち上げ、この監視プログラムの管理の下に、OSをリング1(又は2)で、次いでAPをリング2(又は3)でロードする態様とし、監視プログラムに前記監視ソフトウェアの機能を実行させる態様としてもよい。
1 情報処理装置
11 CPU
30 RAM
31 仮想メモリ空間
313,315 ヒープ領域
31c NOP領域
321 フック部(フック手段)
322 検査部(検査処理手段)
323 取得部(検査処理手段)
324 分析部(検査処理手段)
325 処置部(終了処理手段)
90 ウェブサイト

Claims (7)

  1. スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記コンテンツデータに対する処理を行う情報処理装置において、
    前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段と、
    前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段と、
    検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段とを備えた情報処理装置。
  2. 前記終了処理手段は、前記仮想メモリに展開した前記コンテンツデータを消去することを特徴とする請求項1に記載の情報処理装置。
  3. 前記スクリプト言語で記述された動的メモリ確保用のアルゴリズムを周期的に実行させて、前記ヒープ領域内の順次異なる領域に、前記所定の不作為コードとしてのNOPコードをスプレイするヒープスプレイ処理手段を含む請求項1又は2に記載の情報処理装置。
  4. 仮想マシンの動作を監視する仮想マシンモニタを含み、
    前記検査処理手段及び前記終了処理手段は、前記仮想マシンモニタに備えられ、
    前記検査処理手段は、前記動的メモリ確保用のアルゴリズムの実行の命令が前記仮想マシンから発行される時点で制御を前記仮想マシンモニタに遷移させる請求項1〜3のいずれかに記載の情報処理装置。
  5. スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記コンテンツデータに対する処理を行う情報処理装置の前記処理を監視する不正プログラム実行防止方法において、
    前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフックステップと、
    前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理ステップと、
    検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理ステップとを備えた不正プログラム実行防止方法。
  6. スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記コンテンツデータに対する処理を行う情報処理装置の前記処理を監視するプログラムにおいて、
    前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段、
    前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段、及び、
    検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段として前記情報処理装置を機能させるプログラム。
  7. スクリプト言語で記述された動的メモリ確保用のアルゴリズムを含むコンテンツデータを仮想メモリに展開した状態で、展開領域内のヒープ領域に所定サイズの動的メモリを確保するプロセスを経て処理プログラムをロードし、前記コンテンツデータに対する処理を行う情報処理装置の前記処理を監視するコンピュータ読み取り可能な記録媒体において、
    前記動的メモリ確保用のアルゴリズムの実行の命令の発行をフックするフック手段、
    前記フックの度に、直前の前記動的メモリ確保用のアルゴリズムの実行で確保されたアドレスの領域内の内容を検査する検査処理手段、及び、
    検査の結果、当該アドレスの領域内に所定の不作為コードがスプレイされたと判断可能なデータ量だけ存在している場合、前記コンテンツデータに対する処理を終了する終了処理手段として、前記情報処理装置を機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2014166326A 2014-08-19 2014-08-19 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体 Active JP6317646B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014166326A JP6317646B2 (ja) 2014-08-19 2014-08-19 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014166326A JP6317646B2 (ja) 2014-08-19 2014-08-19 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体

Publications (2)

Publication Number Publication Date
JP2016042318A JP2016042318A (ja) 2016-03-31
JP6317646B2 true JP6317646B2 (ja) 2018-04-25

Family

ID=55592031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014166326A Active JP6317646B2 (ja) 2014-08-19 2014-08-19 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP6317646B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008503A (ja) * 2017-06-23 2019-01-17 杉中 順子 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置
CN109086122A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种虚拟机的监控方法、装置和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8272059B2 (en) * 2008-05-28 2012-09-18 International Business Machines Corporation System and method for identification and blocking of malicious code for web browser script engines
JP4949363B2 (ja) * 2008-12-15 2012-06-06 ブリヂストンサイクル株式会社 自転車用錠装置
MY151479A (en) * 2008-12-16 2014-05-30 Secure Corp M Sdn Bhd F Method and apparatus for detecting shellcode insertion
US20100205674A1 (en) * 2009-02-11 2010-08-12 Microsoft Corporation Monitoring System for Heap Spraying Attacks
US8307435B1 (en) * 2010-02-18 2012-11-06 Symantec Corporation Software object corruption detection
KR101217546B1 (ko) * 2010-11-24 2013-01-21 엔에이치엔비즈니스플랫폼 주식회사 힙 스프레이 공격의 실시간 탐지 및 차단 방법 및 시스템
US9003501B2 (en) * 2010-12-07 2015-04-07 Mcafee, Inc. Method and system for protecting against unknown malicious activities by detecting a heap spray attack on an electronic device
US8788785B1 (en) * 2011-01-14 2014-07-22 Symantec Corporation Systems and methods for preventing heap-spray attacks
US20140123283A1 (en) * 2012-11-01 2014-05-01 Fortinet, Inc. Detection of heap spraying by flash with an actionscript emulator

Also Published As

Publication number Publication date
JP2016042318A (ja) 2016-03-31

Similar Documents

Publication Publication Date Title
JP6218859B2 (ja) 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン
JP6761476B2 (ja) 仮想マシンを監査するためのシステムおよび方法
RU2637997C1 (ru) Система и способ обнаружения вредоносного кода в файле
RU2510074C2 (ru) Система и способ проверки исполняемого кода перед его выполнением
US9547346B2 (en) Context agent injection using virtual machine introspection
Volckaert et al. Cloning your gadgets: Complete ROP attack immunity with multi-variant execution
JP6411494B2 (ja) 仮想マシンにおけるページフォールトインジェクション
US8429741B2 (en) Altered token sandboxing
CN110622138B (zh) 一种数据迁移方法及装置
KR101740604B1 (ko) 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
JP2007220086A (ja) 入出力制御装置、入出力制御システム及び入出力制御方法
JP6370098B2 (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
CN105512550B (zh) 用于活跃的操作系统内核保护的系统和方法
Tang et al. Exploring control flow guard in windows 10
US10372908B2 (en) System and method for detecting malware in a stream of bytes
JP5131563B2 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
JP6317646B2 (ja) 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体
Li et al. Iso-UniK: lightweight multi-process unikernel through memory protection keys
US20170132025A1 (en) Target process injection prior to execution of marker libraries
JP2019008503A (ja) 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置
EP2720170A1 (en) Automated protection against computer exploits
KR102297611B1 (ko) 리눅스 운영체제에서의 Docker 환경 탐지 방법 및 시스템
KR102431638B1 (ko) 인공 신경망에 기반한 악성 데이터 분류 모델을 활용하여 분할된 파일 시스템 사이의 파일 접근을 제어하는 방법 및 클라우드 시스템
JP2018036695A (ja) 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置
JP6430922B2 (ja) 解析装置、解析方法および解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180330

R150 Certificate of patent or registration of utility model

Ref document number: 6317646

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150