JP4020376B2 - Wwwサーバシステム保護方法 - Google Patents
Wwwサーバシステム保護方法 Download PDFInfo
- Publication number
- JP4020376B2 JP4020376B2 JP2002290437A JP2002290437A JP4020376B2 JP 4020376 B2 JP4020376 B2 JP 4020376B2 JP 2002290437 A JP2002290437 A JP 2002290437A JP 2002290437 A JP2002290437 A JP 2002290437A JP 4020376 B2 JP4020376 B2 JP 4020376B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- filtering
- request
- filter
- www server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、情報セキュリティ技術に関し、特にWWWサーバに対する外部からの攻撃に対する影響を最小化する方法に関する。
【0002】
【従来の技術】
インターネットは、各地に設けられたコンピュータネットワーク同士を広域回線を介して接続したコンピュータネットワーク網である。インターネットに接続されたコンピュータ間では様々なサービスの授受が行われているが、コンピュータウィルスや悪意あるクラッカー等のユーザにより、インターネットに接続されているコンピュータがシステム停止となったり重要なファイルが消去されるという問題が発生している。
【0003】
例えば、悪意あるクラッカー等のユーザがインターネットに接続されているWWWサーバにTelnet接続し、ポート135に一連のテキスト文字列を入力することでWWWサーバが停止してしまうといった、WWWサーバ自体の脆弱性によりシステムが停止してしまう可能性があった。
【0004】
また、WWWサーバではCGI(Common Gateway Interface)やJava(Javaは、サン・マイクロシステムズ・インコーポレーテッド の登録商標)が動作する場合がある。CGIではデータベースへのアクセスや、システムコマンドの実行によるサービスを提供する場合がある。CGIの場合は、その記述言語としてPerl等が用いられることが一般的である。このPerl自体のセキュリティは良好であるが、Perlプログラマがセキュリティホールを空けてしまう可能性が高い。例えば、Perl言語はSystemという関数を規定しており、System関数を利用すれば、オペレーティングシステム固有のコマンドを実行することができる。CGIスクリプトの中に上記のシステムコールが含まれている場合、クラッカーによって文字列に特定のメタキャラクタを追加されると、結果としてWWWサーバが停止したり重要なファイルが消去されることになる。
【0005】
WWWサーバはインターネットに接続されシステムのルート権限で動作していることから、WWWサーバを攻略してしまうとシステム権限で悪事を働くことが可能である。そのため、WWWサーバはクラッカーの攻撃対象にされ易かった。この事実はコンピュータウィルスに関しても同様である。
【0006】
このような問題に対処するため、従来はファイアウォールを利用して悪意あるクラッカーからシステムを防御したり、コンピュータウィルスに関しては、システムリソースのアクセスを随時監視するウィルス対策ソフトウェアにより防御していた。
【0007】
さらに、特許文献1には次のような技術が開示されている。
【0008】
基本的には、コンピュータウィルスの侵入を事前にチェックして、その侵入・増殖を防止するため、例えば、アプリケーションプログラムからオペレーティングシステムへの要求を取り込み、取り込まれた要求が正常な要求か又はコンピュータウィルスによる要求かを判別し、判別結果に基づいて該要求がコンピュータウィルスによる要求の場合には少なくともその要求を禁止するようにしたものである。
【0009】
上記判別の方法としては、データベース法(スキャン法)、バックアップ法、接種法、キーワード法、および手続法が開示されている。データベース法(スキャン法)は、各種のコンピュータウィルスによるコンピュータプログラムを予めデータベース化しておき、取り込んだアプリケーションからの要求とデータベース化されたデータとが一致している場合には、プロセスを中断することにより当該要求を禁止する。
【0010】
また、接種法は、検査対象になるファイルに、ウィルスの感染の有無を判別するプログラム(いわゆるワクチン)を予め接種しておき、システム起動時において、ファイル自身にウィルスの感染の有無を判別させるものである。例えば、本来の元プログラムファイルに対し、元プログラムファイル特有のSUMデータを作成し、このSUMデータとチェックプログラムを元プログラムファイルに接種し、かつ元プログラムファイルの先頭をチェックプログラムにジャンプするようにさせて、接種済プログラムファイルを作成する。接種済プログラムファイルが実行されると、チェックプログラムが起動する。そして、その時点で、元プログラムファイルのSUMを計算し、その計算値と、予め記録されているSUM値とを比較する。そして、一致している場合には正常であるとして、元プログラムファイルを起動する。これに対して、一致しない場合には、元プログラムファイルがウィルスに汚染されているとして、以降の実行を中止するものである。
【0011】
【特許文献1】
特開平5−108487号
【0012】
【発明が解決しようとする課題】
WWWサーバをインターネットで公開するには、WWWサーバをファイアウォールの外側のバリアセグメントに設置する必要があるため、WWWサーバを防御するにはファイアウォールは無力である。
【0013】
ウィルス対策ソフトウェアによる防御については、新種のウィルスが出現するたびにパッチを当て直す必要があり、既知のウィルスの対策にはなるが、新種のウィルスに対しては無力である。
【0014】
また、特許文献1に記載のデータベース法(スキャン法)では、各種のコンピュータウィルスによるコンピュータプログラムを予めデータベース化しておくが、そのようなコンピュータプログラムを事前に洩れなく調査する必要があり、調査に洩れたコンピュータプログラムに対しては、依然として無効である。接種法は、検査対象になるファイルに、ウィルスの感染の有無を判別するプログラムを予め接種しておくものであるが、検査対象外になっているファイルについては、依然として無効である。
【0015】
本発明は、上記の課題を解決するため、悪意あるクラッカーやコンピュータウィルスにWWWサーバがのっとられて関数の実行を不当に要求してきた場合でも、この要求を禁止する仕組を提供することを目的とする。また、悪意あるクラッカーやコンピュータウィルスによりWWWサーバプロセスが提供するサービスが停止あるいはプロセスの継続が不可能な状態に陥る場合も考えられる。このような事態が発生した場合、プロセスを継続または再起動してシステムの速やかな復旧を図ることを目的とする。
【0016】
【課題を解決するための手段】
上記目的を達成するため、請求項1に係る発明は、WWWサーバで動作するプロセスからシステムが提供する関数の実行要求があった場合に、該要求が不当な要求であったときには該要求を禁止するWWWサーバシステム保護方法であって、前記プロセス開始時の初期化処理において、当該プロセス内のモジュールプログラムがフィルタリング対象関数を含む場合、当該フィルタリング対象関数の実行コードの先頭部分に当該フィルタリング対象関数の実行の可否を確認するためのフィルタ処理を呼出す処理を追加するとともに、前記プロセスのアドレス空間内に、呼出されるフィルタ処理として、前記フィルタリング対象関数の実行の可否を確認する処理を行う実行コードを、設定するステップと、前記プロセスから前記フィルタリング対象関数の実行要求があった場合、当該関数の実行前に前記フィルタ処理を起動するステップと、前記フィルタ処理により、前記関数の実行の可否を確認するステップと、前記関数の実行が可なら当該関数を実行し、否なら当該関数を実行しないように処理を制御するステップとを備えることを特徴とする。
【0018】
請求項2に係る発明は、請求項1に記載のWWWサーバシステム保護方法において、システムが提供する各フィルタリング対象関数について、各フィルタリング対象関数で使用される引数のうちフィルタリングする引数についての型の定義情報と、引数のフィルタリングに用いる値であるフィルタと、該フィルタの値と一致する引数であった場合に実行を「許可」するか「禁止」するかを示す動作の定義情報とを保持しておき、前記フィルタ処理は、要求があったフィルタリング対象関数の引数の型が前記型の定義情報と一致し、かつ、要求があった関数の引数の値が前記フィルタの値と一致した場合の前記動作の定義情報が「許可」であったとき、前記関数の実行を可として当該関数を実行し、そうでないとき、前記関数の実行を否として当該関数を実行しないことを特徴とする。
【0019】
請求項3に係る発明は、請求項1または2に記載のWWWサーバシステム保護方法において、前記フィルタ処理は、前記関数実行の要求経路が、要求が正当な場合に経由するはずの特定の経路を経由しての要求か否か確認し、該要求が前記特定の経路を経由しての要求なら前記関数の実行を可として当該関数を実行し、該要求が前記特定の経路を経由しての要求でないなら前記関数の実行を否として当該関数を実行しないことを特徴とする。
【0020】
請求項4に係る発明は、請求項1から3の何れか1つに記載のWWWサーバシステム保護方法において、プロセス内で発生するソフトウェア例外を捕捉するステップと、ソフトウェア例外を捕捉した場合に、発生したソフトウェア例外を保持するシステム領域に格納されているすべてのソフトウェア例外を削除するステップと、ソフトウェア例外が発生した次の命令に制御を移行するステップとをさらに備えることにより、前記フィルタ処理で関数が実行されないことによる異常終了を回避することを特徴とする。
【0021】
請求項5に係る発明は、請求項1から3の何れか1つに記載のWWWサーバシステム保護方法において、監視対象とするプロセスの起動種別をデバッグモードとして起動するステップと、起動したプロセスから通知されるデバッグイベントをチェックすることにより、前記プロセスの継続が困難あるいは停止している状態にあることを検出するステップと、前記プロセスの継続が困難あるいは停止している状態にあることを検出したとき、前記プロセスを再起動するステップとをさらに備えることを特徴とする。
【0022】
【発明の実施の形態】
以下、本発明の一実施の形態を、図面を用いて説明する。
【0023】
図1は、本発明の実施形態のネットワーク構成を示す。本実施の形態では、複数のクライアントコンピュータ21、22とサーバコンピュータ23とがネットワーク20を介して接続している。クライアントコンピュータ21、22ではWWWブラウザ211、221が動作する。サーバコンピュータ23ではWWWサーバ231とDBサーバ232が動作する。DBサーバ232は、WWWサーバ231とは別のサーバコンピュータで動作する場合もある。
【0024】
図2は、WWWサーバ231等で動作するターゲットプロセス234(後述)に組込む本発明特有のモジュール等を示している。WWWサーバ231等には、デバッガプロセス5、フィルタモジュール6、デバッグモジュール7、フィルタリング関数テーブル8、およびフィルタテーブル9が組込まれている。
【0025】
図3は、サーバコンピュータ23内のシステム構成を示す。サーバコンピュータ23内には、WWWサーバ231で動作するWWWサーバプロセス2、WWWサーバプロセス2によって起動されて動作するCGIプロセス3、および、CGIプロセス3からのデータベースに関する要求をDBサーバ232で動作して実行するDBサーバプロセス4等のプロセスが存在する。本実施形態ではこのようなWWWサーバプロセス2を含めWWWサーバ231がアクセスするすべてのプロセスに、フィルタモジュール6、デバッグモジュール7、フィルタリング関数テーブル8、およびフィルタテーブル9を組み込む。
【0026】
なお、WWWサーバプロセス2を含めWWWサーバプロセス2がアクセスするすべてのプロセスを総称してターゲットプロセス234と呼び、またターゲットプロセス234を実行しているサーバをターゲットサーバと呼ぶ場合もある。
【0027】
デバッガプロセス5は、ターゲットプロセス234をデバッグプロセス(デバッグの対象とするプロセス)として起動する。
【0028】
次に、それぞれのモジュール等の機能を説明する。
【0029】
デバッガプロセス5は、ターゲットプロセス234をデバッグプロセスとして起動することによってターゲットプロセス234の挙動をモニタし、ターゲットプロセス234のプロセス継続が困難と判断した場合や異常の発生によって停止した場合は当該プロセス234を速やかに再起動する。具体的には、デバッガプロセス5は、WWWサーバプロセス2、CGIプロセス3、DBサーバプロセス4等のターゲットプロセス234を起動するが、その起動に際してターゲットプロセス234をデバッグプロセスとして起動する。
【0030】
ターゲットプロセス234をデバッグプロセスとして起動したデバッガプロセス5は、ターゲットプロセス234に関するデバッグイベントをシステムから受信できる。受信したデバッグイベントをチェックして上記判断(プロセス継続が困難になっていないか、あるいは異常発生していないかの判断)を行う。例えば、デバッガプロセス5がデバッグイベントの一つであるExceptionデバッグイベント(ソフトウェア例外の発生)を受信した場合に、そのExceptionがアクセス違反を示すものであればデバッガプロセス5は当該プロセス234を再起動する。
【0031】
フィルタモジュール6は、ターゲットプロセス234から実行要求のあった関数が禁止された関数として定義されている場合、その要求を防止する。ターゲットプロセス234がフィルタリング対象関数の実行要求をした場合、フィルタモジュール6は、自身内に生成したフィルタ関数を使用して当該関数のフィルタの定義に従って当該関数を実行したりしなかったりする。
【0032】
デバッグモジュール7は、ターゲットプロセス234で発生するソフトウェア例外を捕捉して、捕捉した例外をすべて削除したのち、例えば例外を発生させた実行コードの次の実行コードから処理を実行させることによって、当該プロセス234を継続させる。
【0033】
フィルタリング関数テーブル8は、フィルタモジュール6がフィルタリングする対象の関数であるフィルタリング対象関数を定義しており、システムが提供しているシステムモジュール内の関数のうち、フィルタリング対象関数として定義されている関数をフィルタモジュール6が書き換える場合に参照される。フィルタテーブル9は、フィルタリング対象関数に関するフィルタを定義しており、フィルタモジュール6内のフィルタ関数がフィルタ処理を行う際、実行要求のあったフィルタリング対象関数を実行するか否かのために参照される。
【0034】
図4に、フィルタモジュール6がフィルタ関数を生成する方法を示す。
【0035】
<生成前>は、ターゲットプロセス234のアドレス空間には、関数アドレステーブル411、アプリケーションモジュール412、およびシステムモジュール413がロードされている。関数アドレステーブル411はシステムモジュール413が提供している関数のアドレスを格納しており、アプリケーションモジュール412は関数アドレステーブル411を参照することで関数のアドレスを解決できる。
【0036】
この<生成前>の状態から、フィルタモジュール6は、フィルタリング関数テーブル8でフィルタリング対象関数として指定されたシステムモジュール413内の関数、例えば関数func1、の処理部414を関数func1のスタブ関数の処理部414’としてフィルタモジュール6内にコピーし、処理部414をフィルタ関数filterfunc1へのJMP命令に書き換えて処理部424とする。そして、関数func1のフィルタ処理部426と関数func1のスタブ関数stubfunc1呼出し部427とをフィルタ関数filterfunc1の後部に生成する。この結果が、<生成後>の状態である。
【0037】
以上のことにより、アプリケーションモジュール412'の実行時に、例えばfunc1関数の実行要求によりフィルタ関数filterfunc1が呼出され、フィルタ関数filterfunc1ではフィルタ処理部426により、関数func1のフィルタリングを行う。フィルタリングの結果、関数func1を実行しない場合はフィルタ関数filterfunc1内で処理が終了し、実行する場合は処理部414’の処理を実行後、システムモジュール413'のコピーしていない関数func1の残りの部分の先頭415へJUMPさせることによって実行要求のあった関数func1を実行する。
【0038】
このことにより、実行禁止としてフィルタリングされている関数の場合にはフィルタ関数内で処理が終了して当該関数は実行されないが、フィルタリング対象関数として定義されていない関数及び実行可としてフィルタリングされている関数の場合には当該関数が実行される。
【0039】
図5は、フィルタモジュール6が参照するフィルタリング関数テーブル8である。フィルタリング関数テーブル8には、関数51と、その引数52のフィールドが存在する。関数51には、フィルタモジュール6がフィルタリングする関数名が定義されている。引数52には、関数51で定義した関数で使用される引数の内、フィルタリングする引数についての型が定義されている。なお、フィルタリング対象外の引数は、引数52に定義する必要はない。
【0040】
図6は、フィルタモジュール6の動作を定義するフィルタテーブル9である。フィルタテーブル9には、フィルタリングする関数名を定義している関数61、関数61の引数をフィルタリングするフィルタ62、および、フィルタ62と一致する引数である場合の当該関数の動作を定義する動作63が定義されている。
【0041】
なお、図6の例では、引数のフィルタとしてフィルタ62の一項目しか例示してなく、またフィルタ62内に定義されている一つまたは複数の引数のうちのどれかに一致したら動作63の定義に従うものとしているが、これを例えば第1フィルタと第2フィルタ等のように複数項目とし、第1フィルタに定義されているの引数と第2フィルタに定義されているの引数との論理積によるフィルタリングにする等のきめ細かなフィルタとすることもできる。
【0042】
次に、実行要求のあった関数の実行/不実行を決定するフィルタモジュール6内フィルタ関数でのフィルタリング関数テーブル8とフィルタテーブル9の使われ方を説明する。
【0043】
例えば、アプリケーションモジュールが引数a0を”C:\WinNT\Employees”として関数CreateFileA611の実行を要求した場合、関数CreateFileA611のフィルタ62が引数a0を定義しているため、フィルタリング処理では引数値の比較を可能とするためにフィルタリング関数テーブル8の関数CreateFileA511の引数52を参照して引数a0の型属性を調べる。そして引数52に定義されている型属性を用いて、”C:\WinNT\Employees”と”C:\WinNT\*”を比較する。この場合、比較は一致するため、フィルタリング処理は動作63の定義に従って関数CreateFileA611の実行/不実行を決定することになるが、動作63の定義が「禁止」であるため、引数a0を”C:\WinNT\Employees”とする関数CreateFileA611は実行されないことになる。
【0044】
また、アプリケーションモジュールが引数a0を”C:\LInuxNT\Employees”として関数CreateFileA611の実行を要求した場合は、フィルタ62の引数値とは一致しないため、動作63の定義を参照することなく、引数a0を”C:\ LInuxNT\Employees”とする関数CreateFileA611は実行される。
【0045】
さらに、フィルタリング関数テーブル8に定義されている関数だけにフィルタリング処理を実行するようにフィルタ関数を生成しているので、フィルタリング関数テーブル8に定義されていない関数についての実行要求は無条件に実行される。
【0046】
なお、フィルタリング関数テーブル8のDeviceIoControl512の引数52とフィルタテーブル9の関数DeviceIoControl612のフィルタ62の定義がともに「−」となっているが、これは引数値が何であろうと関数DeviceIoControl613の実行は動作63の定義に従うことを示すものである。
【0047】
図7は、デバッグモジュール7がターゲットプロセス234で発生したソフトウェア例外を削除して当該プロセス234を可能な限り継続させるための処理を示したものである。図8は、デバッガプロセス5がターゲットプロセス234のプロセス継続は不可能と判断した場合のターゲットプロセス234を再起動する処理を示したものである。なお、図7および図8では、ターゲットプロセス234としてCGIプロセス3の例を示している。
【0048】
まず、図7のデバッグモジュール7について説明する。本実施形態で前提としているOS(オペレーティングシステム)では、システムがプロセスに組込むntdll.dllというモジュールのKiUserExceptionDispatcher関数内でプロセス内のソフトウェア例外を処理しているとする。このソフトウェア例外をデバッグモジュール7が捕捉できるようにするため、フィルタモジュール6は、CGIプロセス3でソフトウェア例外が発生した場合にデバッグモジュール7に制御が移るようKiUserExceptionDispatcher関数の内容を変更する。これによってデバッグモジュール7はソフトウェア例外の発生を捕捉できるようになる。デバッグモジュール7は、CGIプロセス3でのソフトウェア例外を捕捉した場合(図7の(1))、EXCEPTION_REGISTRATION構造体に格納されているソフトウェア例外をすべて削除して(図7の(2))、例えば例外を発生させた実行コードの次の実行コードから処理を実行させることによって、当該プロセス234を継続させる。なお、EXCEPTION_REGISTRATION構造体は、発生したソフトウェア例外を格納するシステム規定の構造体である。
【0049】
図8のデバッガプロセス5は、ターゲットプロセス234であるCGIプロセス3をデバッグプロセスとして起動する(図8の(1))。システムは、デバッグプロセスにデバッグイベントが発生する都度、デバッガプロセス5に、発生したデバッグイベントを通知する(図8の(2))。通知を受けたデバッグイベントがExceptionでアクセス違反を示す場合、デバッガプロセス5はCGIプロセス3がプロセス継続不能とみなし、必要に応じてCGIプロセス3を停止させた後、CGIプロセス3を再起動する(図8の(3))。
【0050】
図9は、フィルタモジュール6でのフィルタリングの具体例を示したものである。ターゲットプロセス234であるCGIプロセス3に侵入したコンピュータウィルス801が関数を実行しようとした場合の様子を、図5および図6も参照しながら、説明する。
【0051】
コンピュータウィルス801が、SQLExecDirect関数のアドレスを突き止め、DELETE FROM Employees文を引数a0としてこの関数を実行しようとした場合、当該関数はフィルタリング対象関数となっているため、フィルタモジュール6内のSQLExecDirect関数対応のフィルタ関数にJUMPする。フィルタ関数は、フィルタ関数テーブル8(図5)とフィルタテーブル9(図6)を参照して当該関数を実行するか否かを判断する。フィルタテーブル9のSQLExecDirect関数のフィルタ62がa0=” DELETE FROM Employees”であり、その動作63が「禁止」となっているため、DELETE FROM Employees文はフィルタモジュール6によって実行されないことになる。つまり、DBサーバプロセス4が管理するEmployeesDB85の削除は失敗する。
【0052】
また、コンピュータウィルス801が、CreateFileAのアドレスを突き止め、"C:\WinNT\*"を参照しようとしても、同様に「禁止」されているため、この関数はやはり実行されないことになる。
【0053】
なお、"D:\"を引数a0とするCreateFileAについては、当該関数のフィルタ62に引数a0が”C:\WinNT\*”と”E:\*”としか定義されていないため、この関数は実行されることになる。
【0054】
図10は、フィルタモジュール6がフィルタ関数を生成する処理を示すフローチャートである。
【0055】
ターゲットプロセス234のプロセス開始の初期化処理においてフィルタモジュール6が実行されると、フィルタモジュール6は、プロセス内にロードされているモジュールのリストアップを開始する(ステップ1101)。そして、未検出のモジュールが存在する間(ステップ1102)、フィルタリング関数テーブル8を参照してフィルタリング対象関数がそのモジュールに含まれるかチェックする(ステップ1103)。
【0056】
フィルタリング関数テーブル8に定義されているフィルタリング対象関数がそのモジュール内に存在する場合には、その関数の先頭部分の処理部をフィルタモジュール6内にスタブ関数としてコピーし、コピーした処理部の後ろに、コピーしなかった処理部の先頭へJUMPする実行コードを埋め込む(ステップ1104)。次に、フィルタリングを行うフィルタ関数と当該フィルタリング対象関数のスタブ関数を呼出す実行コードをフィルタモジュール6内に生成する(ステップ1105)。そして、フィルタリング対象関数の先頭部をフィルタ関数へのJMP命令に書き換える(ステップ1106)。すべてのモジュールに関して、上記のチェックを終了するまで継続する。
【0057】
図11は、実行要求のあった関数をフィルタリングするフィルタモジュール6内のフィルタ関数の処理を示すフローチャートである。
【0058】
アプリケーションモジュール412’(図4)から関数の実行要求があると、その関数がフィルタリング対象関数の場合、システムモジュール413'内のフィルタリング対象関数の先頭処理部がフィルタ関数へのJMP命令に置き換えられているので、フィルタリング対象関数の実行要求はフィルタ関数によってフィルタリングされる。
【0059】
フィルタ関数内では、まずフィルタ処理が実行される。フィルタ処理では、フィルタリング関数テーブル8とフィルタテーブル9を参照して、呼出された関数に指定されている引数値とフィルタ62に定義されている引数値とを比較する(ステップ1201)。指定されている引数値がフィルタ62に定義されている引数値と一致する場合、またはフィルタ62になにも定義されていない場合、動作63の定義を確認し(ステップ1202)、動作63の定義が「許可」の場合は、呼出された関数を実行して処理を終了する(ステップ1203)。動作63の定義が「禁止」の場合は、呼出された関数を実行しないで処理を終了する。また、指定されている引数値がフィルタ62に定義されている引数値と一致しない場合は(ステップ1201)、実行要求のあった関数を実行して処理を終了する。
【0060】
図12は、デバッグモジュール7がターゲットプロセス234内で発生するソフトウェア例外を削除してプロセスを継続させる処理を示すフローチャートである。
【0061】
デバッグモジュール7は、ソフトウェア例外を捕捉すると(ステップ1301)、EXCEPTION_REGISTRATION構造体73の中に要素が格納されているかチェックする(ステップ1302)。格納されている場合には、格納要素をすべて削除(ステップ1303)し、例外を発生させた実行コードの次の実行コードから処理を実行させるようにさせた後(ステップ1304)、新たなソフトウェア例外の捕捉を待つ。
【0062】
なお、デバッグモジュール7は、前述したように、ターゲットプロセス234で発生するソフトウェア例外を捕捉できるようKiUserExceptionDispatcher関数の内容を変更しているが、変更処理のフローチャートとその説明は省略する。
【0063】
図13は、デバッガプロセス5がターゲットプロセス234をデバッグプロセスとして起動し、アクセス違反等のデバッグイベントの発生があった場合に当該ターゲットプロセス234を再起動する処理を示すフローチャートである。
【0064】
デバッガプロセス5は、デバッグの開始もしくはデバッグプロセスとしてターゲットプロセス234を起動し(ステップ1401)、ターゲットプロセス234のデバッグイベント通知を待つ(ステップ1402)。イベントの通知があった場合、そのイベントがプロセスの継続が困難なイベントかチェックする(ステップ1403)。プロセスの継続が困難なイベントの場合には、ターゲットプロセス234を一旦終了させて、ステップ1401に戻り、あらためてターゲットプロセス234をデバッグプロセスとして再起動し、そうでない場合はイベントの通知待ち(ステップ1402)に入る。
【0065】
なお、図4ではアプリケーションモジュール412’等の関数の実行要求元からシステムモジュール413’を経由してフィルタモジュール6のフィルタ処理を実行するようにしているが、コンピュータウィルス等が関数アドレステーブル411’を参照せずして直接にシステムモジュール413’内の関数を呼出して関数の実行要求をしてくることが考えられる。
【0066】
図14は、そのような不当な要求に対して関数の実行を禁止することができるようにする方法を示す。すなわち、図14に示す方法では、コンピュータウィルスからの関数実行要求の排除の可能性をさらに高めるため、関数実行要求元が関数アドレステーブル411’を参照せずして直接にシステムモジュール413’内の関数を呼出して関数の実行要求をしてきたか否かで、関数の実行要求元が正規の要求元かコンピュータウィルスかを区別する。なお、図14において、図4と同じ要素は同じ番号で表すものとする。
【0067】
具体的に図14の方法では、関数アドレステーブル411’内のフィルタリング対象関数であるfunc1のアドレスをプレフィルタモジュール600’のprefunc1アドレスに書き換えておく。プレフィルタモジュール600’のprefunc1では、プレフィルタモジュール600’を経由したことを示す情報をある領域Aに設定した後、システムモジュール413’内のfunc1関数を呼出す。そして、フィルタモジュール6のfilterfunc1では、関数実行要求は、プレフィルタモジュール600’を経由しての要求か否かを領域Aを確認してチェックする。領域Aに、プレフィルタモジュール600’を経由したことを示す情報が設定されていない場合は、コンピュータウィルスからの関数実行要求であると判断して、当該関数実行要求のあった関数の実行をしないまま処理を終了する。すなわち、プレフィルタモジュール600’という特定の経路を経由しての要求は正当な要求として実行し、該特定の経路を経由しない要求は不当な要求としてこれを実行しないようにしている。
【0068】
【発明の効果】
以上説明したように、本発明によれば、悪意あるクラッカーやコンピュータウィルスにWWWサーバがのっとられて関数の実行を不当に要求してきた場合でも、この要求を禁止することができる。また、悪意あるクラッカーやコンピュータウィルスによりWWWサーバプロセスが提供するサービスが停止あるいはプロセスの継続が不可能な状態に陥りそうな事態が発生した場合でも、プロセスを継続または再起動してシステムの速やかな復旧を図ることができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態を示すネットワーク構成図
【図2】本実施の形態におけるプログラム構成図
【図3】サーバコンピュータのシステム構成図
【図4】フィルタ関数の生成方法を示す図
【図5】フィルタリング関数テーブルを示す図
【図6】フィルタテーブルを示す図
【図7】デバッグモジュールの機能を示す図
【図8】デバッガプロセスの機能を示す図
【図9】フィルタモジュールの機能を示す図
【図10】フィルタモジュールのフィルタ関数の生成に関するフローチャート図
【図11】フィルタモジュールの関数のフィルタリングに関するフローチャート図
【図12】デバッグモジュールの例外削除に関するフローチャート図
【図13】デバッガプロセスのフローチャート図
【図14】プレフィルタモジュールの生成方法を示す図
【符号の説明】
5…デバッガプロセス、6…フィルタモジュール、7…デバッグモジュール、8…フィルタリング関数テーブル、9…フィルタテーブル、21,22…クライアントコンピュータ、23…サーバコンピュータ、211,221…WWWブラウザ、231…WWWサーバ、232…DBサーバ。
Claims (5)
- WWWサーバで動作するプロセスからシステムが提供する関数の実行要求があった場合に、該要求が不当な要求であったときには該要求を禁止するWWWサーバシステム保護方法であって、
前記プロセス開始時の初期化処理において、当該プロセス内のモジュールプログラムがフィルタリング対象関数を含む場合、当該フィルタリング対象関数の実行コードの先頭部分に当該フィルタリング対象関数の実行の可否を確認するためのフィルタ処理を呼出す処理を追加するとともに、前記プロセスのアドレス空間内に、呼出されるフィルタ処理として、前記フィルタリング対象関数の実行の可否を確認する処理を行う実行コードを、設定するステップと、
前記プロセスから前記フィルタリング対象関数の実行要求があった場合、当該関数の実行前に前記フィルタ処理を起動するステップと、
前記フィルタ処理により、前記関数の実行の可否を確認するステップと、
前記関数の実行が可なら当該関数を実行し、否なら当該関数を実行しないように処理を制御するステップと
を備えることを特徴とするWWWサーバシステム保護方法。 - 請求項1に記載のWWWサーバシステム保護方法において、
システムが提供する各フィルタリング対象関数について、各フィルタリング対象関数で使用される引数のうちフィルタリングする引数についての型の定義情報と、引数のフィルタリングに用いる値であるフィルタと、該フィルタの値と一致する引数であった場合に実行を「許可」するか「禁止」するかを示す動作の定義情報とを保持しておき、
前記フィルタ処理は、要求があったフィルタリング対象関数の引数の型が前記型の定義情報と一致し、かつ、要求があった関数の引数の値が前記フィルタの値と一致した場合の前記動作の定義情報が「許可」であったとき、前記関数の実行を可として当該関数を実行し、そうでないとき、前記関数の実行を否として当該関数を実行しない
ことを特徴とするWWWサーバシステム保護方法。 - 請求項1または2に記載のWWWサーバシステム保護方法において、
前記フィルタ処理は、前記関数実行の要求経路が、要求が正当な場合に経由するはずの特定の経路を経由しての要求か否か確認し、該要求が前記特定の経路を経由しての要求なら前記関数の実行を可として当該関数を実行し、該要求が前記特定の経路を経由しての要求でないなら前記関数の実行を否として当該関数を実行しない
ことを特徴とするWWWサーバシステム保護方法。 - 請求項1から3の何れか1つに記載のWWWサーバシステム保護方法において、
プロセス内で発生するソフトウェア例外を捕捉するステップと、
ソフトウェア例外を捕捉した場合に、発生したソフトウェア例外を保持するシステム領域に格納されているすべてのソフトウェア例外を削除するステップと、
ソフトウェア例外が発生した次の命令に制御を移行するステップと
をさらに備えることにより、前記フィルタ処理で関数が実行されないことによる異常終了を回避することを特徴とするWWWサーバシステム保護方法。 - 請求項1から3の何れか1つに記載のWWWサーバシステム保護方法において、
監視対象とするプロセスの起動種別をデバッグモードとして起動するステップと、
起動したプロセスから通知されるデバッグイベントをチェックすることにより、前記プロセスの継続が困難あるいは停止している状態にあることを検出するステップと、
前記プロセスの継続が困難あるいは停止している状態にあることを検出したとき、前記プロセスを再起動するステップと
をさらに備えることを特徴とするWWWサーバシステム保護方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002290437A JP4020376B2 (ja) | 2002-10-02 | 2002-10-02 | Wwwサーバシステム保護方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002290437A JP4020376B2 (ja) | 2002-10-02 | 2002-10-02 | Wwwサーバシステム保護方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004126958A JP2004126958A (ja) | 2004-04-22 |
JP4020376B2 true JP4020376B2 (ja) | 2007-12-12 |
Family
ID=32282326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002290437A Expired - Fee Related JP4020376B2 (ja) | 2002-10-02 | 2002-10-02 | Wwwサーバシステム保護方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4020376B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018765A (ja) * | 2004-07-05 | 2006-01-19 | Infocom Corp | ソフトウエアの一時的な修正方法およびプログラム |
JP2011175457A (ja) * | 2010-02-24 | 2011-09-08 | Nec Corp | 情報処理システム及びアプリケーション実行制御方法 |
US10063533B2 (en) * | 2016-11-28 | 2018-08-28 | International Business Machines Corporation | Protecting a web server against an unauthorized client application |
-
2002
- 2002-10-02 JP JP2002290437A patent/JP4020376B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004126958A (ja) | 2004-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10984097B2 (en) | Methods and apparatus for control and detection of malicious content using a sandbox environment | |
KR102419574B1 (ko) | 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법 | |
US8397297B2 (en) | Method and apparatus for removing harmful software | |
US8646080B2 (en) | Method and apparatus for removing harmful software | |
US7870612B2 (en) | Antivirus protection system and method for computers | |
US7571482B2 (en) | Automated rootkit detector | |
US9092823B2 (en) | Internet fraud prevention | |
US7665139B1 (en) | Method and apparatus to detect and prevent malicious changes to tokens | |
US8935789B2 (en) | Fixing computer files infected by virus and other malware | |
US7810159B2 (en) | Methods, computer networks and computer program products for reducing the vulnerability of user devices | |
AU2006210698B2 (en) | Intrusion detection for computer programs | |
US8677491B2 (en) | Malware detection | |
US20060179484A1 (en) | Remediating effects of an undesired application | |
RU2697954C2 (ru) | Система и способ создания антивирусной записи | |
US7930744B2 (en) | Methods for hooking applications to monitor and prevent execution of security-sensitive operations | |
Vokorokos et al. | Application security through sandbox virtualization | |
RU101233U1 (ru) | Система ограничения прав доступа к ресурсам на основе расчета рейтинга опасности | |
JP5472604B2 (ja) | プロセス検疫装置、検疫システム、ファイル処理方法、及びプログラム | |
JP4020376B2 (ja) | Wwwサーバシステム保護方法 | |
Keromytis | The case for self-healing software | |
US20240111860A1 (en) | Systems and methods for preventing hollowing attack | |
US12019734B2 (en) | Methods and apparatus for control and detection of malicious content using a sandbox environment | |
RU2673407C1 (ru) | Система и способ определения вредоносного файла | |
Kranakis et al. | The case for self-healing software | |
Singh et al. | Malware analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050610 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070312 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070511 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070604 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070803 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070907 |
|
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: 20070921 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070921 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131005 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |