HOME > Scutumを支える技術 > Scutum技術ブログ

技術者ブログ

クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

2012年7月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Scutum開発者/エンジニアによる技術ブログ WAF Tech Blog
▼ 2012年7月 アーカイブ

WAFによるHashDoS攻撃の検知

2012年7月 3日

はじめに

2011年末に発表されたHashDoS攻撃は、JavaやPHP、ASPなど非常に広い範囲に影響を及ぼすものであり、大きな話題となりました。筆者はちょうど大晦日にこの情報をキャッチし、その内容にのけぞりそうになりました。というのも、Javaアプリケーション内でHashMapを使い、そこにユーザ(この場合は攻撃者)からのデータを格納するだけで脆弱だというからです。

JavaではHashMapは非常に頻繁に使われる基本的なクラスであり、TomcatやJettyなどが当然のように影響を受けました。私たちが提供しているSaaS型WAFサービス「Scutum(スキュータム)」は、筆者が開発しているGuardian@JUMPERZ.NET(以下、Guardian)というJava製のWAFアプリケーションがコアとなっており、内部では非常に多くの箇所でHashMapを使用しています。大晦日の午前中、大掃除をあきらめてまず最初に確認したのは、Guardian自体がこの攻撃に脆弱かどうか?という点です。ウェブアプリケーションやウェブサーバを守るべきWAFそのものがDoS攻撃に弱いとなってしまうと、極めてまずいと考えました。

WAFは当然、HTTPリクエストに含まれる各パラメータをパースして検査しますが、これらのパラメータは「name=value」というスタイルを取っているため、単純に考えればアプリケーション内部ではHashMapにそのまま格納するようなソースコードを書いてしまうことは十分あり得ます。どんな実装をしたのか記憶があいまいだったので、半ば祈りながらソースコードを確認したところ、ラッキーなことにパース後のデータはHashMapではなくListで管理していました。Guardian自体はこの攻撃には脆弱でないと確認でき、ほっと一息つけたのです。

その後ウェブ上で次々に更新される情報を確認しながら、お正月であるにもかかわらず防御機能の開発を開始しました。今回は、私たちのWAFでどのようにHashDoS攻撃を検知しているかについて、技術的な解説を行います。

続きを読む ≫ WAFによるHashDoS攻撃の検知