JP4091528B2 - 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム - Google Patents

不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム Download PDF

Info

Publication number
JP4091528B2
JP4091528B2 JP2003390130A JP2003390130A JP4091528B2 JP 4091528 B2 JP4091528 B2 JP 4091528B2 JP 2003390130 A JP2003390130 A JP 2003390130A JP 2003390130 A JP2003390130 A JP 2003390130A JP 4091528 B2 JP4091528 B2 JP 4091528B2
Authority
JP
Japan
Prior art keywords
unauthorized access
packet
access countermeasure
pointer
rule
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
Application number
JP2003390130A
Other languages
English (en)
Other versions
JP2005151492A (ja
Inventor
誠 岩村
大 柏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2003390130A priority Critical patent/JP4091528B2/ja
Publication of JP2005151492A publication Critical patent/JP2005151492A/ja
Application granted granted Critical
Publication of JP4091528B2 publication Critical patent/JP4091528B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は,バッファオーバーフローの脆弱性を悪用したスタックスマッシング攻撃に対する防御技術に関し,特に,攻撃コードを攻撃の度に変化させるスタックスマッシング攻撃に対する防御を実現する不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システムに関する。
本明細書中で本発明の説明のために用いている用語を簡単に説明する。
・「スタック」:スタックとは,最後に格納したオブジェクトが最初に取り出されるデータ構造のことをいう。
・「スタックスマッシング攻撃」:スタックメモリ上には,サブルーチン呼び出しの際に呼び出し元へ戻るためのリターンアドレスや,サブルーチン内でのみ利用される局所変数(ローカル変数)が格納される。よって,サブルーチン内でのみ利用される局所変数として宣言されたバッファに対して,バッファの境界を越えて書き込みが発生すると,リターンアドレスが書き換わることになる。スタックスマッシング攻撃は,この性質を利用してプログラムの処理フローを変更し,任意のプログラムを実行させる攻撃である。
・「DoS(Denial Of Service:サービス不能) 攻撃」:DoS攻撃とは,あるサービスを利用不能な状態に陥れる攻撃のことをいう。
・「フック」:ある関数が呼び出されるときに制御を横取りすることを,関数をフックするという。例えばデバッグ目的で,ある関数が正確に呼び出されているかを調べるために,一旦制御を横取りしログ出力するといった利用方法がある。
スタックメモリ上には,サブルーチン呼び出しの際に呼び出し元へ戻るためのリターンアドレスやフレームポインタ,サブルーチン内でのみ利用される局所変数,またオペレーティングシステムによっては例外ハンドラ(例外発生時に実行されるサブルーチン)のアドレス等が格納される。これを利用して,サブルーチン内でのみ利用される局所変数として宣言されたバッファに対して,バッファの境界を越えて書き込みが発生すると,リターンアドレス等が書き換わることになる。
スタックスマッシング攻撃は,この書き換えによりプログラムの処理フローを変更して,任意のプログラムを実行させるという攻撃である。このスタックスマッシング攻撃に対する防御を実現する従来技術として,標準的なメモリコピー関数の呼び出しをプログラム実行時にフック(関数が呼び出される時の制御の横取り)することで,コピー先のバッファのサイズをあらかじめチェックし,バッファオーバーフローを検出する手法がある(例えば,非特許文献1参照)。
また,保護対象プログラムに対して,コンパイル時にリターンアドレス等の保護のための特別の値であるガード変数を挿入して,関数のリターン処理の直前に,ガード変数の有効性を確認し,ガード変数が破壊されているときにはプロセスを異常終了する,という処理を挿入するものがある(例えば,特許文献1参照)。これにより,スタックスマッシング攻撃によるサーバの乗っ取りやデータの改竄といった不正侵入からホストを防御できるようになる。
White Paper,「Libsafe:Protectingcritical elements of stacks.」,"http://www.research.avayalabs.com/project/libsafe/", A.Baratloo,N.Singh,and T.Tsai,December 1999. 特開2001−216161号公報
また,本発明者等は,特願2003−130950号(未公開)において,リターンアドレスの書き換えが行われたことを検出すると,その攻撃により書き込まれた不正なリターンアドレスの位置を割り出し,その不正なリターンアドレスの指す位置から不正アクセス対処ルールを導き出し,ネットワークで同様のスタックスマッシング攻撃を遮断する技術を提案している。
これにより,スタックスマッシングによるDoS攻撃(Denial Of Service :あるサービスを利用不能な状態に陥れる攻撃)に対する脆弱性を排除することができるようになり,加えて,ネットワークでスタックスマッシング攻撃を防ぐことで,ネットワークに接続された他のホストもスタックスマッシング攻撃から守ることができるようになる。
しかし,以上のようなスタックスマッシング攻撃に対する不正アクセス対処ルールを生成する技術を用いて,スタックスマッシング攻撃に対するさらに完全な防御を実現するためには,次のような課題を解決する必要がある。
リターンアドレスの指す位置には,攻撃者が用意する攻撃プログラムが配置されているが,この攻撃プログラムは攻撃者により変更することが可能である。このため,攻撃の度に攻撃プログラムを変更されると,不正アクセス対処ルールのペイロードとは異なったペイロードのパケットが送られてくることになるため,不正アクセス対処装置では対処できなくなる。さらに,攻撃の度に不正アクセス対処ルールが生成され,この攻撃が継続的に行われると不正アクセス対処ルールの数が増え,不正アクセス対処装置のパケット処理性能が低下してしまう。
本発明はかかる事情に鑑みてなされたものであって,その目的は,攻撃プログラムが攻撃の度に変化する,スタックスマッシング攻撃に関する共通の攻撃痕跡を見つけることで,より高度なスタックスマッシング攻撃をネットワークで対策することにある。
この目的を達成するために,本発明によるスタックスマッシング攻撃対策システムは,外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する不正アクセス対処ルール生成装置と,その生成された不正アクセス対処ルールを使って,外部から送信されてくる不正なパケットをフィルタリングする不正アクセス対処装置とから構成され,それぞれ以下の処理を行う。
不正アクセス対処ルール生成装置は,従来技術によってバッファオーバーフローを検出する。具体的には,標準的なメモリコピー関数のコピー先のバッファサイズをあらかじめチェックし,バッファオーバーフローを検出する手法,もしくは,ガード変数が破壊されたかどうかをチェックすることでバッファオーバーフローを検出する手法により,スタックスマッシング攻撃を検出する。
これらの二つの検出手法の特徴は,次のとおりである。前者は,標準的なメモリコピー関数以外でのバッファオーバーフローを検出することはできないが,コンパイル作業が必要ないため,実行プログラムがコンパイル済みの状態で配布されていても適用可能である。また後者は,ほとんどのバッファオーバーフローを検出することができるが,コンパイル作業が必要なため,プログラムがソースコードで提供されていなければならない。
本発明では,プログラムの配布形式によってこれらの検出手法を使い分けることを特徴とする。これにより,様々なアプリケーションに適切なバッファオーバーフロー検知機構を追加することができるようになる。
次に,バッファオーバーフロー検出手法に応じた攻撃痕跡の抽出を行う。まず,標準的なメモリコピー関数のコピー先のバッファサイズをあらかじめチェックし,バッファオーバーフローを検出する手法は,コピー先のバッファがスタック上に存在するかどうかを調べる。もしスタック上に存在する場合には,現在のフレームポインタを起点にフレームポインタを辿り,コピー先バッファが属する関数フレームを探す。そして,コピー先バッファの先頭から次のフレームポインタが格納されている場所の手前までの長さを,バッファサイズとする。ここで得られたバッファサイズと,コピーされようとしているバッファサイズとを比較し,バッファオーバーフローを検出する。
そこで本発明では,ここで得られた関数フレームの位置より,バッファオーバーフローが発生したときに上書きされることになるフレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出し,それぞれの値を攻撃痕跡として抽出することを特徴とする。
次に,ガード変数によりバッファオーバーフローを検出する手法は,バッファとガード変数との間に他の変数が配置されないように,ローカル変数の配置を変更したり,ガード変数を挿入したりすることで,スタックのレイアウトを変更する。
そこで本発明では,このようにスタックのレイアウトが変更されることを考慮し,レイアウトが変更される前で同様のオーバーフローが生じた際に上書きされるフレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラへのポインタを割り出し,それぞれの値を攻撃の痕跡として抽出することを特徴とする。
また本発明では,不正アクセス対処ルール生成装置において,あらかじめネットワーク経由でのプログラムに対する入力をパケットログとして保存する点を特徴とする。続いて,上記処理で得られた攻撃の痕跡と,ネットワーク経由でのプログラムに対する入力パケットログを比較し,一致したバイト列を含むパケットの持つヘッダ情報(IPヘッダ・TCPへッダ・UDPへッダなどの情報)を得る。そして,そのようにして得たスタックスマッシング攻撃の痕跡のバイト列と,そのバイト列を含むパケットの持つヘッダ情報とをルール要素とする不正アクセス対処ルールを生成する。
スタックスマッシング攻撃を成功させるためには,リターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラヘのポインタ等をある限定された値で上書きする必要がある。そこで本発明では,このスタックスマッシング攻撃の性質を利用し,リターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラヘのポインタをスタックスマッシング攻撃の痕跡として抽出した後に,入力パケットログと比較し,不正アクセス対処ルールを生成することで,攻撃の度に攻撃プログラムを変更するような高度なスタックスマッシング攻撃に関しても,ネットワークで対策することが可能となる。
すなわち,本発明の不正アクセス対処ルール生成装置は,外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する装置であって,外部ネットワークから送信されたパケットを保存する手段と,メモリコピー関数のコピー先のバッファサイズをチェックしてバッファオーバーフローを検出する手段と,前記コピー先バッファが属する関数フレームの位置から,前記バッファオーバーフローが発生したときに書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出す手段と,
前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索する手段と,前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得する手段と,前記バイト列と前記ヘッダ中の情報とから,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録する手段とを備えることを特徴とする。
また,本発明の不正アクセス対処ルール生成装置は,外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する装置であって,外部ネットワークから送信されたパケットを保存する手段と,スタックメモリのバッファとフレームポインタとの間にガード変数を挿入して前記スタックメモリのレイアウトを変更する手段と,前記スタックメモリのバッファとフレームポインタとの間に挿入されたガード変数が破壊されたかをチェックしてバッファオーバーフローを検出する手段と,レイアウトが変更される前の前記スタックメモリのレイアウトから,前記バッファオーバーフローが生じた際に書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出す手段と,前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索する手段と,前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得する手段と,前記バイト列と前記ヘッダ中の情報とから,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録する手段とを備えることを特徴とする。
また,本発明の不正アクセス対処装置は,前記不正アクセス対処ルール生成装置から,前記不正アクセス対処ルールを受信し記憶装置に登録する手段と,前記登録された不正アクセス対処ルールをもとに,不正アクセス対処ルールにおけるヘッダ中の情報およびバイト列と,受信したパケットにおけるヘッダ中の情報およびバイト列とを照合し,一致する場合に受信したパケットは不正なパケットとして,外部から送信されてくる不正なパケットをフィルタリングする手段とを備えることを特徴とする。
また,本発明のスタックスマッシング攻撃対策システムは,前記不正アクセス対処ルール生成装置と,前記不正アクセス対処装置とから構成されることを特徴とする。
本発明が,先に本発明者等が特願2003−130950号において提案した方法と最も異なる点は,不正アクセス対処ルールに登録するバイト列の抽出の仕方である。すなわち,先に提案した方法では,不正なリターンアドレスの指す位置をスタックスマッシュ攻撃の痕跡の開始位置として,その痕跡のバイト列を抽出していたのに対し,本発明では,リターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラへのポインタ等の値そのものを攻撃痕跡として抽出する点が異なる。
本発明によって得られる効果は,攻撃コードを攻撃の度に変化させるスタックスマッシング攻撃に対しても,適切な不正アクセス対処ルールを生成することが可能になることである。
従来の不正アクセス対処ルール生成方法では,攻撃コードを攻撃の度に変化させられることで,パケットを遮断することができなかったり,不正アクセス対処ルールが攻撃の度に生成され,その数が増えることで不正アクセス対処装置のパケット処理性能が低下していた。
これに対して,本発明では,リターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラへのポインタ等をある限定された値で上書きする必要がある,というスタックスマッシング攻撃の性質を利用して,リターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラへのポインタ等の値そのものを攻撃痕跡として抽出し,入力パケットログと比較して生成した不正アクセス対処ルールを利用することで,より高度なスタックスマッシング攻撃に関しても,ネットワークで対策し,ネットワーク全体をスタックスマッシング攻撃から守ることが可能になる。
次に,本発明の実施の形態について図面を参照して詳細に説明する。図1に,本発明により実現されるスタックスマッシング攻撃対策システムのシステム構成例を図示する。
この図に示すように,本発明により実現されるスタックスマッシング攻撃対策システムは,上述した本発明の不正アクセス対処ルール生成装置の一例であるパケットフィルタリングルール生成装置1と,そこで得られたパケットフィルタリングルールを用いてパケットを遮断する,上述した本発明の不正アクセス対処装置の一例であるパケットフィルタリング装置2とから構成される。
ここで,パケットフィルタリングルール生成装置1は,例えば特定のホスト上に構築され,一方,パケットフィルタリング装置2は,ネットワークのゲートウェイ,もしくはネットワーク上に存在する任意のホスト上に構築されることになる。
図1を用いて,本発明によるスタックスマッシング攻撃対策についての大まかな処理の流れについて説明する。まず,外部ネットワークからスタックスマッシング攻撃によるパケットが,パケットフィルタリングルール生成装置1に送信されてくる。これを受けて,パケットフィルタリングルール生成装置1は,そのスタックスマッシング攻撃に対処するためのパケットフィルタリングルールを自動生成し,パケットフィルタリング装置2に対して,その自動生成したパケットフィルタリングルールを通知する。
パケットフィルタリング装置2は,パケットフィルタリングルール生成装置1から通知されたパケットフィルタリングルールを受信し,以後,外部ネットワークから入ってくる,そのパケットフィルタリングルールに含まれるスタックスマッシング攻撃と一致するパケットを遮断することにより,スタックスマッシング攻撃を遮断する。
図2に,この本発明によるスタックスマッシング攻撃対策についての処理を実現すべく用意されるパケットフィルタリングルール生成装置1の一構成例を図示し,図3に,この本発明によるスタックスマッシング攻撃対策についての処理を実現すべく用意されるパケットフィルタリング装置2の一構成例を図示する。
パケットフィルタリングルール生成装置1は,図2に示すように,プログラム毎の入力パケットを保存する入力パケット保存部10と,外部ネットワークから送信されてくる入力パケットをログとして入力パケット保存部10にロギングする入力パケットロギング部11と,所定のサーバ処理を実行するサーバプログラム12と,あらかじめサーバプログラム等に組み込まれて,バッファオーバーフロー(すなわち,スタックスマッシング攻撃の有無)を検出するバッファオーバーフロー検出部13と,スタックスマッシング攻撃の痕跡を抽出するスタックスマッシング攻撃痕跡抽出部14と,スタックスマッシング攻撃を遮断するためのパケットフィルタリングルールを生成するパケットフィルタリングルール生成部15と,パケットフィルタリング装置2に対して,生成されたパケットフィルタリングルールを通知するパケットフィルタリングルール通知部16とを備える。
ここで,入力パケット保存部10は,スタックスマッシング攻撃の痕跡を特定するために用意されるものであって,図4に示すように,プログラム毎に,そのプログラムに送信されてきたパケットのへッダ情報(プロトコル種別,送信元IPアドレス,送信元ポート番号,送信先IPアドレス,送信先ポート番号など)と,そのパケットのペイロードなどを保存することになる。
一方,パケットフィルタリング装置2は,図3に示すように,スタックスマッシング攻撃を遮断するためのパケットフィルタリングルールを保存するパケットフィルタリングルールテーブル20と,パケットフィルタリングルール生成装置1から送信されてくるパケットフィルタリングルールを受信するパケットフィルタリングルール受信部21と,受信されたパケットフィルタリングルールをパケットフィルタリングルールテーブル20に登録するパケットフィルタリングルール登録部22と,パケットフィルタリングルールテーブル20に保存されるパケットフィルタリングルールをもとに,外部から送信されてくるスタックスマッシング攻撃のパケットを遮断するパケットフィルタリング部23とを備える。
次に,パケットフィルタリングルール生成装置1の実行するスタックスマッシング攻撃の痕跡の抽出処理について説明する。図5と図6では,標準的なメモリコピー関数の呼び出しをプログラム実行時にフックすることで,コピー先のバッファのサイズをあらかじめチェックし,バッファオーバーフローを検出することにより,スタックスマッシング攻撃の痕跡を抽出する処理を説明する。
また,図7と図8では,保護対象プログラムに対して,コンパイル時にリターンアドレス等の保護のための特別の値であるガード変数を挿入して,関数のリターン処理の直前に,ガード変数の有効性を確認することで,バッファオーバーフローを検出することにより,スタックスマッシング攻撃の痕跡を抽出する処理を説明する。
図5中に示す100は攻撃対象プログラムのスタックメモリ,200は攻撃者が入力可能なコピー元バッファである。スタックスマッシング攻撃の攻撃者は,用意した攻撃プログラムに制御を渡すために,コピー先バッファサイズよりも大きいデータをコピー元バッファ200に格納し,フレームポインタやリターンアドレス,またはオペレーティングシステムによっては例外ハンドラへのポインタを,スタックメモリ100に上書きすることで,攻撃を実行する。
このスタックスマッシング攻撃の有無を検出するために,パケットフィルタリングルール生成装置1は,標準的なメモリコピー関数をフックし,現在のフレームポインタを起点にフレームポインタを辿ることで,コピー先バッファがどの関数フレームに属するかを決定する。そして,コピー先バッファの先頭から次のフレームポインタが格納されている場所の手前までの長さを,コピー先バッファのサイズとし,このサイズがコピー元バッファ200のサイズより小さい場合に,スタックスマッシング攻撃が行われたと判断する。
パケットフィルタリングルール生成装置1は,スタックスマッシング攻撃が行われたことを検出した場合には,スタックメモリ100に上書きされるであろうフレームポインタやリターンアドレス,またはオペレーティングシステムによっては例外ハンドラへのポインタの値を,スタックスマッシング攻撃の痕跡として抽出する。
図6は,パケットフィルタリングルール生成装置1の実行するスタックスマッシング攻撃の痕跡抽出処理フローである。パケットフィルタリングルール生成装置1は,標準的なメモリコピー関数の実行をフックし,図6の処理フローに示すように,まず,ステップS10でコピー先バッファのサイズがコピー元バッファ200のサイズより小さいかどうかを判断し,大きいかもしくは等しいときには,スタックスマッシング攻撃が行われなかったと判断して,そのまま処理を終了する。
一方,ステップS10で,コピー先バッファのサイズがコピー元バッファ200のサイズより小さいことがわかり,スタックスマッシング攻撃が行われたと判断したときには,ステップS11に進み,スタックスマッシング攻撃が設定したリターンアドレスやフレームポインタ,またオペレーティングシステムによっては例外ハンドラヘのポインタの値をスタックスマッシング攻撃の痕跡とする。
図7中の300は攻撃対象プログラムのスタックメモリ,400はガード変数やローカル変数の入れ替えが生じない通常コンパイル時のスタックメモリ,500は攻撃者が入力可能なコピー元バッファである。
スタックスマッシング攻撃の攻撃者は,用意した攻撃プログラムに制御を渡すために,コピー先バッファサイズよりも大きいデータをコピー元バッファに格納し,フレームポインタやリターンアドレス,またはオペレーティングシステムによっては例外ハンドラへのポインタを,スタックメモリ300に上書きすることで,スタックスマッシング攻撃を実行する。
このスタックスマッシング攻撃の有無を検出するために,パケットフィルタリングルール生成装置1は,バッファとフレームポインタの間に,特別の値であるガード変数を挿入する。また,バッファとガード変数との間に他の変数が配置されないように,ローカル変数の配置を変更する。そして,関数のリターン処理の直前に,このガード変数の有効性を確認する。この確認で,ガード変数が破壊されていることがわかった場合,スタックスマッシング攻撃が行われたと判断する。
パケットフィルタリングルール生成装置1は,スタックスマッシング攻撃が行われたことを検出した場合には,ガード変数の挿入やローカル変数の入れ替えが生じる前のスタックメモリ400を通常コンパイル時のスタックメモリ使用ルールから想定することで,攻撃者が上書きしようとしたリターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラヘのポインタの値を割り出し,それらの値をスタックスマッシング攻撃の痕跡とする。
ここで,スタックスマッシング攻撃の攻撃者は,ローカル変数が入れ替わっていたり,ガード変数が挿入されていることを知らないため,本来のリターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラへのポインタの格納位置とは異なった場所を,書き換えようとする。
図8は,パケットフィルタリングルール生成装置1の実行するスタックスマッシング攻撃の痕跡抽出処理フローである。パケットフィルタリングルール生成装置1は,関数リターンの直前で,図8の処理フローが示すように,まず,ステップS20で,ガード変数を読み取り,続くステップS21で,その読み取ったガード変数が書き換えられているか否かを判断し,ガード変数が書き換えられていない場合には,スタックスマッシング攻撃が行われなかったと判断して,そのまま処理を終了する。
一方,ステップS21で,ガード変数が書き換えられていることでスタックスマッシング攻撃が行われたと判断したときには,ステップS22に進み,スタックスマッシング攻撃が設定したリターンアドレスやフレームポインタ,またはオペレーティングシステムによっては例外ハンドラへのポインタの値をスタックスマッシング攻撃の痕跡とする。
次に,図9の処理フローに従って,パケットフィルタリングルール生成装置1の実行するパケットフィルタリングルール生成処理について説明する。まず,スタックスマッシング攻撃の痕跡の検出処理が完了すると,次にステップS30で,入力パケット保存部10に保存される攻撃対象プログラムに送られてきたパケットを検索対象として,リターンアドレスやフレームポインタ,またオペレーティングシステムによっては例外ハンドラへのポインタの値と一致するバイト列を探し出し,そのバイト列をスタックスマッシング攻撃の痕跡とする。
続いて,ステップS31で,入力パケット保存部10を参照することで,その検索したバイト列を含むパケットの持つヘッダ情報を取得する。すなわち,プロトコル種別や送受信IPアドレスや送受信ポート番号などを取得する。ステップS32では,検索したバイト列と取得したへッダ情報とから,遮断するパケットについて記述するパケットフィルタリングルールを生成する。ここで生成するパケットフィルタリングルールは,例えば図10に示すように,プロトコル種別が“UDP”で,送信先ポート番号が“53”で,ペイロード(バイト列)が“40 11 b7 a1 c0 …”のパケットについては,スタックスマッシング攻撃のパケットであるので,それについては遮断する必要があるということについて記述するデータである。続いて,ステップS33で,パケットフィルタリング装置2に対して,生成したパケットフィルタリングルールを通知して,処理を終了する。
この通知を受けて,パケットフィルタリング装置2は,図3に示した構成に従って,パケットフィルタリングルール生成装置1から通知されたパケットフィルタリングルールを受信して,パケットフィルタリングルールテーブル20に保存する処理を行う。これによって,パケットフィルタリング装置2のパケットフィルタリングルールテーブル20には,図11に示すようなルール構造をもつパケットフィルタリングルール(複数のこともある)が格納されることになる。
次に,図12の処理フローに従って,パケットフィルタリング装置2の実行するパケットフィルタリング処理について説明する。パケットフィルタリング装置2は,外部ネットワークから送信されてくるパケットを受信すると,図12の処理フローに示すように,まず,ステップS40で受信したパケットのペイロードを抽出する。
続いて,ステップS41で受信したパケットのヘッダ情報から,プロトコル種別と送信先ポート番号とを取得する。続いて,ステップS42で,取得したプロトコル種別と一致するプロトコル種別をルール要素とするパケットフィルタリングルールがパケットフィルタリングルールテーブル20に登録されているか否かを判断し,登録されていないと判断したときには,受信したパケットがスタックスマッシング攻撃のパケットではないので,ステップS43に進み,受信したパケットを送信先ホストに転送して処理を終了する。
一方,ステップS42で,プロトコル種別が一致するパケットフィルタリングルールがパケットフィルタリングルールテーブル20に登録されていると判断したときには,ステップS44に進み,そのパケットフィルタリングルールの持つ送信先ポート番号が取得した送信先ポート番号と一致するか否かを判断し,一致しないと判断したときには,受信したパケットがスタックスマッシング攻撃のパケットではないので,ステップS45に進み,受信したパケットを送信先ホストに転送して,処理を終了する。
一方,ステップS44で,プロトコル種別が一致するパケットフィルタリングルールが送信先ポート番号についても一致すると判断したときには,ステップS46に進み,そのパケットフィルタリングルールの持つペイロードが抽出したペイロードと一致するか否かを判断する。一致しないと判断したときには,スタックスマッシング攻撃のパケットでないので,ステップS47に進み,受信したパケットを送信先ホストに転送して,処理を終了する。また,ステップS46で,ペイロードについても一致すると判断したときには,受信したパケットがスタックスマッシング攻撃のパケットであるので,ステップS48に進み,受信したパケットを遮断して,処理を終了する。
このようにして,パケットフィルタリング装置2は,プロトコルと送信先ポート番号とペイロードとがパケットフィルタリングルールと一致するパケットを受信する場合に,その受信したパケットを遮断するように処理する。
ここで,バッファオーバーフローの脆弱性が存在するサービスを外部ネットワークに提供したくない場合には,運用によってパケットフィルタリングルールとして用いるルール要素を減らすこともできる。
以上のパケットフィルタリングルール生成装置1およびパケットフィルタリング装置2が行う処理は,コンピュータとソフトウェアプログラムとによって実現することができ,そのプログラムをコンピュータ読み取り可能な記録媒体に記録して提供することも,ネットワークを通して提供することも可能である。
スタックスマッシング攻撃対策システムのシステム構成例を示す図である。 パケットフィルタリングルール生成装置の一構成例を示す図である。 パケットフィルタリング装置の一構成例を示す図である。 入力パケット保存部に保存されるデータ構成の例を示す図である。 スタックスマッシング攻撃の痕跡の抽出を説明する図である。 スタックスマッシング攻撃の痕跡抽出処理フローを示す図である。 スタックスマッシング攻撃の痕跡の抽出を説明する図である。 スタックスマッシング攻撃の痕跡抽出処理フローを示す図である。 パケットフィルタリングルール生成処理フローを示す図である。 パケットフィルタリングルールの一例を示す図である。 パケットフィルタリングルールテーブルに格納されるパケットフィルタリングルールの一例を示す図である。 パケットフィルタリング処理フローを示す図である。
符号の説明
1 パケットフィルタリングルール生成装置
2 パケットフィルタリング装置
10 入力パケット保存部
11 入力パケットロギング部
12 サーバプログラム
13 バッファオーバーフロー検出部
14 スタックスマッシング攻撃痕跡抽出部
15 パケットフィルタリングルール生成部
16 パケットフィルタリングルール通知部
20 パケットフィルタリングルールテーブル
21 パケットフィルタリングルール受信部
22 パケットフィルタリングルール登録部
23 パケットフィルタリング部

Claims (7)

  1. 外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する方法であって,
    外部ネットワークから送信されたパケットを保存するステップと,
    メモリコピー関数のコピー先のバッファサイズをチェックしてバッファオーバーフローを検出するステップと,
    前記コピー先バッファが属する関数フレームの位置から,前記バッファオーバーフローが発生したときに書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出すステップと,
    前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索するステップと,
    前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得するステップと,
    前記バイト列と前記ヘッダ中の情報とをルール要素として,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録するステップとを有する
    ことを特徴とする不正アクセス対処ルール生成方法。
  2. 外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する方法であって,
    外部ネットワークから送信されたパケットを保存するステップと,
    スタックメモリのバッファとフレームポインタとの間にガード変数を挿入して前記スタックメモリのレイアウトを変更するステップと,
    前記スタックメモリのバッファとフレームポインタとの間に挿入されたガード変数が破壊されたかどうかをチェックしてバッファオーバーフローを検出するステップと,
    レイアウトが変更される前の前記スタックメモリのレイアウトから,前記バッファオーバーフローが生じた際に書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出すステップと,
    前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索するステップと,
    前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得するステップと,
    前記バイト列と前記ヘッダ中の情報とをルール要素として,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録するステップとを有する
    ことを特徴とする不正アクセス対処ルール生成方法。
  3. 外部から送信されてくる不正なパケットをフィルタリングする方法であって,
    請求項1または請求項2に記載の不正アクセス対処ルール生成方法によって生成された不正アクセス対処ルールを受信し記憶装置に登録するステップと,
    前記登録された不正アクセス対処ルールをもとに,不正アクセス対処ルールにおけるヘッダ中の情報およびバイト列と,受信したパケットにおけるヘッダ中の情報およびバイト列とを照合し,一致する場合に受信したパケットは不正なパケットとして,外部から送信されてくる不正なパケットをフィルタリングするステップとを有する
    ことを特徴とする不正アクセス対処方法。
  4. 外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する装置であって,
    外部ネットワークから送信されたパケットを保存する手段と,
    メモリコピー関数のコピー先のバッファサイズをチェックしてバッファオーバーフローを検出する手段と,
    前記コピー先バッファが属する関数フレームの位置から,前記バッファオーバーフローが発生したときに書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出す手段と,
    前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索する手段と,
    前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得する手段と,
    前記バイト列と前記ヘッダ中の情報とをルール要素として,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録する手段とを備える
    ことを特徴とする不正アクセス対処ルール生成装置。
  5. 外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する装置であって,
    外部ネットワークから送信されたパケットを保存する手段と,
    スタックメモリのバッファとフレームポインタとの間にガード変数を挿入して前記スタックメモリのレイアウトを変更する手段と,
    前記スタックメモリのバッファとフレームポインタとの間に挿入されたガード変数が破壊されたかをチェックしてバッファオーバーフローを検出する手段と,
    レイアウトが変更される前の前記スタックメモリのレイアウトから,前記バッファオーバーフローが生じた際に書き込まれることになる,フレームポインタとリターンアドレスとオペレーティングシステムによっては例外ハンドラヘのポインタを割り出す手段と,
    前記保存されたパケットを検索対象として,前記割り出されたフレームポインタ,リターンアドレスまたはオペレーティングシステムによっては例外ハンドラヘのポインタの値と一致するバイト列を検索する手段と,
    前記検索されたバイト列を含むパケットの持つヘッダ中の情報を取得する手段と,
    前記バイト列と前記ヘッダ中の情報とをルール要素として,フィルタリングするパケットについて記述する不正アクセス対処ルールを生成し記録する手段とを備える
    ことを特徴とする不正アクセス対処ルール生成装置。
  6. 外部から送信されてくる不正なパケットをフィルタリングする装置であって,
    請求項4または請求項5に記載の不正アクセス対処ルール生成装置から,前記不正アクセス対処ルールを受信し記憶装置に登録する手段と,
    前記登録された不正アクセス対処ルールをもとに,不正アクセス対処ルールにおけるヘッダ中の情報およびバイト列と,受信したパケットにおけるヘッダ中の情報およびバイト列とを照合し,一致する場合に受信したパケットは不正なパケットとして,外部から送信されてくる不正なパケットをフィルタリングする手段とを備える
    ことを特徴とする不正アクセス対処装置。
  7. 外部から送信されてくる不正なパケットをフィルタリングするスタックスマッシング攻撃対策システムであって,
    請求項4または請求項5に記載の不正アクセス対処ルール生成装置と,
    請求項6に記載の不正アクセス対処装置とを備える
    ことを特徴とするスタックスマッシング攻撃対策システム。
JP2003390130A 2003-11-20 2003-11-20 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム Expired - Fee Related JP4091528B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003390130A JP4091528B2 (ja) 2003-11-20 2003-11-20 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003390130A JP4091528B2 (ja) 2003-11-20 2003-11-20 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム

Publications (2)

Publication Number Publication Date
JP2005151492A JP2005151492A (ja) 2005-06-09
JP4091528B2 true JP4091528B2 (ja) 2008-05-28

Family

ID=34696614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003390130A Expired - Fee Related JP4091528B2 (ja) 2003-11-20 2003-11-20 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム

Country Status (1)

Country Link
JP (1) JP4091528B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016084076A1 (en) 2014-11-25 2016-06-02 enSilo Ltd. Systems and methods for malicious code detection accuracy assurance
CN113746827B (zh) * 2021-08-31 2023-02-10 中国铁道科学研究院集团有限公司通信信号研究所 基于多带图灵机的实时数据链路字节流防错方法

Also Published As

Publication number Publication date
JP2005151492A (ja) 2005-06-09

Similar Documents

Publication Publication Date Title
JP4320013B2 (ja) 不正処理判定方法、データ処理装置、コンピュータプログラム、及び記録媒体
US7334264B2 (en) Computer virus generation detection apparatus and method
US6941473B2 (en) Memory device, stack protection system, computer system, compiler, stack protection method, storage medium and program transmission apparatus
US7665138B2 (en) Detecting method and architecture thereof for malicious codes
US9043904B2 (en) Method and system for dynamic protocol decoding and analysis
US7260843B2 (en) Intrusion detection method and system
JP4990998B2 (ja) プログラム実行フローの修正を防止する方法及び装置
US7845008B2 (en) Virus scanner for journaling file system
US20080133858A1 (en) Secure Bit
JP4995170B2 (ja) 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
JP2006268687A (ja) コンピュータウィルス監視プログラム及びこれを用いたコンピュータ端末装置
JP4091528B2 (ja) 不正アクセス対処ルール生成方法,不正アクセス対処方法,不正アクセス対処ルール生成装置,不正アクセス対処装置およびスタックスマッシング攻撃対策システム
JP4309102B2 (ja) 不正コマンド・データ検知方式、不正コマンド・データ検知方法および不正コマンド・データ検知プログラム
JP4643201B2 (ja) バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
JP4253215B2 (ja) 不正アクセス対処ルール生成方法、不正アクセス対処ルール生成装置、不正アクセス対処ルール生成プログラム及びそのプログラムを記録した記録媒体
CN106790241A (zh) 一种报文的处理方法及装置
JP5177206B2 (ja) ソフトウェアの改竄検出装置及び改竄検出方法
JP4728619B2 (ja) ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法
KR102156600B1 (ko) 네트워크에서 수집된 패킷과 엔드포인트 컴퓨팅 장치의 프로세스 간의 연관관계를 생성하는 시스템 및 방법
JP5177205B2 (ja) ソフトウェアの改竄防止装置及び改竄防止方法
US20160337383A1 (en) Detecting deviation from a data packet send-protocol in a computer system
JP2005032182A (ja) プログラム、攻撃コード抽出装置およびその方法
CN114943078A (zh) 一种文件识别方法及装置
Wu et al. Stack protection in packet processing systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080228

R150 Certificate of patent or registration of utility model

Ref document number: 4091528

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120307

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130307

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees