JP2005149164A - 共有ライブラリに格納された外部公開関数の呼び出し方法 - Google Patents
共有ライブラリに格納された外部公開関数の呼び出し方法 Download PDFInfo
- Publication number
- JP2005149164A JP2005149164A JP2003386091A JP2003386091A JP2005149164A JP 2005149164 A JP2005149164 A JP 2005149164A JP 2003386091 A JP2003386091 A JP 2003386091A JP 2003386091 A JP2003386091 A JP 2003386091A JP 2005149164 A JP2005149164 A JP 2005149164A
- Authority
- JP
- Japan
- Prior art keywords
- shared library
- application
- area
- call
- shared
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】
共有ライブラリを介した外部公開関数への呼び出しを効率よく監査したい。
【解決手段】
共有ライブラリの外部公開関数をフックする注入共有ライブラリを用いてアプリケーションの共有ライブラリ呼出をフックし、カーネル領域に配置したフィルタモジュールで、共有ライブラリ呼出情報の記録、共有ライブラリ呼出の監査を行うことによって、共有ライブラリの変更無しに共有ライブラリ呼出をフィルタリングし、高速に一貫性のある記録を作成する。
【選択図】 図6
共有ライブラリを介した外部公開関数への呼び出しを効率よく監査したい。
【解決手段】
共有ライブラリの外部公開関数をフックする注入共有ライブラリを用いてアプリケーションの共有ライブラリ呼出をフックし、カーネル領域に配置したフィルタモジュールで、共有ライブラリ呼出情報の記録、共有ライブラリ呼出の監査を行うことによって、共有ライブラリの変更無しに共有ライブラリ呼出をフィルタリングし、高速に一貫性のある記録を作成する。
【選択図】 図6
Description
本発明は、計算機で実行されるアプリケーションによる共有ライブラリに格納された外部公開関数の呼び出し方法及びその方法を実行する計算機に関する。
一般の計算機は、CPU、メモリ、ストレージ、通信装置、キーボード、マウス又はカード読取装置といった入力装置、ディスプレイ又はプリンタといった出力装置で構成される。
計算機上で動作するソフトウェア、具体的にはオペレーティングシステム(以下「OS」)、アプリケーション、共有ライブラリ等は、ストレージに格納されている。
尚、共有ライブラリとは、ストレージ103の記憶容量又はメモリ105の使用量を削減するため、ソフトウェア世代管理手続きを削減するため、又はソフトウェア開発コストを削減するために、種々のプログラムで実行される定型的な手続き(関数等)を集めたファイルあるいはモジュールである。この共有ライブラリは、複数のプログラムで共有されるため、アプリケーション等のプログラム本体とは別個に作成、管理、保存される。
共有ライブラリには、プログラムコンパイル時にプログラム本体と結合される静的結合ライブラリと、実行時に結合される動的結合ライブラリとがある。
計算機では、図4に示すように、アプリケーションが使用する記憶空間を、アプリケーション領域1(401)、アプリケーション領域2(402)、アプリケーション領域3(404)のようにアプリケーション固有に持たせる場合が多い。ただし、全ての処理に共通して使用されるOSについては、アプリケーションとは別の記憶領域が割り当てられる。この領域をカーネル領域407という。通常、このカーネル領域407は、特別な権限が無いアプリケーションからは自由にアクセスされない。
これによって、各アプリケーションは他のアプリケーションが含む問題によって干渉されたり、破壊されたりすることを防ぐことができる。このとき、動的結合ライブラリは、OSの処理によって、実行コード領域とプログラム実行中に変更されない定数領域が、共有ライブラリ領域403、405、406のように、複数のプロセス間で共有される、即ち、一つの共有ライブラリが複数のメモリ領域にマッピングされるようになっている場合が多く、この場合、メモリ使用量削減やプログラム起動時間の削減効果が期待できる。
また、アプリケーションからカーネル領域407へのアクセスを制限しているOSの場合、一般的に、アプリケーションはカーネル領域407へのアクセス要求(以下「システムコール」)を発行する際、カーネル領域407で実行されているOS201等のプログラムに対して、ソフトウェア割り込みを発行する。
ところが、OSによってはシステムコールをカーネル領域407へのソフトウェア割り込みとしてではなく、動的結合ライブラリとして実装している場合がある。具体的には、アプリケーションがカーネル領域407で実行されているOSを呼び出す場合、一旦共有ライブラリを呼び出し、その共有ライブラリ内でソフトウェア割り込みを発生させることで、カーネル領域407へアクセスするのである。
非特許文献1には、こうしたアプリケーションからの共有ライブラリの呼び出しを、割り込みに関わるOSやアプリケーションと異なるプログラム(以下「外部プログラム」)によって捕捉(以下「フック」)し、その呼出内容を記録し、又はフィルタリングする方法として動的結合ライブラリへの注入という技術が開示されている。
注入は、図5に示すように、注入対象、すなわち呼び出しの対象となる共有ライブラリ(以下「注入対象共有ライブラリ」)503と同じ外部公開関数を有する注入共有ライブラリ502を作成し、注入対象共有ライブラリの代わりにアプリケーション501と結合(アプリケーションの記憶空間にマッピング)させる。さらに注入共有ライブラリは、アプリケーションの共有ライブラリ呼出に対する、記録、監査、拒否といった処理を行う。その処理が終了した後、注入共有ライブラリは、注入対象である共有ライブラリを呼び出すよう設計されるので、アプリケーションからはシステムが注入共有ライブラリなしで運用されている場合と同じように動作しているように見える。
Jeffrey Richter著 長尾高弘訳 Advanced Windows 改訂第3版 アスキー出版局。
従来技術では、共有ライブラリに対応する記憶領域403等が各アプリケーションの記憶領域401等の中に配置されるため、共有ライブラリから呼び出された関数等の変数が格納される記憶領域はアプリケーション毎の個別の記憶領域になるという問題がある。例えば、注入共有ライブラリによって共有ライブラリ呼び出しの記録をする場合、記録すべき変数等の情報が各アプリケーションに割り当てられた記憶空間に配置されていると、その情報を収集するために、計算機ではプロセス間通信や記憶空間切り替えを行って、目的の情報を有する記憶空間に仮想記憶空間を切り替える必要が発生し性能の低下を招く。またプログラムが複雑になることによって信頼性の低下を招く。
上記の不都合を解消するために、アプリケーションが配置されている記憶空間に各アプリケーションが共通に使用できる領域を設け、共有ライブラリで使用される変数等の情報を記録することが考えられる。しかし、時間の経過によって実行されるアプリケーションが切り替えられる可能性がある。この場合、一貫性をもった記録を作成するには、アプリケーション間でのロック機構を設ける必要がある。これは記録を頻繁に残さなければならない場合に性能低下につながり、また複数のロックを取得しなければならない場合、デッドロックに陥ってシステムが停止してしまう危険が発生するという問題がある。
さらに、共有ライブラリの動作を制御(変数を指定)することを考えた場合、共有ライブラリの変数領域はアプリケーション毎に個別に用意されるため、ファイル等共有領域を設けて、そこに動作制御用のコマンドを書き込み、共有ライブラリが定期的に共有領域を参照することによって、動作制御用のコマンドを受信するという構成にする必要がある。しかし、ファイル等の共有領域の読み込みは、システムコールに比べて非常に時間がかかるので、性能上問題があるうえ、システムの状態によってはファイルアクセスができない場合があるという問題もある。
本発明では、上記課題を解決するため、アプリケーションから共有ライブラリに格納された外部公開関数の呼び出しを注入共有ライブラリでフックする際に使用する注入共有ライブラリの共有領域や共有ライブラリへのコマンド伝達領域をカーネル領域に設ける。
又、注入共有ライブラリで外部公開関数の呼び出しを監査する際に使用される基準についての情報を格納する領域もカーネル領域に設ける。
更に、各アプリケーションの共有ライブラリからの外部公開関数の呼び出し履歴(以下「ログ」)を格納する領域も、カーネル領域に設ける。
本発明の他の特徴については、本明細書及び添付図面の記載により明らかにする。
共有ライブラリの外部公開関数へのアクセスを共有ライブラリの書換え無しにフックしてフィルタリングする際、一貫性のあるログを取得することが可能となる。
以下、実施形態の概要について説明する。
本実施形態においては、計算機101は、ソフトウエアプログラムとして、共有ライブラリ、共有ライブラリと関連付けられ、アプリケーションに結合される注入共有ライブラリ、カーネル領域に配置され、注入共有ライブラリがログ記録、管理者からのコマンド受信、共有ライブラリ外部公開関数呼び出し監査などの処理を行うフィルタモジュール及び注入共有ライブラリがカーネル領域に設けられた共通領域(以下「カーネルモード共有領域」)へ出力した結果を収集し、ファイルへの出力、管理者への報告などを行う出力アプリケーションを備える。
本実施形態においては、計算機101は、ソフトウエアプログラムとして、共有ライブラリ、共有ライブラリと関連付けられ、アプリケーションに結合される注入共有ライブラリ、カーネル領域に配置され、注入共有ライブラリがログ記録、管理者からのコマンド受信、共有ライブラリ外部公開関数呼び出し監査などの処理を行うフィルタモジュール及び注入共有ライブラリがカーネル領域に設けられた共通領域(以下「カーネルモード共有領域」)へ出力した結果を収集し、ファイルへの出力、管理者への報告などを行う出力アプリケーションを備える。
注入共有ライブラリは、注入対象となる共有ライブラリが有する外部公開関数へのアクセスの一部または全部をフックする。
カーネルモード共有領域は、カーネル領域の拡張であっても、カーネルへの動的追加モジュールであっても、カーネルモードで動作するデバイスドライバで実現されても良い。また、カーネルモード共有領域内には共有ライブラリ呼び出しの監査に使用する監査ポリシが配置される場合もある。
出力アプリケーションは、定期的またはカーネルモード共有領域からの呼び出しに基づいて、カーネルモード共有領域内に記録された情報を特定のファイルに出力する、管理者に報告を行うといった処理を行う。また、システム管理者からの指示といった注入共有ライブラリへのコマンドは、出力アプリケーションがカーネルモード共有領域内のコマンド受信領域に対し、書き込みを行うことによって発信することとできる。
アプリケーションから共有ライブラリへの関数の呼び出しが発生すると、呼び出しは注入共有ライブラリにフックされ、注入共有ライブラリへと制御が移る。注入共有ライブラリでは、呼び出し時刻、呼び出しを行ったユーザ、呼び出しを行ったアプリケーション、呼び出し時に渡された引数といった情報を取得することが可能である。注入共有ライブラリでは、これらの情報のカーネルモード共有領域への記録を、カーネル領域で実行されているフィルタモジュールにシステムコールの形で依頼する。フィルタモジュールは、受信した情報を記録し、監査基準に照らして、正当なアクセスであるかを監査する。この際、フィルタモジュールがコマンド受信領域を読み込んで、ログ取得実施やアクセス制御の有無を制御することができる。監査基準に照らして、不正であると判断されたアクセスについては、本来の共有ライブラリへの呼出を行わずに、記録を残すのみとする、いわゆる共有ライブラリへのアクセスのフィルタリングを行うことができる。
以下、実施形態の詳細について説明する。
図1は、本実施形態における計算機のブロック例を示す図である。計算機101は、CPU102、メモリ105、ストレージ103、通信装置106、キーボード、マウス又はカード読取装置といった入力装置104、ディスプレイ又はプリンタといった出力装置107を有する。
図3に示すように、計算機101上で動作するソフトウェア、具体的にはOS301、アプリケーション302、共有ライブラリ303等は、ストレージ103に格納されている。アプリケーション302や共有ライブラリ303は複数存在する場合が多い。ここで、ストレージ103は、ハードディスクドライブやDVDドライブといった、不揮発性の記憶装置である。
これらのソフトウェアを実行する際、計算機101は、図2に示すように、ストレージ103よりOS301、アプリケーション302及び共有ライブリ303を揮発性だが高速なメモリ105上に、OS201、アプリケーション202及び共有ライブリ203としてロードしてCPU102で実行する。以下、動作主体をソフトウェアで説明するが、実際は、そのソフトウェアを実行するCPU102によって動作は実行される。また、以下で説明されるソフトウェア間の通信は、指定された記憶領域にコマンドを記録することによるプログラム間通信によって行われる。
図6は、本実施形態における計算機101が有するソフトウェアのソフトウェア構成を示す図である。通常のアプリケーションプログラムは、アプリケーションが使用できる記憶領域(以下「ユーザモード領域」)601内に、アプリケーション1(603)やアプリケーション2(606)のように配置される。アプリケーションプログラム603、606は、コンパイル時または実行時に注入共有ライブラリ604、607と結合される。
注入共有ライブラリ604、607は、共有ライブラリ(605、608)とそれぞれ結合される。また、出力アプリケーション609も、ユーザモード領域601内に配置される。
ログ用共有領域610、コマンド受信領域611及び監査ポリシ612を有するフィルタモジュール613は、カーネル領域602に配置される。
ログ用共有領域610、コマンド受信領域611及び監査ポリシ612を有するフィルタモジュール613は、カーネル領域602に配置される。
アプリケーション1(603)、注入共有ライブラリ604、共有ライブラリ605及びフィルタモジュール613は同一の仮想空間に配置される。同様に、アプリケーション2(606)、注入ライブラリ607、共有ライブラリ608及びフィルタモジュール613は同一の仮想空間に、出力アプリケーション609とフィルタモジュール613は同一の仮想空間にそれぞれマップされる。アプリケーション1、アプリケーション2、出力アプリケーションは同時にマップされることはない。
アプリケーション1(603)およびアプリケーション2(606)はそれぞれ、注入対象となる共有ライブラリ605、608を呼び出す際には、図7に示す手順に従う。以下、図7に示された手順について説明する。尚、以下の説明では、アプリケーション1についてのみ説明するが、他のアプリケーションでも同様である。
まず、アプリケーション1は、共有ライブラリ605の外部公開関数を呼び出す(ステップ701)。
共有ライブラリ605への外部公開関数の呼び出しを受けたら、注入共有ライブラリ604は、その共有ライブラリ605への呼び出しをフックする。具体的なフック方法として、コンパイル時に注入共有ライブラリを静的にリンクする方法、動的リンクライブラリを注入ライブラリで置き換える方法、他アプリケーション空間で実行されているアプリケーションを用いて、目的とする外部公開関数へのアクセスをフックする方法などがある(ステップ702)。
共有ライブラリ605への外部公開関数の呼び出しを受けたら、注入共有ライブラリ604は、その共有ライブラリ605への呼び出しをフックする。具体的なフック方法として、コンパイル時に注入共有ライブラリを静的にリンクする方法、動的リンクライブラリを注入ライブラリで置き換える方法、他アプリケーション空間で実行されているアプリケーションを用いて、目的とする外部公開関数へのアクセスをフックする方法などがある(ステップ702)。
外部公開関数の呼出をフックした注入共有ライブラリ604は、フィルタモジュール613をシステムコールで呼び出し、フックした呼出に含まれる共有ライブラリ呼出情報をフィルタモジュール613に送信する。共有ライブラリ呼出情報については後述する(ステップ703)。
共有ライブラリ呼出情報を受信したフィルタモジュール613は、コマンド受信領域611を参照し、出力アプリケーションからのコマンドを読み込む。ここで参照されたコマンドは、後述のステップで評価され、フィルタモジュール613の動作を決定することに使用される(ステップ704)。
フィルタモジュール613は、コマンド受信領域611から取得したコマンドに基づいて、ログ用共有領域610に共有ライブラリ呼出情報を記録するか否かを決定する。尚、ログ用共有領域610には、アプリケーション毎に共有ライブラリ呼出情報が格納される。したがって、アプリケーションごとの排他制御を行わずにすむ。さらに、ログ用共有領域610は、計算機が複数のプロセッサを有する場合に、そのプロセッサごとに区分けされていても良い。
取得されるコマンドには、呼び出しを行ったアプリケーションの種類、アプリケーションを使用しているユーザ、アプリケーションが呼び出した外部公開関数の種類など、共有ライブラリ呼出情報をログ用共有領域610に記録する際の条件が含まれていてもよい。この場合、フィルタモジュール613は、コマンドに含まれる条件に従って、共有ライブラリ呼出情報の記録の是非を決定する(ステップ705)。
ステップ705でログ取得が必要と判断された場合、フィルタモジュール613は、ログ用共有領域610のアプリケーション1の専用領域に対し、共有ライブラリ呼出情報を出力する(ステップ706)。
その後、フィルタモジュール613は、コマンド受信領域611から取得したコマンドに基づいて、共有ライブラリへの外部公開関数の呼出を監査するか否かを決定する。コマンド受信領域611から取得したコマンドには、呼び出しを行ったアプリケーションの種類、アプリケーションを使用しているユーザ、アプリケーションが呼び出した外部公開関数の種類など、呼出の監査を実行するための条件が含まれていてもよい。この場合、フィルタモジュール613は、コマンドに含まれえている条件に基づいて、呼出の監査の是非を決定する(ステップ707)。
ステップ707で共有ライブラリ呼出の監査が必要と判断された場合、フィルタモジュール613は、後述する監査ポリシ612に基づき、注入共有ライブラリ604からフィルタモジュール613に送信された共有ライブラリ呼出情報が、正当な呼出であるかを監査する(ステップ708)。
その後、フィルタモジュール613は、ステップ708で行われた共有ライブラリ呼出監査の結果を判定する(ステップ709)。
呼出が許可された場合又はステップ707で共有ライブラリ呼出監査が不要とされた場合、フィルタモジュール613からその通知を受けた注入共有ライブラリ604は、共有ライブラリ605への外部公開関数の呼出を行う。注入共有ライブラリ604は、共有ライブラリ605内の特定の外部公開関数に対し注入を行っており、注入共有ライブラリ604でフックした共有ライブラリ605の外部公開関数に送信すべき関数の引数も、アプリケーション1から共有ライブラリ呼出情報として受け取っている。したがって、共有注入ライブラリ604は、これら引数等の情報を利用して、対象となる共有ライブラリ605の外部公開関数を、適切な引数を伴って呼出すことが可能である。
共有ライブラリ605から外部公開関数を呼び出した共有注入ライブラリ604は、その結果をアプリケーションに送信する。
共有ライブラリ呼出の監査の結果、呼出が許可されなかった場合、フィルタモジュール613は、ログ用共有領域610に不許可となった呼出の種類、不許可となった理由などを記録した上でアプリケーションにエラーを返す。エラーを返す他の方法として、共有ライブラリ605の呼出は行わず、アプリケーションに正常終了を返す方法、フィルタモジュール613が、許可されなかった呼出を共有ライブラリ605への呼出を許可される形に補正、すなわち呼出に使用される引数を許可される値に変更するといった補正を行ったうえで、注入共有ライブラリが共有ライブラリ呼出を行う方法などがある(ステップ711)。
図8は、ステップ703で、注入共有ライブラリがフィルタモジュールに対して送信する共有ライブラリ呼出情報の例を示す図である。共有ライブラリ呼出情報には、共有ライブラリ呼出元であるアプリケーション603の名前を示すアプリケーション名801、アプリケーション603のストレージ103に作成されたファイルシステム上の格納位置を示すアプリケーションパス802、アプリケーションを実行しているユーザを示すユーザ803、アプリケーションを実行しているユーザの所属するグループを示すグループ804、共有ライブラリ呼出時刻を示す呼出時刻805、アプリケーション内呼出位置を示す呼出元アドレス806、アプリケーションが共有ライブラリ呼出の際渡した引数の数を示す引数の個数807及びアプリケーションが共有ライブラリ呼出の際渡した引数の内容を示す引数のリスト808が含まれる。
図9は、監査ポリシ612に格納され、共有ライブラリ呼出の監査に用いられる監査ポリシの一例を示す図である。この監査ポリシは、少なくとも注入対象となる共有ライブラリの数だけ用意される。
列901は、監査対象となる共有ライブラリの外部公開関数名が登録される列である。以下の列に指定される項目は、列901で指定される関数への呼出を許可する条件を構成する。
列902は、列901で指定された関数への呼出を許可するアプリケーションの名前が登録される列である。登録される情報として、特定のアプリケーション名の他に、アプリケーション群を示す記号などを用いることで、アクセスを許可するアプリケーションの表記を簡略化する場合もある。
列903は、列901で指定された関数への呼出が許可されるアプリケーションが保存されるファイルシステム上の位置を表すアプリケーションパスが登録される列である。列902に登録された情報と組み合わせて使用することで、特定のパスに配置された任意のアプリケーションを指定し、アクセスを許可をすることができる。
列904は、列901で指定された関数への呼出が許可されるユーザを示す情報が登録される列である。登録される情報として、特定のユーザ名の他に、ユーザ郡を示す記号などを用いることで、アクセスを許可するユーザの表記を簡略化する場合もある。
列905は、列901で指定された関数への呼出を許可するユーザが所属するグループを示す情報が登録される列である。列904に登録された情報と組み合わせることによって、特定グループに所属する任意のユーザといったアクセス許可の仕方が可能となる。
列906は、列901で指定した関数への呼出が許可される時刻や時間帯を示す情報が登録される列である。
列907は、列901で指定した関数への呼出が許可されるアドレスを示す情報が登録される列である。特定のアドレス範囲内からの呼出を受け付けなくする指定や、コード領域からの呼出のみ許可する、スタック領域からの呼出を不許可とするといった指定が可能である。
列908は、列901で指定された関数への呼出を監査する際に、引数の内容まで監査する場合の監査方法が登録される列である。例えば、第1引数に80という値が入っていなかった場合、アクセスを不許可とするといった監査内容が記載される。監査方法の他の実施形態として、アクセス監査モジュールを外付け、即ち、注入共有ライブラリ604にアクセス監査モジュールを機能的に追加できるようにしておき、監査ポリシの列908でアクセス監査モジュールの指定を行うといった方法もある。
尚、監査条件は、必要に応じて追加されても良い。
尚、監査条件は、必要に応じて追加されても良い。
監査ポリシを用いた監査では、901で指定された関数に対し、902〜908で示された監査条件をすべて満たした場合のみ、アプリケーションの共有ライブラリの呼出が許可される。
本実施形態の計算機では、監査ポリシ612等のフィルタモジュール613の設定の変更が出力アプリケーション609を用いて行われる。具体的には、フィルタモジュール613の挙動を変更する場合、管理者は出力アプリケーション609を用い、コマンド受信領域611へ変更すべき情報の書き込みを行う。たとえばシステム運用中に、監査ポリシ612を更新する場合の手順について、図10を用いて説明する。
管理者は監査ポリシ変更の指示を出力アプリケーション609に入力する(ステップ1001)。管理者から監査ポリシ変更指示を受けた出力アプリケーション609は、フィルタモジュール613のコマンド受信領域611に対し、監査ポリシ変更コマンドを出力する(ステップ1002)。その後、フィルタモジュール613は出力アプリケーション609によって出力された管理ポリシ変更コマンドをコマンド受信領域611から読み取り、コマンドに従って監査ポリシ612を変更する(ステップ1003)。
尚、管理者は、上記で示した管理ポリシ612の変更の指示の他にも、フィルタモジュール613の動作開始や停止などの指示を出力アプリケーション609を用いて行うことができる。
次に、本実施形態を計算機のセキュリティを向上するソフトウェアに適用した例について説明する。
図11は、カーネル領域602にセキュリティモジュールを追加して、セキュリティを向上させるソフトウェアに対し、本実施形態を適用した場合のソフトウェア構成例を示すブロック図である。本来、セキュリティモジュール1107はセキュリティを保つためカーネル領域602に常駐している必要がある。しかし、セキュリティモジュール1107は、カーネル領域602内に存在するためには一般的なカーネルモジュールと同じ機能を備える必要があるため、悪意あるアプリケーションプログラム1103が適切な権限を取得することができれば、共有ライブラリ605を呼び出して、セキュリティモジュール1107をアンロードするまたは不活性化するといった無効化することができるという問題点がある。
図11は、カーネル領域602にセキュリティモジュールを追加して、セキュリティを向上させるソフトウェアに対し、本実施形態を適用した場合のソフトウェア構成例を示すブロック図である。本来、セキュリティモジュール1107はセキュリティを保つためカーネル領域602に常駐している必要がある。しかし、セキュリティモジュール1107は、カーネル領域602内に存在するためには一般的なカーネルモジュールと同じ機能を備える必要があるため、悪意あるアプリケーションプログラム1103が適切な権限を取得することができれば、共有ライブラリ605を呼び出して、セキュリティモジュール1107をアンロードするまたは不活性化するといった無効化することができるという問題点がある。
しかし、図11に示すように本実施形態を適用することで、矢印1108に示すように、悪意あるアプリケーション1103が共有ライブラリ604にアクセスする前に注入共有ライブラリ604によって、フィルタリングモジュール607にアクセスが通知される。更に、フィルタリングモジュール607が、自身に設定されている監視ポリシに基づいて、セキュリティモジュール1107の無効化を許可しないように動作する。これにより、意図しないセキュリティモジュールの無効化を防ぐことができる。
上述したように、フィルタモジュールをカーネル領域に設けることで、注入共有ライブラリからの共有ライブラリへのアクセス要求を監査する等の要求が、フィルタモジュールに対する一種のシステムコールになるので、計算機にロック機構を導入する必要が無い。又、カーネル領域においてアプリケーション毎にログを管理するので、処理情報の一貫性を保つことができる。又、ログ情報の取得の際にシステムコールを用いることで、処理速度が向上する。
101…計算機、102…CPU、103…ストレージ、104…入力装置、105…メモリ、106…通信装置、107…出力装置。
Claims (8)
- アプリケーションプログラムと共有ライブラリとを同一の仮想空間に配置し、かつ、アプリケーション毎に固有の仮想空間を有するようメモリ管理を行うオペレーティングシステムを実行する計算機において、
前記アプリケーションによる前記共有ライブラリへの関数呼出を注入共有ライブラリによってフックし、
前記注入共有ライブラリが前記メモリのカーネル領域に格納されたモジュールを呼び出し、
前記モジュールに設定された情報に基づいて該モジュールが処理を行い、その後、前記モジュールが前記共有ライブラリの関数を呼び出すことを特徴とする共有ライブラリ呼び出し方法。 - 前記モジュールが、
前記フックされた前記共有ライブラリへの呼出の内容を前記カーネル領域内に記録することを特徴とする請求項1記載の共有ライブラリ呼び出し方法。 - 前記モジュールが、
前記呼出の内容をあらかじめ定められたポリシに照らして監査し、
前記共有ライブラリの呼出の可否を決定することを特徴とする請求項2記載の共有ライブラリ呼び出し方法。 - 前記呼び出しの可否の結果を前記カーネル領域内に記録することを特徴とする請求項3記載の共有ライブラリ呼び出し方法。
- 前記呼出内容を前記カーネル領域内に記録する領域をプロセッサ毎に設けることを特徴とする請求項4記載の共有ライブラリ呼び出し方法。
- 前記カーネル領域内に記録された呼出内容を取得する出力アプリケーションを有することを特徴とする請求項5記載の共有ライブラリ呼び出し方法。
- 前記出力アプリケーションが前記モジュールの設定を変更するコマンドを発行し、
前記コマンドを、前記カーネル領域の所定の領域に格納し、
前記モジュールが前記所定の領域に格納されたコマンドに基づいて設定を変更することを特徴とする請求項6記載の共有ライブラリ呼び出し方法。 - 前記出力アプリケーションが前記監査のポリシを設定するコマンドを発行し、
前記コマンドを、前記カーネル領域の所定の領域に格納し、
前記モジュールが前記所定の領域に格納されたコマンドに基づいて前記監査のポリシを設定することを特徴とする請求項7記載の共有ライブラリ呼び出し方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003386091A JP2005149164A (ja) | 2003-11-17 | 2003-11-17 | 共有ライブラリに格納された外部公開関数の呼び出し方法 |
US10/762,368 US20050108721A1 (en) | 2003-11-17 | 2004-01-23 | Method of calling an export function stored in a shared library |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003386091A JP2005149164A (ja) | 2003-11-17 | 2003-11-17 | 共有ライブラリに格納された外部公開関数の呼び出し方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005149164A true JP2005149164A (ja) | 2005-06-09 |
Family
ID=34567396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003386091A Pending JP2005149164A (ja) | 2003-11-17 | 2003-11-17 | 共有ライブラリに格納された外部公開関数の呼び出し方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050108721A1 (ja) |
JP (1) | JP2005149164A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190045640A (ko) * | 2017-10-24 | 2019-05-03 | 삼성전자주식회사 | 부채널 공격으로부터 정보를 보호하는 방법 및 디바이스 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7669204B2 (en) * | 2004-10-14 | 2010-02-23 | International Business Machines Corporation | Autonomic SMT System tuning |
US7930710B2 (en) * | 2006-05-16 | 2011-04-19 | Panasonic Corporation | Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit |
US8060858B2 (en) * | 2006-12-29 | 2011-11-15 | Sap Ag | Injection library |
US20120246634A1 (en) * | 2011-03-23 | 2012-09-27 | Dell Products L.P. | Portable virtual applications |
US9087191B2 (en) * | 2012-08-24 | 2015-07-21 | Vmware, Inc. | Method and system for facilitating isolated workspace for applications |
US9077725B2 (en) | 2012-08-27 | 2015-07-07 | Vmware, Inc. | Configuration profile validation on iOS based on root certificate validation |
US9094413B2 (en) | 2012-08-27 | 2015-07-28 | Vmware, Inc. | Configuration profile validation on iOS Using SSL and redirect |
CN106897089B (zh) * | 2017-01-19 | 2020-04-03 | 上海帝联信息科技股份有限公司 | 系统操作执行方法及装置 |
CN108304268B (zh) * | 2018-02-05 | 2022-10-04 | 聘聘云(上海)智能科技有限公司 | 内存优化方法、移动终端及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684259B1 (en) * | 1995-10-11 | 2004-01-27 | Citrix Systems, Inc. | Method for providing user global object name space in a multi-user operating system |
US6292843B1 (en) * | 1998-01-16 | 2001-09-18 | International Business Machines Corporation | Quick loading of run time dynamic link library for OS/2 |
US6550060B1 (en) * | 1999-04-08 | 2003-04-15 | Novadigm, Inc. | Method and system for dynamic injection of dynamic link libraries into a windowed operating system |
US6463583B1 (en) * | 1999-04-08 | 2002-10-08 | Novadigm, Inc. | Dynamic injection of execution logic into main dynamic link library function of the original kernel of a windowed operating system |
US7210147B1 (en) * | 1999-10-05 | 2007-04-24 | Veritas Operating Corporation | IP virtualization |
US20050091535A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Application identity for software products |
-
2003
- 2003-11-17 JP JP2003386091A patent/JP2005149164A/ja active Pending
-
2004
- 2004-01-23 US US10/762,368 patent/US20050108721A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190045640A (ko) * | 2017-10-24 | 2019-05-03 | 삼성전자주식회사 | 부채널 공격으로부터 정보를 보호하는 방법 및 디바이스 |
KR102424357B1 (ko) | 2017-10-24 | 2022-07-25 | 삼성전자주식회사 | 부채널 공격으로부터 정보를 보호하는 방법 및 디바이스 |
Also Published As
Publication number | Publication date |
---|---|
US20050108721A1 (en) | 2005-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
CN102799817B (zh) | 用于使用虚拟化技术进行恶意软件保护的系统和方法 | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
RU2313126C2 (ru) | Система и способ для защиты от недоверенного кода режима управления с системой с помощью переадресации прерывания режима управления системой и создания контейнера виртуальной машины | |
JP4178036B2 (ja) | オペレーティングシステム抽象化/保護レイヤ | |
RU2513909C1 (ru) | Ограничение областей памяти для считывания команд в зависимости от аппаратного режима и флага безопасности | |
CN109583190B (zh) | 监控进程的方法和装置 | |
US8635438B2 (en) | Method and system of file manipulation during early boot time by accessing user-level data associated with a kernel-level function | |
US20060259487A1 (en) | Creating secure process objects | |
US20170364679A1 (en) | Instrumented versions of executable files | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
KR100917370B1 (ko) | 프로그램을 저장한 컴퓨터 판독 가능 매체, 프로그램을실행하는 정보 처리 장치, 및 프로그램을 실행하기 위한프로그램 제어 방법 | |
CN109840410A (zh) | 一种进程内数据隔离与保护的方法和系统 | |
US8990116B2 (en) | Preventing execution of tampered application code in a computer system | |
JP2009516310A (ja) | メモリページをプログラムに対応付けるページカラーリング | |
US20070113291A1 (en) | Method for administrating the function access | |
CN113256296B (zh) | 智能合约执行方法、系统、装置和存储介质 | |
JP2005149164A (ja) | 共有ライブラリに格納された外部公開関数の呼び出し方法 | |
US7143281B2 (en) | Method and apparatus for automatically changing kernel tuning parameters | |
US20020023224A1 (en) | Computer software installation | |
US7484239B1 (en) | Detecting heap and stack execution in the operating system using regions | |
JP2012212431A (ja) | セキュリティサービスに実装するシステムおよび方法 | |
JP5423063B2 (ja) | 情報処理装置と方法とプログラム | |
Abbadini et al. | Lightweight cloud application sandboxing | |
JP2001249848A (ja) | 先行特権レベルに基づく特権昇格 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050916 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060424 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060926 |