なぜ攻撃検出に数学的手法を用いるのか?
松田研究室ではWeb系の攻撃検出に関する研究を行っています.以下は,これまでの研究成果の一部です.SQLインジェクション攻撃の自動検出について
①は少し古いものですが,その後の研究もこの論文の考え方を発展させて改良を続けています.その他の研究論文は研究紹介のページで紹介しています.我々は数学的手法を応用してSQLインジェクション攻撃を検出する効率的な手法を考えていますが,この攻撃を検出するだけなら,わざわざ小難しそうな方法を考える必要はないかも知れません.SQLインジェクション攻撃には特殊な記号がほとんど必ず含まれます.ですから,そのような記号に注目して攻撃検出を行えば良いとも言えます.
しかしながら,攻撃は検出できたとしても,誤検出(攻撃でないのに攻撃,正常でないのに正常と判断されてしまうこと)が多いとそれは問題です.
SQLインジェクション攻撃検出における誤検出は,攻撃検出に使用する記号の組合わせなどを考えることでもある程度対応可能だと思いますが,こうした場合,わざと誤検出を引き起こすデータを作成することは意外と簡単です.
そもそもどのように検出に使用する記号の組合わせを選ぶかという問題もありますので,このようなことを,サンプルデータを参考にして数理モデルに判断させたいというのが研究のモチベーションです.
これまでの研究成果を基にして,かなり限定的ですが,SQLインジェクション攻撃を検出するシステムを,Apacheモジュールとして開発しました (←その一部はこちら).
攻撃検出については Mod Security の方がまだ精度が良いかも知れませんが,正常データなのに攻撃データとして誤検出する確率は,我々が開発したものの方が低くなっていることと思います.
SQLインジェクション攻撃に含まれる記号について
ベキ乗則は様々な現象に現れることが知られています.SQLインジェクション攻撃にも,これと同様な現象が見られる場合があります.SQLインジェクション攻撃のデータをある程度集めると,特定の特殊記号の出現頻度だけ異常に多く,その他ほとんどの記号の出現頻度は低くなるという傾向が見られます. (もちろん,データの集め方によってはそうならない場合もあると思いますが,一般的な攻撃データを集めるとほとんどの場合,このようになることが確かめられるでしょう.)
ベキ乗則を表現する関数は色々考えられますが,これまでに,データにゼータ分布を当てはめて攻撃の特徴を捉える方法を考えています.この方法は,上述の攻撃検出法にも一部ですが取り入れています. もちろん,ゼータ分布を使う必要はなく他の確率分布でも良いのですが,パラメータ推定の問題を考える上でゼータ分布を使った研究をしています.
研究紹介のページに戻る