JP2008234248A - Program execution device and program execution method - Google Patents
Program execution device and program execution method Download PDFInfo
- Publication number
- JP2008234248A JP2008234248A JP2007071884A JP2007071884A JP2008234248A JP 2008234248 A JP2008234248 A JP 2008234248A JP 2007071884 A JP2007071884 A JP 2007071884A JP 2007071884 A JP2007071884 A JP 2007071884A JP 2008234248 A JP2008234248 A JP 2008234248A
- Authority
- JP
- Japan
- Prior art keywords
- dll
- program execution
- isolation
- execution unit
- unit
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、プログラム実行装置及びプログラム実行方法に関するものである。本発明は、特に、実行コードのセキュリティ向上方法に関するものである。 The present invention relates to a program execution device and a program execution method. The present invention particularly relates to an execution code security improvement method.
オペレーティングシステム開発メーカや、組み込み機器開発メーカは、プリインストールされるソフトウェアに対して、十分試験し、信頼できる状態(システム)で出荷する。試験され、信頼できるシステムに対して、ソフトウェア、特にC/C++言語などで記述され、CPU(Central・Processing・Unit)などのハードウェアで直接実行されるソフトウェアの追加・実行を許可すると、悪意のあるソフトウェアの追加や、悪意はなくとも脆弱性のあるソフトウェアの追加により、システムのセキュリティは低下する。 Operating system developers and embedded device developers thoroughly test preinstalled software and ship it in a reliable state (system). Allowing a tested and trusted system to add or execute software, especially software written in C / C ++ language, etc. and executed directly on hardware such as a CPU (Central Processing Unit) The addition of some software or the addition of software that is not malicious but vulnerable can reduce system security.
このような問題に対し、例えばソフトウェアを十分試験して、信頼できるとしたものに特定の署名者による電子署名を付与し、その特定の署名者による電子署名を持つソフトウェアのみダウンロード・実行を許可するといった、運用で解決する方法がある。 For such a problem, for example, the software is thoroughly tested, an electronic signature by a specific signer is given to what is deemed to be reliable, and only software having an electronic signature by the specific signer is allowed to be downloaded and executed. There is a method to solve by operation.
あるいはまた、例えばインターネットブラウザに対して、ソフトウェアのダウンロード・実行を許可する場合には、特許文献1に記載の発明のように、信頼できない実行コード、即ちダウンロードした実行コードを別の境界領域で実行させてセキュリティの低下を防ぐ方法がある。
Alternatively, for example, when permitting an Internet browser to download and execute software, as in the invention described in
あるいはまた、Java(登録商標)のようなハードウェアで直接実行しない中間言語によるソフトウェアや、Perlのようなスクリプト言語によるソフトウェアのみ、ダウンロード・実行を許可し、そのような言語でアクセス可能な範囲にセキュリティ問題の影響範囲を限定する方法がある。 Alternatively, only software in an intermediate language that is not directly executed by hardware such as Java (registered trademark) or software in a script language such as Perl is permitted to be downloaded and executed, and can be accessed in such a language. There are ways to limit the scope of security issues.
あるいはまた、Symbian(登録商標)OSのように(例えば、非特許文献1参照)、プロセスの単位で権限を設定し、オペレーティングシステムの機能の呼び出しにあたって、その機能ごとに特定の権限を有しないプロセスに対してはその機能の利用を拒否することで、セキュリティの低下を防ぐ、あるいはセキュリティ問題が発生した場合の影響範囲を(権限が及ぶ範囲内に)限定する方法がある。
多くのソフトウェアで共通的に利用される機能は、動的リンクライブラリ(Dynamic・Link・Library;DLL)として提供されることがある。DLLは、プログラム本体のメモリ領域内にロードされ、一体となって動作し、全体として1つのソフトウェアとして完成する。例えば、データベースソフトウェアにおいて、データベース内のデータの暗号化のため、データベースアプリケーションの要求に合った暗号ライブラリを使用することがある。 A function commonly used in many software may be provided as a dynamic link library (DLL). The DLL is loaded into the memory area of the program body, operates as a whole, and is completed as one piece of software as a whole. For example, database software may use a cryptographic library that meets the requirements of a database application for the encryption of data in the database.
あるいはまた、Java(登録商標)やPerlのように、ハードウェアで直接実行しない種類の言語で記述されているプログラムに対し、一部機能は性能向上、あるいはC/C++などで記述された既存ソフトウェア資産の活用のため、C/C++などのハードウェアで直接実行する種類の言語で記述し、この部分をDLLとして、Java(登録商標)やPerlのプログラム本体から実行時に必要に応じて動的にロードし、実行することがある。 Or, for programs written in a language not directly executed by hardware, such as Java (registered trademark) or Perl, some functions are improved in performance, or existing software written in C / C ++, etc. In order to utilize the assets, it is described in a language of a type that is directly executed by hardware such as C / C ++, and this part is dynamically converted as necessary from a Java (registered trademark) or Perl program body as a DLL. May load and execute.
このようにソフトウェアが複数のモジュールにより構成され、主たるモジュールではなく従たるモジュールであるDLLが、必ずしも信頼できるソフトウェアではない場合、主たるモジュールであるプログラム本体を信頼できるとしても、ソフトウェア全体としては信頼できない、セキュリティ上問題のあるものになってしまう。悪意あるいは脆弱性のあるDLLのため、プログラム本体が改竄されることもあり得る。 In this way, when the software is composed of a plurality of modules and the DLL, which is a subordinate module rather than the main module, is not necessarily reliable software, even if the main program body can be trusted, the software as a whole cannot be trusted. It becomes a security problem. The program body may be tampered with because of malicious or vulnerable DLL.
暗号ライブラリの例のように、多くのソフトウェアにより利用される可能性のあるDLLの場合、セキュリティ問題が発生した場合に非常に深刻な問題となるプログラム(例えば会社の機密情報管理プログラム)からロードされることもあり、多大な影響を及ぼす可能性がある。 In the case of a DLL that can be used by a lot of software, as in the case of a cryptographic library, it is loaded from a program (for example, a company's confidential information management program) that becomes a very serious problem when a security problem occurs. May have a significant impact.
Java(登録商標)やPerlのような言語によるプログラムに対して、これらのプログラムから機能拡張などのためにロードされるDLLの追加ダウンロード・実行を許可すると、DLLと結び付いたJava(登録商標)やPerlの実行エンジンのセキュリティが低下する。Java(登録商標)やPerlの実行エンジンは、それぞれの言語で記述された様々なプログラムを実行可能なように、多くの機能を有している、あるいは、多くの権限を有していることがあり、1つのDLLのセキュリティの問題が大きな影響を及ぼしかねない。 When additional download and execution of DLLs loaded for function expansion etc. from these programs is permitted for programs in languages such as Java (registered trademark) and Perl, Java (registered trademark) Perl's execution engine security is reduced. The execution engines of Java (registered trademark) and Perl have many functions or have many authorities so that various programs written in the respective languages can be executed. Yes, a single DLL security issue can have a major impact.
本発明は、例えば、DLLの機能を呼び出す際のセキュリティを向上させることを目的とする。 An object of the present invention is, for example, to improve security when calling a DLL function.
本発明の一の態様に係るプログラム実行装置は、
特定の機能を実装したコードを含むDLL(動的リンクライブラリ)を利用するDLL利用プログラムを処理装置により実行するDLL利用プログラム実行部と、
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるプログラム実行装置であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードし、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知することを特徴とする。
A program execution device according to an aspect of the present invention includes:
A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit that restricts access by a processing device other than the DLL use program execution unit to a storage area of a storage device that the DLL use program execution unit accesses during execution of the DLL use program;
A program execution device comprising: a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation region which is a storage region different from the storage region where the access restriction unit restricts access by a processing device There,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit,
The DLL isolation load program execution unit loads the DLL into the isolation area according to an instruction from the DLL use program execution unit,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit,
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. The execution unit is notified.
本発明の一の態様によれば、プログラム実行装置において、DLL利用プログラム実行部が、隔離DLL通信部を介して、DLLのロードをDLL隔離ロードプログラム実行部に指示し、DLL隔離ロードプログラム実行部が、DLL利用プログラム実行部による指示に従って、隔離領域へDLLをロードし、DLL利用プログラム実行部が、隔離DLL通信部を介して、隔離領域へロードされたDLL内のコードが実装する機能の呼び出しをDLL隔離ロードプログラム実行部に指示し、DLL隔離ロードプログラム実行部が、DLL利用プログラム実行部による指示に従って、隔離領域へロードしたDLL内のコードを実行し、隔離DLL通信部を介して、当該実行結果をDLL利用プログラム実行部に通知することにより、DLLの機能を呼び出す際のセキュリティが向上する。 According to one aspect of the present invention, in the program execution device, the DLL use program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit, and the DLL isolation load program execution unit. Loads the DLL into the isolation area according to the instruction from the DLL usage program execution unit, and the DLL usage program execution unit calls the function implemented by the code in the DLL loaded into the isolation region via the isolation DLL communication unit. To the DLL isolation load program execution unit, and the DLL isolation load program execution unit executes the code in the DLL loaded into the isolation region according to the instruction by the DLL usage program execution unit, and through the isolation DLL communication unit, By notifying the DLL execution program execution unit of the execution result, the DLL function Security is improved when you call the.
以下、本発明の実施の形態について、図を用いて説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
実施の形態1.
Java(登録商標)言語を例にとり、本実施の形態を説明する。まず、一般的な例について簡単に説明する。一般に、OS(Operating・System)が提供するDLL機能は、プログラム本体(Windows(登録商標)の場合には“.exe”ファイルで提供される)が必要に応じてDLLプログラム(Windows(登録商標)の場合には、一般に“.dll”ファイルで提供される)をロードし、その関数の名前や順番(インデックス)により、プログラム本体からDLLプログラム内の関数の呼び出しが可能となる。
This embodiment will be described by taking the Java (registered trademark) language as an example. First, a general example will be briefly described. Generally, the DLL function provided by the OS (Operating System) has a program body (provided as a “.exe” file in the case of Windows (registered trademark)) and a DLL program (Windows (registered trademark)) as necessary. In this case, the function in the DLL program can be called from the program main body by loading the function name and order (index).
Java(登録商標)言語の場合には、基本的な機能はOSの提供するDLL機能を使用するが、さらにJava(登録商標)に合わせたプログラム本体とDLLプログラムの間のインタフェースを定義している。これを、JNI(Java(登録商標)・Native・Interface)と呼ぶ。例えばJava(登録商標)言語では、データはオブジェクト単位で管理され、オブジェクトはその内部にフィールドやメソッドを持つ。JNIのAPI(Application・Programming・Interface)のGetMethodIDにより、あるオブジェクトのフィールドへのアクセスを行うことができる。また、例えば、CallDoubleMethod・APIにより、C/C++で記述されるDLLプログラムからJava(登録商標)言語で記述されたdouble型の戻り値を返す実行コードを呼び出すことができる。 In the case of the Java (registered trademark) language, the basic function uses the DLL function provided by the OS, but further defines an interface between the program main body and the DLL program according to the Java (registered trademark). . This is called JNI (Java (registered trademark) / Native / Interface). For example, in the Java (registered trademark) language, data is managed in units of objects, and objects have fields and methods therein. Access to a field of an object can be performed by using GetMethodID of JNI API (Application Programming Programming Interface). Further, for example, an execution code that returns a double type return value described in the Java (registered trademark) language can be called from a DLL program described in C / C ++ by CallDoubleMethod API.
図10に、Java(登録商標)におけるDLL利用時の構成を示す。Java(登録商標)プログラムであるDLL利用プログラム101は、Java(登録商標)言語で記述され、中間言語にコンパイルされたクラスファイルと呼ばれる形式で提供されるプログラムである。Java(登録商標)実行エンジン102(以下、単に「実行エンジン」という)は、そのDLL利用プログラム101を実行するソフトウェアであり、典型的な実装では中間言語を処理するインタプリタを含み、Windows(登録商標)などではjava.exeという実行ファイルで提供される。暗号ライブラリ105がDLL形式のangou.dllというDLLファイルで提供されるとする。java.exe、angou.dllにはそれぞれ、プログラム本体、即ち実行エンジン102と、DLLプログラム、即ち暗号ライブラリ105内にJNIのためのコードがあり、それぞれホスト側JNI103、DLL側JNI104と呼ぶ。DLL利用プログラム101により、ある機能が呼び出され、それが暗号ライブラリ105により提供されるものである場合、実行エンジン102はホスト側JNI103のDLL呼出部107により、DLL側JNI104を呼び出し、DLL側JNI104は暗号ライブラリ105内の機能(暗号化関数など)を呼び出し、結果を返す。実行エンジン102であるjava.exeは、暗号ライブラリ105であるangou.dllをJava(登録商標)プロセスであるDLL利用プロセス106内にロードし、使用する。
FIG. 10 shows a configuration when using DLL in Java (registered trademark). The
図1は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。 FIG. 1 is a block diagram showing a configuration of a program execution device 100 according to the present embodiment.
プログラム実行装置100は、ハードウェアとして、メモリなどの記憶装置151、CPUなどの処理装置152を備える。プログラム実行装置100は、その他のハードウェアとして、プログラムをダウンロードしたり、データを入力したりする入力装置、プログラムの実行結果を画面表示したり、データを出力したりする出力装置を備えていてもよい。
The program execution device 100 includes a
また、プログラム実行装置100は、DLL利用プログラム実行部251、アクセス制限部252、DLL隔離ロードプログラム実行部253を備える。DLL利用プログラム実行部251、アクセス制限部252、DLL隔離ロードプログラム実行部253は、例えばOSに実装される。
The program execution device 100 also includes a DLL use
DLL利用プログラム実行部251は、前述したDLL利用プログラム101をDLL利用プロセス106として処理装置152により実行する。DLL利用プログラム101は、前述した暗号ライブラリ105を利用するプログラムである。暗号ライブラリ105は、特定の機能を実装したコードを含むDLLの一例であり、例えばデータの暗号化機能を実装したコードを含む。DLL利用プログラム実行部251は、DLL利用プロセス106内の実行エンジン102に含まれるホスト側JNI103に、前述したDLL呼出部107に加えて、DLL隔離ロード判断部205及び隔離DLL通信部204を有する。
The DLL use
アクセス制限部252は、DLL利用プロセス106がDLL利用プログラム101の実行中にアクセスする記憶装置151の記憶領域(「メモリ領域」ともいう)へのDLL利用プロセス106以外のプロセスによるアクセスを処理装置152により制限する。そのために、アクセス制限部252は、OSなどのメモリ保護機能を利用することができる。
The
DLL隔離ロードプログラム実行部253は、DLL隔離ロードプログラム201をDLL隔離プロセス203として処理装置152により実行する。DLL隔離ロードプログラム201は、アクセス制限部200がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ暗号ライブラリ105などのDLLをロードするプログラムであり、例えばkakuri.exeという実行ファイルに実装される。DLL隔離ロードプログラム実行部253は、DLL隔離ロードプログラム201に隔離DLL通信部202を有する。この隔離DLL通信部202とホスト側JNI103の隔離DLL通信部204とは、互いに通信を行う。
The DLL isolation load
一般に、プロセスとは、プログラムの実行インスタンスだけを指す場合もあるが、プログラムの実行インスタンス及びそのプログラムの実行のために割り当てられたリソースを意味するものである。以下では、DLL利用プロセス106がDLL利用プログラム101の実行中にアクセスする記憶領域、即ち、アクセス制限部200がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域を単にDLL利用プロセス106という場合がある。同様に、隔離領域を単にDLL隔離プロセス203という場合がある。例えば、暗号ライブラリ105が使用されるときにはangou.dllが隔離領域にロードされることとなるが、DLL隔離プロセス203に内包されるともいえる。
In general, a process may refer only to an execution instance of a program, but refers to an execution instance of a program and resources allocated for execution of the program. In the following, a storage area that the
図2は、プログラム実行装置100の外観の一例を示す図である。 FIG. 2 is a diagram illustrating an example of the appearance of the program execution device 100.
図2において、プログラム実行装置100は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶ディスプレイ)の表示画面を有する表示装置901、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ装置906などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット910は、コンピュータであり、LAN942(ローカルエリアネットワーク)、ゲートウェイ941を介してインターネット940に接続されている。
2, a program execution device 100 includes a system unit 910, a
図3は、プログラム実行装置100のハードウェア資源の一例を示す図である。 FIG. 3 is a diagram illustrating an example of hardware resources of the program execution device 100.
図3において、プログラム実行装置100は、プログラムを実行するCPU911(「演算装置」、「マイクロプロセッサ」、「マイクロコンピュータ」、「プロセッサ」ともいう)を備えている。CPU911は、処理装置152の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカードリーダライタなどの記憶媒体が用いられてもよい。
In FIG. 3, the program execution device 100 includes a CPU 911 (also referred to as “arithmetic device”, “microprocessor”, “microcomputer”, or “processor”) that executes a program. The
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置151の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905などは、入力装置の一例である。また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
The
通信ボード915は、LAN942に限らず、インターネット940、あるいは、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークなどのWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940あるいはWANなどに接続されている場合、ゲートウェイ941は不要となる。
The
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。また、ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として記憶されている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ディスクやメモリなどの記憶媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのCPU911の処理(動作)に用いられる。抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
The
また、本実施の形態の説明において説明するブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号は、RAM914などのメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク(MD)、DVD(Digital・Versatile・Disc)などの記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体により伝送される。
In the block diagrams and flowcharts described in the description of this embodiment, the arrows indicate mainly input and output of data and signals. Data and signals are stored in a memory such as a
また、本実施の形態の説明において「〜部」、「〜手段」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」、「〜手段」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVDなどの記録媒体に記憶される。このプログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、本実施の形態の説明で述べる「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
In the description of the present embodiment, what is described as “to part” and “to means” may be “to circuit”, “to device”, and “to device”, and “to step”. , “˜step”, “˜procedure”, and “˜treatment”. That is, what is described as “˜unit” and “˜means” may be realized by firmware stored in the
以下、本実施の形態に係るプログラム実行方法、即ち、プログラム実行装置100の動作について説明する。 Hereinafter, the program execution method according to the present embodiment, that is, the operation of the program execution device 100 will be described.
DLL利用プログラム実行部251が記録媒体やネットワーク上の暗号ライブラリ105を利用するとき、まず、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、DLL利用プログラム101と暗号ライブラリ105との少なくともいずれかの属性に応じて、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示するか、若しくは、アクセス制限部252がDLL利用プロセス106以外のプロセスによるアクセスを制限する記憶領域(即ち、利用プロセス106)へ暗号ライブラリ105をロードするかを判断する。前者の判断をした場合、DLL利用プログラム実行部251のDLL隔離ロード判断部205は、隔離DLL通信部204を介して、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示する。DLL隔離ロードプログラム実行部253は、DLL利用プログラム実行部251による指示に従って、上記の記録媒体やネットワークから、隔離領域(即ち、DLL隔離プロセス203)へ暗号ライブラリ105をロードする。次に、DLL利用プログラム実行部251のDLL呼出部107が、隔離DLL通信部204を介して、隔離領域へロードされた暗号ライブラリ105内のコードが実装する機能(例えば、データの暗号化機能)の呼び出しをDLL隔離ロードプログラム実行部253に指示する。DLL隔離ロードプログラム実行部253は、DLL利用プログラム実行部251による指示に従って、隔離領域へロードした暗号ライブラリ105が実装するコードを実行し、隔離DLL通信部202を介して、当該実行結果をDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251は、通知された実行結果に基づいて、所定の処理を行ったり、当該実行結果を出力装置から出力したりする。
When the DLL usage
図4に、暗号ライブラリ105をロードし、暗号ライブラリ105内の機能を呼び出す場合の処理フローを示す。DLL利用プログラム101が暗号機能の利用のため、暗号ライブラリ105の呼び出しを実行エンジン102に指示すると、実行エンジン102はホスト側JNI103に対し、暗号ライブラリ105を実現するangou.dllのロードを指示する(前述した一般的な例と同じ)。ホスト側JNI103は、DLL隔離ロード判断部205にDLLを隔離してロードすべきか、そのままロードすべきか判断させる(ステップS301)。ここでは、電子署名が付与されて配布されているDLLに対しては信頼できるソフトウェアであるとする(DLLは、電子署名が付与されている、又は、付与されていないという属性を持っているものとする)。電子署名がされている場合には、そのままロードすべきとし、ホスト側JNI103は、DLL呼出部107によりOSのDLL機能などを利用して、対象DLLであるangou.dllをDLL利用プロセス106内にロードする(ステップS302)。ホスト側JNI103は、angou.dllをDLL呼出部107からロードしたことをDLL利用プロセス106内に記録し、後の使用に備える(ステップS303)。次にDLL利用プログラム101がロードした暗号ライブラリ105の機能の呼び出しを指示した場合、実行エンジン102はホスト側JNI103に同機能の呼び出しを指示し(ステップS306)、ホスト側JNI103は、ステップS303でDLL利用プロセス106内に記録した内容に基づき、暗号ライブラリ105をDLL呼出部107によりロードしたか否かを確認する(ステップS307)。DLL呼出部107からロードした場合、DLL呼出部107により対象DLLの機能をDLL利用プロセス106内で直接呼び出し(ステップS308)、呼び出し結果を実行エンジン102、さらにはDLL利用プログラム101に返す(ステップS310)。
FIG. 4 shows a processing flow when the
暗号ライブラリ105であるangou.dllが電子署名をつけて配布されていない場合について説明する。電子署名されていないため(ステップS301)、ホスト側JNI103は、隔離DLL通信部204を介して、対象DLLであるangou.dllをロードする(ステップS304)。このとき、ホスト側JNI103は、隔離DLL通信部204を介して、暗号ライブラリ105であるangou.dllをロードするようにDLL隔離ロードプログラム実行部253に指示して、DLL隔離ロードプログラム201を起動する(ステップS311)。起動したDLL隔離ロードプログラム201は、DLL隔離プロセス203を構成し、指示されたDLLであるangou.dllを自プロセス内にロードし(ステップS312)、隔離DLL通信部202を介して、ホスト側JNI103内の隔離DLL通信部204にロードが完了したことを通知する(ステップS313)。ホスト側JNI103は、隔離DLL通信部204を介して、DLLをロードしたことをDLL利用プロセス106内に記録する(ステップS305)。DLL機能の呼び出しに対して(ステップS307)、DLLがDLL隔離プロセス203にロードされたため(ステップS307)、隔離DLL通信部204を介して対象DLLの機能を呼び出す(ステップS309)。即ち、ホスト側JNI103の隔離DLL通信部204は、DLL隔離ロードプログラム201の隔離DLL通信部202に機能の呼び出しをプロセス間通信などにより指示する。それを受信(ステップS314)したDLL隔離ロードプログラム201の隔離DLL通信部202は、angou.dll内のJNI機能を介して指定されたDLL機能を呼び出し(ステップS315)、やはりプロセス間通信などにより呼び出し結果をDLL利用プロセス106に返す(ステップS316)。
The
このように信頼できないDLLの実行コードをプログラム本体と別のメモリ領域を持つDLL隔離プロセス203に分離することにより、OSの提供するプロセスのメモリ保護機能などにより、DLL隔離プロセス203内において、ロードしたDLLがメモリ破壊、実行コード書き換えなどの行為に及んだとしても、その被害はDLL隔離プロセス203内に閉じ込められ、DLL利用プロセス106には及ばない。また、DLL隔離ロードプログラム201とホスト側JNI103の間でDLL機能呼び出しの変換を行うため、DLLであるangou.dllはそのままロードされる場合でも、隔離ロードされる場合でも同じものでよい。
As described above, by separating the unreliable DLL execution code into the
本実施の形態では、DLLのロードの選択を電子署名の有無(DLLの属性の一例)で判断したが、その電子署名の署名者(DLLの属性の一例)により判断する方法もある。例えば、OSメーカや使用している機器メーカが署名者である場合は信用できるものとして隔離せずにそのままロードする。あるいはまた、上記の記録媒体やネットワーク上でDLLとともに記憶される情報から識別可能なDLLの作成者(DLLの属性の一例)によって判断する。 In this embodiment, the selection of DLL loading is determined based on the presence or absence of an electronic signature (an example of an attribute of a DLL), but there is also a method of determining based on the signer of the electronic signature (an example of an attribute of a DLL). For example, when the OS manufacturer or the device manufacturer in use is a signer, it is loaded as it is without being isolated as being reliable. Alternatively, the determination is made by the creator of the DLL (an example of the attribute of the DLL) that can be identified from the information stored together with the DLL on the recording medium or the network.
また、DLLのロードの選択をプログラム本体の機能や権限(DLL利用プログラム101の属性の一例)によって判断してもよい。例えばセキュリティチップへのアクセスを行うプログラムには高いセキュリティが求められるため、隔離してDLLをロードする。また、一定以上の高い権限を有するプログラムでは、隔離してDLLをロードする。あるいはまた、プログラム本体とDLLの権限の大小(包含)関係によって判断することも考えられる。例えば、DLL実行に必要な権限をすべてプログラム本体が有する場合には、隔離せずにDLLをロードする。あるいはまた、高いセキュリティは要求されていない場合に、高速な呼び出しが必要であるDLLに対しては隔離ロードとせずにそのままロードすることも考えられる。 The selection of DLL loading may be determined by the function and authority of the program main body (an example of the attribute of the DLL use program 101). For example, since a program for accessing the security chip requires high security, the DLL is loaded in isolation. In addition, in a program having a certain level of authority, the DLL is loaded in isolation. Alternatively, it may be determined based on the magnitude relationship (inclusion) between the program body and the DLL authority. For example, if the program body has all the authority necessary for DLL execution, the DLL is loaded without isolation. Alternatively, when high security is not required, it may be possible to load a DLL requiring a high speed call as it is without being isolated load.
以上のように、本実施の形態に係るプログラム実行装置100は、
プログラム実行時にリンク・ロードされ、実行されるソフトウェアモジュール(DLL)をロードするプログラム本体(DLL利用プログラム101)とは別に、DLLロード用の別プログラム(DLL隔離ロードプログラム201)を設け、
DLL利用プログラム101によるDLLロード指示に対して、DLLをロードするDLL利用プログラム101とは別のメモリ領域(隔離領域)を割り当て、
隔離領域内でDLL隔離ロードプログラム201を実行し、同隔離領域内においてDLL隔離ロードプログラム201は対象DLLをロードし、
DLL利用プログラム101及びDLL隔離ロードプログラム201に隔離DLL通信部202,204を設け、
これらの隔離DLL通信部202,204により、DLL利用プログラム101とDLL内実行コードの間の呼び出しを、DLL利用プログラム101とDLL隔離ロードプログラム201の間の呼び出しと、DLL隔離ロードプログラム201とDLL内実行コードの間の呼び出しに代替して実行する。
As described above, the program execution device 100 according to the present embodiment is
Apart from the program body (DLL utilization program 101) that loads and executes the software module (DLL) that is linked and loaded when the program is executed, a separate program for DLL loading (DLL isolation load program 201) is provided,
In response to a DLL load instruction from the
The DLL
The
By these isolated
これにより、DLLの機能を呼び出す際のセキュリティが向上する。 This improves the security when calling the DLL function.
また、プログラム実行装置100は、
DLL利用プログラム101及びDLLの機能、権限、作成者などの属性に応じて、DLLを上記のように隔離してロード・実行するか、通常のようにDLL利用プログラム101のメモリ領域内にロード・実行するかを選択するDLL隔離ロード判断部205を有する。
In addition, the program execution device 100
Depending on attributes such as the
これにより、信頼性のあるDLLの機能を呼び出す際の実行時間が短縮できる。 As a result, the execution time when calling a reliable DLL function can be shortened.
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 2. FIG.
In the present embodiment, differences from the first embodiment will be mainly described.
図5は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。 FIG. 5 is a block diagram showing the configuration of the program execution device 100 according to the present embodiment.
本実施の形態では、プログラム実行装置100は、実施の形態1で図1に示したもののほか、DLL隔離ロードプログラム権限設定部254を備える。DLL隔離ロードプログラム権限設定部254は、例えばOSに実装される。
In the present embodiment, the program execution apparatus 100 includes a DLL isolation load program
DLL隔離ロードプログラム権限設定部254は、暗号ライブラリ105などのDLL内のコードを実行するために必要なレベルの権限(例えば、DLLごとに予め設定され、上記の記録媒体やネットワーク上でDLLとともに記憶されている)をDLL隔離ロードプログラム実行部253に処理装置152により設定する。即ち、DLL隔離プロセス203の権限を設定する。DLL隔離ロードプログラム権限設定部254は、設定した権限を記憶装置151に記憶する。記憶装置151に記憶された権限は、DLL隔離プロセス203がOSの特定の機能を呼び出したり、記憶装置151の特定の記憶領域にアクセスしたりする場合に参照される。
The DLL isolation load program
例えば、プロセスに権限を付与する機能を提供するOSを使用している場合、DLL隔離プロセス203に、ロードするDLLに必要な権限のみを与えることにより、DLLに必要な権限以上の権限を、DLLをロードするプログラム本体(DLL利用プログラム101)が有していた場合には、セキュリティ低下の影響範囲を狭めることができる。必要な権限は、DLLファイル内に格納してもよいし、別途ファイルを用意してそのファイルに格納し、DLLファイルと権限を格納したファイルをセットで配布してもよい。DLLファイル内に格納する場合には、DLL利用プログラム101から直接ロードされる場合の権限と、隔離ロードされる場合の権限の双方を格納してもよい。
For example, when using an OS that provides a function for granting authority to a process, by giving only the authority necessary for the DLL to be loaded to the
以上のように、本実施の形態に係るプログラム実行装置100は、
プログラムの実行にあたって権限を付与され、権限のある範囲でのみOSなどの提供する機能が利用可能である環境において、DLL隔離ロードプログラム201に対して対象DLLの実行に必要な権限のみを設定するDLL隔離ロードプログラム権限設定部254を有する。
As described above, the program execution device 100 according to the present embodiment is
In an environment where authority is given to the execution of the program and the function provided by the OS or the like can be used only within an authorized range, a DLL that sets only the authority necessary for executing the target DLL for the DLL
これにより、DLLの機能を呼び出す際のセキュリティがさらに向上する。 This further improves the security when calling the DLL function.
実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 3 FIG.
In the present embodiment, differences from the first embodiment will be mainly described.
図6は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。 FIG. 6 is a block diagram showing a configuration of the program execution device 100 according to the present embodiment.
本実施の形態では、プログラム実行装置100において、DLL利用プログラム実行部251は、実施の形態1で図1に示したもののほか、ホスト側JNI103に、セキュリティ違反記録・通知部401を有する。また、DLL隔離ロードプログラム実行部253は、実施の形態1で図1に示したもののほか、DLL隔離ロードプログラム201にセキュリティ違反記録・通知部402を有する。
In the present embodiment, in the program execution device 100, the DLL using
DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、隔離領域で暗号ライブラリ105などのDLL内のコードを実行中に隔離領域とは別の記憶領域へアクセスした場合、隔離DLL通信部202を介して、当該アクセスがあったことをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当するアクセスがあったことを記憶領域に記憶したり、出力装置から出力したりする。
The security violation recording / notifying
実施の形態1において、暗号ライブラリ105は、DLL隔離プロセス203に隔離され、OSなどのメモリ保護機能により、DLL隔離プロセス203内でのみメモリアクセスが可能である。OSのメモリ保護機能に違反する、即ちアクセス許可されていないメモリにアクセスしようとすると、OSが定める方法によりその旨がプロセスに通知される。
In the first embodiment, the
そこで、上記のように、DLL隔離ロードプログラム201内に、セキュリティ違反記録・通知部402を設けている。DLL利用プロセス106は、OSによるメモリ保護違反の通知を受信すると、セキュリティ違反記録・通知部402を呼び出す。セキュリティ違反記録・通知部402は、隔離DLL通信部202を介してその旨をDLL利用プロセス106側の隔離DLL通信部204に通知し、ホスト側JNI103内のセキュリティ違反記録・通知部401により、その旨をファイルなどに記録あるいはユーザやシステム管理者に通知する。
Therefore, as described above, the security violation recording / notifying
セキュリティ違反記録・通知部401による記録あるいは通知から、暗号ライブラリ105に不具合がある、あるいは不正な動作をしようとしていることがわかり、以降、暗号ライブラリ105は使用しないことにより(単にユーザが使用しないようにしてもよいし、プログラム実行装置100にて暗号ライブラリ105の使用を禁止する設定を自動的に行ってもよい)、セキュリティの低下を回避できる。セキュリティ違反記録・通知部401,402は、DLL隔離プロセス203及びDLL利用プロセス106を強制終了させることにより、起こりうるセキュリティ被害を未然に防ぐことも可能である。あるいはまた、DLL隔離ロード判断部205は、セキュリティ違反記録・通知部401の記録を参照し、直接行うか、隔離して行うかにかかわらず当該DLLのロードを拒否することもできる。
From the record or notification by the security breach recording /
実施の形態4.
本実施の形態について、主に実施の形態3との差異を説明する。
Embodiment 4 FIG.
The difference between the present embodiment and the third embodiment will be mainly described.
本実施の形態に係るプログラム実行装置100の構成は、実施の形態3で図6に示したものと同様である。 The configuration of the program execution device 100 according to the present embodiment is the same as that shown in FIG. 6 in the third embodiment.
本実施の形態では、アクセス制限部252は、記憶装置151の一部の記憶領域への特定の操作を制限する。例えば、アクセス制限部252は、複数のページのそれぞれについて、ページに対するデータの書き込みやページからのデータの読み込み、といった操作を制限する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、隔離領域で暗号ライブラリ105などのDLL内のコードを実行中に、アクセス制限部252が特定の操作を制限する記憶領域へ当該操作を実施した場合、隔離DLL通信部202を介して、当該操作があったことをDLL利用プログラム実行部251に通知する。例えば、アクセス制限部252により書き込みが制限されているページへDLL隔離プロセス203がデータを書き込んだ場合、その旨がDLL利用プロセス106に通知される。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当する操作があったことを記憶領域に記憶したり、出力装置から出力したりする。
In the present embodiment, the
OSによるメモリ保護機能は、多くの場合、OSの動作するCPUやMMU(Memory・Management・Unit)のメモリ保護機能により実現する。多くのCPUやMMUでは、例えば4KBごとのページと呼ばれる単位でメモリを確保し、ページに属性を付けることができる。例えば、実行コード用に読み込みのみが可能であるページがアドレス0x1000から0x2000に1ページ設定され、データやスタック用に読み書き可能なページが0xC000から0xF000に3ページ設定されているとする。このとき、あるプログラムが動作するプロセスが、読み込みのみ可能なページに書き込みアクセスを行った場合、ページ保護違反が検知され、CPU例外などが発生する。このCPU例外はOSに通知され、OSは実施の形態3で述べたようなメモリ保護違反の通知をする。DLL利用プロセス106は、このOSによる通知を受信すると、セキュリティ違反記録・通知部402を呼び出す。セキュリティ違反記録・通知部402は、隔離DLL通信部202を介して、その旨をDLL利用プロセス106側の隔離DLL通信部204に通知し、ホスト側JNI103内のセキュリティ違反記録・通知部401により、その旨をファイルなどに記録あるいはユーザやシステム管理者に通知する。
In many cases, the memory protection function by the OS is realized by a memory protection function of a CPU or MMU (Memory / Management / Unit) on which the OS operates. In many CPUs and MMUs, for example, a memory can be secured in units called pages every 4 KB, and attributes can be attached to the pages. For example, it is assumed that one page is set from addresses 0x1000 to 0x2000 for reading only for the execution code, and three pages are set from 0xC000 to 0xF000 for reading and writing for data and stack. At this time, if a process in which a certain program operates performs a write access to a page that can only be read, a page protection violation is detected and a CPU exception or the like occurs. This CPU exception is notified to the OS, and the OS notifies the memory protection violation as described in the third embodiment. The
以上のように、実施の形態3に係るプログラム実行装置100は、
隔離領域で実行されるDLL実行コードの、隔離領域外のメモリのアクセスを検知し、同アクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。
As described above, the program execution device 100 according to Embodiment 3
Security violation recording /
また、実施の形態4に係るプログラム実行装置100は、
プログラム本体(DLL利用プログラム101)とDLL実行コード間のインタフェースを制限し、その制限の範囲内では不可能なメモリアクセスを検知し、同アクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。
Further, the program execution device 100 according to the fourth embodiment includes:
A security violation record that restricts the interface between the program body (DLL usage program 101) and the DLL execution code, detects memory access that is impossible within the scope of the restriction, and records / notifies the access as a security
これにより、過去に利用したDLLを再度利用する際に、そのDLLの信頼性を確認することができる。 Thereby, when the DLL used in the past is used again, the reliability of the DLL can be confirmed.
さて、JNIの機能には、例えば指定した実行エンジン102内の文字列の内容を読み出すGetStringCharsというAPIがあり、その文字列の利用が終了したことを実行エンジン102に伝えるReleaseStringCharsというAPIがある。DLLからのGetStringCharsのAPI呼び出しに対して、DLL側JNI104は隔離DLL通信部202,204、ホスト側JNI103を介して、実行エンジン102から指定した文字列の内容を暗号ライブラリ105に提供する。ここで、DLL側JNI104は文字列の内容をそのまま提供するのではなく、OSの機能などを用いて独立したページに割り当てる。また、DLL側JNI104はReleaseStringCharsのAPI呼び出しに対してそのページ割り当てを消去する。消去されたページに後でアクセスするとメモリ保護違反が発生し、DLLプログラムに不具合あるいは不正な処理があることがわかる。
The JNI function includes, for example, an API called GetStringChars that reads the contents of a specified character string in the
あるいはまた、DLLは、実行エンジン102から配列オブジェクトを取得する。実行エンジン102の典型的な実装では、配列オブジェクトは、配列の内容の型情報、配列の長さ情報などの管理情報に続いて、配列の中身を収容する。Java(登録商標)言語では、配列の長さは変更できないが、DLLにおいて配列の長さ部分を書き換えてしまうことが考えられる。このような場合に、DLL側JNI104では配列の管理情報と配列の中身の情報を別のページとし、DLL内の実行コードを実行中には管理情報部分はメモリ保護機能により読み込みのみとし、配列の中身は読み書き可能なページとすることができる。この場合、管理情報を書き換えようとすると、メモリ保護違反が発生し、DLLプログラムに不具合あるいは不正な処理があることがわかる。
Alternatively, the DLL obtains an array object from the
あるいはまた、上記配列の例において、配列の中身のアクセスをJNIの提供するGetObjectArrayElement、SetObjectArrayElementのような配列の中身へのアクセス専用のAPIの呼び出し時にのみ許可し、それ以外の場合にはメモリ保護機能でセキュリティ違反の監視及び検出を行ってもよい。このようにしてセキュリティを向上させることができる。 Alternatively, in the above example of the array, access to the contents of the array is permitted only when calling an API dedicated to accessing the contents of the array, such as GetObjectArrayElement and SetObjectArrayElement provided by JNI, and in other cases, the memory protection function You may monitor and detect security violations. In this way, security can be improved.
実施の形態3及び4の変形例として、メモリ保護機能を利用する代わりに、DLL実行コードの実行をCPUで直接行うのではなく、CPUの命令を解釈し実行するインタプリタで実行し、1命令ごとにその処理内容を確認してもよい。この場合、性能が劣化する可能性があるが、後に述べる実施の形態5では試験中のみ性能が劣化するため、問題とはならない。 As a modification of the third and fourth embodiments, instead of using the memory protection function, the DLL execution code is not directly executed by the CPU, but is executed by an interpreter that interprets and executes the instructions of the CPU. The processing content may be confirmed. In this case, there is a possibility that the performance is deteriorated. However, in Embodiment 5 described later, the performance is deteriorated only during the test, so that this is not a problem.
ここで、他の変形例について説明する。この例では、プログラム実行装置100は、プログラム本体(DLL利用プログラム101)において、セキュリティを高くする必要があるデータを指定し、同データあるいは同データが参照するデータへのアクセスを監視し、不要と判断されるアクセスをセキュリティ上の警告として記録・通知するセキュリティ違反記録・通知部401,402を有する。
Here, another modification will be described. In this example, the program execution device 100 designates data in the program main body (DLL utilization program 101) that requires higher security, monitors access to the same data or data referred to by the same data, and is considered unnecessary. Security violation recording /
例えば、プログラム本体(DLL利用プログラム101)では、セキュリティチップへのアクセスを行うとする。このようなプログラムに対しては、高いセキュリティが要求される。そこで、そのアクセスに高いセキュリティが要求されるデータを区別する。図7にJava(登録商標)オブジェクト403(以下、単に「オブジェクト」という)における実現例を示す。典型的な実行エンジン102の実装では、あるオブジェクト403は、各オブジェクト403に共通のデータとオブジェクト403ごとに異なるデータを収容する。共通データの例としては、オブジェクト403の種類(型)情報や、サイズなどがある。この例では、共通データとして、セキュリティフラグを追加する。DLL側JNI104において、このセキュリティフラグの立ったオブジェクト403へのアクセスを検知した場合、セキュリティ違反であると判断することにより、本来アクセスされないはずの、高いセキュリティのデータからの情報漏洩などによるセキュリティ事故を防ぐことができる。
For example, assume that the program body (DLL usage program 101) accesses the security chip. Such a program requires high security. Therefore, data that requires high security for the access is distinguished. FIG. 7 shows an implementation example in a Java (registered trademark) object 403 (hereinafter simply referred to as “object”). In a
このセキュリティフラグの設定には、Java(登録商標)APIによる方法のほか、特定のJava(登録商標)APIにより生成されたデータについて自動的に設定する、セキュリティフラグが立っているデータから参照されているデータについて自動的に設定するなどの方法を用いることができる。 This security flag is set by referring to data with a security flag that is automatically set for data generated by a specific Java (registered trademark) API, in addition to a method using the Java (registered trademark) API. It is possible to use a method such as automatically setting for existing data.
実施の形態5.
本実施の形態について、主に実施の形態3との差異を説明する。
Embodiment 5. FIG.
The difference between the present embodiment and the third embodiment will be mainly described.
本実施の形態では、DLL隔離ロードプログラム実行部253は、隔離領域で暗号ライブラリ105が実装するコードを試験として実行する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、当該実行中に隔離領域とは別の記憶領域へのアクセスがあったかどうかを記憶装置151に記憶する。そして、隔離DLL通信部202を介して、記憶装置151に記憶した内容、即ち、当該アクセスがあったかどうかをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当するアクセスがあったかどうかを記憶領域に記憶したり、出力装置から出力したりする。DLL利用プログラム実行部251が暗号ライブラリ105を利用するときには、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、上記試験中に隔離領域とは別の記憶領域へのアクセスがあったことが記憶装置に記憶されていた場合、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示することを判断する。一方、上記試験中に隔離領域とは別の記憶領域へのアクセスがなかったことが記憶装置に記憶されていた場合、DLL利用プロセス106へ直接暗号ライブラリ105をロードすることを判断する。
In the present embodiment, the DLL isolation load
実施の形態6.
本実施の形態について、主に実施の形態4との差異を説明する。
Embodiment 6 FIG.
In the present embodiment, differences from the fourth embodiment will be mainly described.
本実施の形態では、DLL隔離ロードプログラム実行部253は、実施の形態5と同様に、隔離領域で暗号ライブラリ105が実装するコードを試験として実行する。DLL隔離ロードプログラム実行部253のセキュリティ違反記録・通知部402は、当該実行中に、アクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施があったかどうかを記憶装置151に記憶する。そして、隔離DLL通信部202を介して、記憶装置151に記憶した内容、即ち、当該操作があったかどうかをDLL利用プログラム実行部251に通知する。DLL利用プログラム実行部251のセキュリティ違反記録・通知部401は、その通知に基づいて、セキュリティ違反に相当する操作があったかどうかを記憶領域に記憶したり、出力装置から出力したりする。DLL利用プログラム実行部251が暗号ライブラリ105を利用するときには、DLL利用プログラム実行部251のDLL隔離ロード判断部205が、上記試験中にアクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施があったことが記憶装置に記憶されていた場合、暗号ライブラリ105のロードをDLL隔離ロードプログラム実行部253に指示することを判断する。一方、上記試験中にアクセス制限部252が特定の操作を制限する記憶領域への当該操作の実施がなかったことが記憶装置に記憶されていた場合、DLL利用プロセス106へ直接暗号ライブラリ105をロードすることを判断する。
In the present embodiment, the DLL isolation load
実施の形態1では、DLL内の機能の呼び出しは、一般的な同一プロセス内での関数呼び出しではなく、プロセス間通信を使用した呼び出しとなる。これは呼び出しそのものの時間が長くなるほか、大量のデータを処理する場合にはデータの通信時間も必要となり、速度性能が低下する要因となる。そこで、実施の形態5及び6では、DLL隔離ロード判断部205において、その判断基準にDLLの試験中か否かという情報を加えている。試験中にはDLLを隔離し、セキュリティ違反記録・通知部401,402などを動作させる。ここでセキュリティ違反が記録・通知されないことを確認し、その他(DLLが実現する機能そのものなど)の試験が合格であれば、DLLを隔離せず、DLL利用プロセス106内にロードする。このようにしてセキュリティを保ちながら、性能の劣化を抑えることができる。
In the first embodiment, the function call in the DLL is not a general function call in the same process but a call using inter-process communication. This increases the time for the call itself, and also requires a data communication time when processing a large amount of data, which causes a reduction in speed performance. Therefore, in the fifth and sixth embodiments, the DLL isolation
試験に合格したことは、例えば試験が合格した場合には、特定の署名者による電子署名が付与するが、そうでない場合には異なる署名者による電子署名を付与することなどで判断できる。また、試験用に構成された機器ではDLL利用プログラム実行部251が、DLLを隔離してロードし、製品用に構成された機器ではDLL利用プログラム実行部251が、DLLをそのままロードするようにしてもよい。
Whether the test has passed can be determined, for example, by giving an electronic signature by a specific signer when the test passes, but by giving an electronic signature by a different signer otherwise. Also, in the device configured for testing, the DLL use
以上のように、実施の形態5及び6に係るプログラム実行装置100は、
DLLの試験時には実施の形態3及び4と同様のセキュリティ違反記録・通知部401,402を使用してセキュリティ違反の有無を確認し、セキュリティ違反が無く試験合格の場合に隔離せずにDLLのロード・実行を許可するDLL隔離ロード判断部205を有する。
As described above, the program execution device 100 according to the fifth and sixth embodiments is
At the time of a DLL test, the same security violation recording /
これにより、一旦信頼性を確認したDLLの機能を呼び出す際の実行時間が短縮できる。 As a result, the execution time when calling the DLL function whose reliability has been confirmed can be shortened.
実施の形態7.
本実施の形態について、主に実施の形態1との差異を説明する。
Embodiment 7 FIG.
In the present embodiment, differences from the first embodiment will be mainly described.
図8は、本実施の形態に係るプログラム実行装置100の構成を示すブロック図である。 FIG. 8 is a block diagram showing the configuration of the program execution device 100 according to the present embodiment.
本実施の形態では、DLL利用プログラム実行部251とDLL隔離ロードプログラム実行部253とが有する隔離DLL通信部202,204は、記憶装置151の特定の記憶領域を共有メモリ502(共有メモリ領域)として共有し、互いに通信する際にこの共有メモリ502を用いる。また、DLL利用プログラム実行部251は、ホスト側JNI103に、共有メモリ502を管理する共有メモリ管理部501を有する。
In the present embodiment, the isolated
前述したように、DLLの隔離により性能が劣化する可能性がある。性能劣化を改善する方法として、本実施の形態では、DLL利用プロセス106とDLL隔離プロセス203の間で共有メモリ502を設けている。
As described above, performance may be degraded by DLL isolation. As a method for improving performance degradation, in this embodiment, a shared
DLLが、実行エンジン102のどのデータにアクセスするかはわからない。したがって、実行エンジン102内の全ての(データ)メモリ領域が潜在的な共有メモリ502の対象領域となる。しかし、そのように共有メモリ502の対象を拡張すると、セキュリティが低下する。そこで、できる限りそのようなメモリ領域を集中させることで共有対象を限定させることが必要である。
It is not known which data of the
JNIにおいて、実行エンジン102からDLLに渡したことのあるデータ、あるいはDLLから実行エンジン102に渡したことのあるデータを今後も共有される可能性のあるデータとして、出来る限り集中させる。共有メモリ管理部501は、共有メモリ502の設定を行うほか、データアクセスの情報を収集する。Java(登録商標)言語の場合には、データは一度確保すると場所を動かないのではなく、ガベージコレクションのコンパクションによりデータの位置が移動する。共有メモリ管理部501は実行エンジン102のガベージコレクタ(メモリ管理機構)にヒント情報として渡し、集中させて欲しいデータをコンパクション実行時に集めてもらうようにする(図9参照)。あるいはまた、DLL側が生成したデータははじめから共有メモリ502に配置してもよい。このようにすることで、例えばあるDLLの機能の呼び出し中に大きなデータをアクセスするためにメモリを共有化し、そのDLLの機能の呼び出し中にさらに別のメモリにアクセスする場合に、同じページにデータがあれば、既に共有済みとなり、DLLが本来アクセスすべきでないデータを保護できる可能性が高まる。
In JNI, data that has been passed from the
上記説明では、同じページにあるデータは保護できないが、前述したようにJNIの特性や制限を利用し、JNIでアクセスできる範囲外のチェックを行うことが考えられる。即ち、あるページを共有設定するとともに、そのコピーをとる。DLL呼び出し終了後に共有を解除し、コピーと比較し、JNIでアクセスできる範囲外の領域が書き換えられているかチェックする。共有範囲を集中し限定することにより、チェック範囲を狭め、性能劣化を抑えることができる。また、プログラムのソースコードや実行コードの静的解析、試験時の実行ログ取得解析などにより、実行時ではなく、予め共有のために集中させるデータを予測することもできる。 In the above description, data on the same page cannot be protected. However, as described above, it is conceivable to check outside the range accessible by JNI using the characteristics and restrictions of JNI. That is, a certain page is set to be shared and a copy thereof is taken. After the DLL call is finished, sharing is canceled, and compared with the copy, it is checked whether the area outside the range accessible by JNI has been rewritten. By concentrating and limiting the shared range, it is possible to narrow the check range and suppress performance degradation. In addition, it is possible to predict data to be concentrated in advance for sharing, not at the time of execution, by static analysis of program source code and execution code, execution log acquisition analysis at the time of testing, and the like.
以上のように、本実施の形態に係るプログラム実行装置100は、
プログラム本体(DLL利用プログラム101)と隔離領域内のDLLの間に共有メモリ502を設定し、
DLL実行コードが作成したデータ、DLL実行コードがアクセスしたデータ、DLL実行コードの同じ関数内でアクセスされたデータを、DLL利用プログラム101のメモリ管理機構に通知する共有メモリ管理部501を有する。
As described above, the program execution device 100 according to the present embodiment is
Set the shared
The shared
これにより、隔離したDLLの機能を呼び出す際の実行時間が短縮できる。 This can shorten the execution time when calling the isolated DLL function.
以上、本発明の実施の形態について説明したが、これらのうち、2つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、2つ以上の実施の形態を部分的に組み合わせて実施しても構わない。 As mentioned above, although embodiment of this invention was described, you may implement combining 2 or more embodiment among these. Alternatively, one of these embodiments may be partially implemented. Or you may implement combining two or more embodiment among these partially.
100 プログラム実行装置、101 DLL利用プログラム、102 実行エンジン、103 ホスト側JNI、104 DLL側JNI、105 暗号ライブラリ、106 DLL利用プロセス、107 DLL呼出部、151 記憶装置、152 処理装置、201 DLL隔離ロードプログラム、202 隔離DLL通信部、203 DLL隔離プロセス、204 隔離DLL通信部、205 DLL隔離ロード判断部、251 DLL利用プログラム実行部、252 アクセス制限部、253 DLL隔離ロードプログラム実行部、254 DLL隔離ロードプログラム権限設定部、401 セキュリティ違反記録・通知部、402 セキュリティ違反記録・通知部、403 オブジェクト、501 共有メモリ管理部、502 共有メモリ、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群、940 インターネット、941 ゲートウェイ、942 LAN。
100 program execution device, 101 DLL use program, 102 execution engine, 103 host side JNI, 104 DLL side JNI, 105 cryptographic library, 106 DLL use process, 107 DLL calling unit, 151 storage device, 152 processing device, 201 DLL isolated load Program, 202 isolation DLL communication unit, 203 DLL isolation process, 204 isolation DLL communication unit, 205 DLL isolation load determination unit, 251 DLL use program execution unit, 252 access restriction unit, 253 DLL isolation load program execution unit, 254 DLL isolation load Program
Claims (9)
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるプログラム実行装置であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードし、
前記DLL利用プログラム実行部は、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示し、
前記DLL隔離ロードプログラム実行部は、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知することを特徴とするプログラム実行装置。 A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit that restricts access by a processing device other than the DLL use program execution unit to a storage area of a storage device that the DLL use program execution unit accesses during execution of the DLL use program;
A program execution device comprising: a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation region which is a storage region different from the storage region where the access restriction unit restricts access by a processing device There,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit,
The DLL isolation load program execution unit loads the DLL into the isolation area according to an instruction from the DLL use program execution unit,
The DLL utilization program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit,
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. A program execution apparatus that notifies an execution unit.
前記DLL内のコードを実行するために必要なレベルの権限を前記DLL隔離ロードプログラム実行部に設定するDLL隔離ロードプログラム権限設定部を備えることを特徴とする請求項1に記載のプログラム実行装置。 The program execution device further includes:
2. The program execution apparatus according to claim 1, further comprising a DLL isolation load program authority setting unit that sets authority of a level necessary for executing the code in the DLL in the DLL isolation load program execution unit.
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを実行中に前記アクセス制限部が特定の操作を制限する記憶領域へ当該操作を実施した場合、前記隔離DLL通信部を介して、当該操作があったことを前記DLL利用プログラム実行部に通知することを特徴とする請求項1に記載のプログラム実行装置。 The access restriction unit restricts a specific operation to a partial storage area of the storage device,
The DLL isolation load program execution unit executes the operation to a storage area where the access restriction unit restricts a specific operation while executing the code in the DLL loaded to the isolation region. The program execution apparatus according to claim 1, wherein the DLL use program execution unit is notified of the operation.
前記DLL利用プログラム実行部は、前記試験中に前記隔離領域とは別の記憶領域へのアクセスがなかったことが記憶装置に記憶されていた場合、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示する代わりに、前記アクセス制限部がアクセスを制限する記憶領域へ前記DLLをロードすることを特徴とする請求項1に記載のプログラム実行装置。 The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area as a test, and stores in the storage device whether or not a storage area other than the isolation area has been accessed during the execution. ,
When the DLL use program execution unit stores in the storage device that there was no access to a storage area different from the isolation area during the test, the DLL isolation program execution part executes the DLL load. 2. The program execution apparatus according to claim 1, wherein the access restriction unit loads the DLL into a storage area for restricting access instead of instructing the access to the storage area.
前記DLL隔離ロードプログラム実行部は、前記隔離領域へロードしたDLL内のコードを試験として実行し、当該実行中に前記アクセス制限部が特定の操作を制限する記憶領域への当該操作の実施があったかどうかを記憶装置に記憶し、
前記DLL利用プログラム実行部は、前記試験中に前記アクセス制限部が特定の操作を制限する記憶領域への当該操作の実施がなかったことが記憶装置に記憶されていた場合、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示する代わりに、前記アクセス制限部がアクセスを制限する記憶領域へ前記DLLをロードすることを特徴とする請求項1に記載のプログラム実行装置。 The access restriction unit restricts a specific operation to a partial storage area of the storage device,
Whether the DLL isolation load program execution unit executes the code in the DLL loaded into the isolation area as a test, and whether the access restriction unit restricted a specific operation during the execution. Memorize in the storage device,
When the DLL use program execution unit stores in the storage device that the access restriction unit has not performed the operation to the storage area that restricts the specific operation during the test, the DLL use program execution unit loads the DLL. 2. The program execution device according to claim 1, wherein instead of instructing the DLL isolation load program execution unit, the access restriction unit loads the DLL into a storage area where access is restricted.
前記DLL利用プログラム実行部が前記DLL利用プログラムの実行中にアクセスする記憶装置の記憶領域への前記DLL利用プログラム実行部以外によるアクセスを処理装置により制限するアクセス制限部と、
前記アクセス制限部がアクセスを制限する記憶領域とは別の記憶領域である隔離領域へ前記DLLをロードするDLL隔離ロードプログラムを処理装置により実行するDLL隔離ロードプログラム実行部とを備えるコンピュータを用いたプログラム実行方法であって、
前記DLL利用プログラム実行部と前記DLL隔離ロードプログラム実行部とは、互いに通信する隔離DLL通信部を有し、
前記プログラム実行方法は、
前記DLL利用プログラム実行部が、前記隔離DLL通信部を介して、前記DLLのロードを前記DLL隔離ロードプログラム実行部に指示するステップと、
前記DLL隔離ロードプログラム実行部が、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へ前記DLLをロードするステップと、
前記DLL利用プログラム実行部が、前記隔離DLL通信部を介して、前記隔離領域へロードされたDLL内のコードが実装する機能の呼び出しを前記DLL隔離ロードプログラム実行部に指示するステップと、
前記DLL隔離ロードプログラム実行部が、前記DLL利用プログラム実行部による指示に従って、前記隔離領域へロードしたDLL内のコードを実行し、前記隔離DLL通信部を介して、当該実行結果を前記DLL利用プログラム実行部に通知するステップとを備えることを特徴とするプログラム実行方法。 A DLL use program execution unit that executes a DLL use program that uses a DLL (dynamic link library) including a code that implements a specific function by a processing device;
An access restriction unit for restricting access by a processing device other than the DLL use program execution unit to a storage area of a storage device accessed by the DLL use program execution unit during execution of the DLL use program;
A computer comprising a DLL isolation load program execution unit for executing a DLL isolation load program for loading the DLL into an isolation area which is a storage area different from the storage area where the access restriction unit restricts access is executed by a processing device. A program execution method,
The DLL use program execution unit and the DLL isolation load program execution unit have an isolation DLL communication unit that communicates with each other,
The program execution method includes:
The DLL using program execution unit directing the DLL isolation load program execution unit to load the DLL via the isolation DLL communication unit;
The DLL isolation load program execution unit loading the DLL into the isolation region according to an instruction from the DLL use program execution unit;
The DLL using program execution unit instructs the DLL isolation load program execution unit to call a function implemented by a code in the DLL loaded into the isolation region via the isolation DLL communication unit;
The DLL isolation load program execution unit executes the code in the DLL loaded into the isolation region in accordance with an instruction from the DLL usage program execution unit, and the execution result is transmitted to the DLL usage program via the isolation DLL communication unit. And a step of notifying the execution unit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007071884A JP2008234248A (en) | 2007-03-20 | 2007-03-20 | Program execution device and program execution method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007071884A JP2008234248A (en) | 2007-03-20 | 2007-03-20 | Program execution device and program execution method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008234248A true JP2008234248A (en) | 2008-10-02 |
Family
ID=39906949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007071884A Pending JP2008234248A (en) | 2007-03-20 | 2007-03-20 | Program execution device and program execution method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008234248A (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009149A (en) * | 2008-06-24 | 2010-01-14 | Fujitsu Ltd | Dynamic library loading method and device |
CN102799815A (en) * | 2012-06-29 | 2012-11-28 | 安科智慧城市技术(中国)有限公司 | Method and device for safely loading program library |
CN103745138A (en) * | 2013-11-28 | 2014-04-23 | 福建天晴数码有限公司 | Method for hiding dll module derivative function |
JP2014085772A (en) * | 2012-10-22 | 2014-05-12 | Nippon Telegr & Teleph Corp <Ntt> | Illegal program execution system, illegal program execution method, and illegal program execution program |
JP2014238870A (en) * | 2009-12-15 | 2014-12-18 | マカフィー, インコーポレイテッド | System and method for behavior sandbox |
JP2016540282A (en) * | 2013-10-10 | 2016-12-22 | インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. | Method and apparatus for protecting a dynamic library |
-
2007
- 2007-03-20 JP JP2007071884A patent/JP2008234248A/en active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009149A (en) * | 2008-06-24 | 2010-01-14 | Fujitsu Ltd | Dynamic library loading method and device |
JP2014238870A (en) * | 2009-12-15 | 2014-12-18 | マカフィー, インコーポレイテッド | System and method for behavior sandbox |
CN105893228A (en) * | 2009-12-15 | 2016-08-24 | 迈克菲股份有限公司 | Systems and methods for behavioral sandboxing |
CN102799815A (en) * | 2012-06-29 | 2012-11-28 | 安科智慧城市技术(中国)有限公司 | Method and device for safely loading program library |
JP2014085772A (en) * | 2012-10-22 | 2014-05-12 | Nippon Telegr & Teleph Corp <Ntt> | Illegal program execution system, illegal program execution method, and illegal program execution program |
JP2016540282A (en) * | 2013-10-10 | 2016-12-22 | インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. | Method and apparatus for protecting a dynamic library |
CN103745138A (en) * | 2013-11-28 | 2014-04-23 | 福建天晴数码有限公司 | Method for hiding dll module derivative function |
CN103745138B (en) * | 2013-11-28 | 2016-09-07 | 福建天晴数码有限公司 | A kind of method of hiding dll module derivative function |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2510074C2 (en) | System and method of checking executable code before execution thereof | |
US9021605B2 (en) | Method and system for protecting sensitive data in a program | |
US10810309B2 (en) | Method and system for detecting kernel corruption exploits | |
RU2513909C1 (en) | Restricting memory areas for instruction reading depending on hardware mode and security flag | |
US20210124824A1 (en) | Securing secret data embedded in code against compromised interrupt and exception handlers | |
KR100708356B1 (en) | Handling faults associated with operation of guest software in the virtual-machine architecture | |
TWI464575B (en) | Method and system for transparently instrumenting an application program, and computing system | |
EP2541453B1 (en) | System and method for malware protection using virtualization | |
US7836299B2 (en) | Virtualization of software configuration registers of the TPM cryptographic processor | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
US20030188173A1 (en) | Hardened extended firmware interface framework | |
US20080201540A1 (en) | Preservation of integrity of data across a storage hierarchy | |
US20050086517A1 (en) | Page granular curtained memory via mapping control | |
Block et al. | Windows memory forensics: Detecting (un) intentionally hidden injected code by examining page table entries | |
JP6370098B2 (en) | Information processing apparatus, information processing monitoring method, program, and recording medium | |
JP2009140485A (en) | Method and system for whitelisting software component | |
US9197446B2 (en) | Address pinning | |
Zhang et al. | Android ion hazard: The curse of customizable memory management system | |
US20080028180A1 (en) | Inappropriate access detector based on system segmentation faults | |
JP2008234248A (en) | Program execution device and program execution method | |
van de Ven | New security enhancements in red hat enterprise linux v. 3, update 3 | |
US7484239B1 (en) | Detecting heap and stack execution in the operating system using regions | |
Melotti et al. | Reversing and fuzzing the google titan m chip | |
US9398019B2 (en) | Verifying caller authorization using secret data embedded in code | |
Piromsopa et al. | Survey of protections from buffer-overflow attacks |