最近、Apache Struts2やWordPressなどのCMSに対する攻撃、Webサイトのパスワードリスト攻撃などWebサイトに対する攻撃は増える一方だ。その攻撃に対する有効な防御手段としてWAF(Web Application Firewall)が注目され、導入している企業も多くなってきている。そこで以前からWAFの評価や導入に広く携わっている、HASHコンサルティング株式会社の徳丸浩氏にWAFについてのお話を伺った。※本記事は有料版メールマガジンに全文を掲載しました──これまでのWAFの進化について教えていただけますか2003年くらいからWAFを扱っていたので、そのあたりから振り返りますと、以前はSQLのキーワード…WHEREとかUNIONとか… キーワードと、シングルクオートのような記号の単純な組み合わせを見て防御していました。○○が割とそういう感じのシグネチャとまでいえないようなブラックリストを使っていまして、今もちょっとその名残を持っていますけど、例えばフランス語だとあの、アポストロフィor('or)という語尾の単語が結構あって、それだけで誤検知してしまうということがありましたし、検知漏れもかなりあって、あまり使い物にならなかったというのがあります。それでもあまり文字を入れないような、金額とか、A-001とかそういうコードが主体のサイトだったら使えたかもしれないのですが、今のようなSNSとかブログとか、さまざまな文字列を入れるようなサイトだと使い物にならないです。これらが第1世代ですね。他に今は売られてないWAFですけども、脆弱性スキャナと連動して、脆弱性があったところだけ防御設定するようなものもありました。私はすばらしいなと思って代理店にまでなったんですけど… スキャナの性能も悪くて検知も弱いし、これも結局いまいちでした。──ブラックリストだけではまだうまくいかなったんですね第2世代で、ホワイトリストというのが出てきました。ホワイトリストが出てきた背景は今言ったような理由に加えて、おそらくIPSと差別化をするためです。当時必ずIPSとどこが違うんですか?と聞かれたんですよ。そこでWAFはIPSのようなシグネチャブラックリストではなくて、ホワイトリストによりそのアプリケーションが許したものだけを通す、そういう素晴らしいものなんですという、宣伝をして売り出したんです。でも、ホワイトリストの設定がめんどうくさいなあということで、学習機能なるものが現れました。これが第3、あるいは2.5世代くらいのWAFということになります。で、私はホワイトリストに関してはずっと懐疑的に見ておりまして、設定がそもそも面倒くさいですし、ホワイトリストでは誤入力と攻撃が区別できないということもあります。郵便番号11aとうっかり入れてしまったことと攻撃は、ホワイトリストでは区別が付かない、それはどちらも入力できない文字列、文字データであって区別できません。──確かにただ間違えただけなのに攻撃と勘違いされるのは怖いですいずれにせよ、変な文字入れちゃったら、WAFから「それは許されていません!」みたいな、その恐ろしいメッセージが出てくる、それはちょっとユーザビリティが下がるよね、というがありました。また、学習機能はなかなか難しいよね、というのもあります。学習機能も、別の某社とかは大変力を入れてやったようですけど、よくある学習機能の問題は、誤入力してしまうと誤入力を学習しちゃいますので、学習設定中に誤入力ができないことなんですね。いろいろ閾値を設けたりしていろいろ工夫はしたようですけど、本番運用では普通に利用者は間違えるし、攻撃もすでに来ている可能性があるので、学習できません。そうなると本番前に正しい値だけを入れるような学習期間を設けないといけない、でもそれは漏れも生ずるし、いわゆるテストの最中はやっぱり膨大に異常系が、むしろ異常系の方がテストの場合多いような感じなので、それは学習には使えない、ということで、結局いろいろ問題がありました。これらのことからホワイトリストは使えないだろうな、と思っていたら、やはり衰退に向かっていった、というのが2008~2009年くらいの状況じゃないですかね。そして結局あんまり売れなかったんですよね。当時のWAFというのは、値段が高いせいもありましたが、まあ、一声500万円くらいしましたかね、当時のWAFは、それからまた設定とかいって、まあトータルで1,000万円近い案件になって。安い製品は大手さん扱わないですよね、まあ彼らの値頃感としてはよかったんですけど、ユーザーさんにとって500万、箱だけで500万、設定したら1,000万、そういう買い物だったわけですよ。で、当然のように売れなかったというの、考えまして、2008年でしたかね、ブログにこれからはブラックリストが主流じゃないかという話を書きました。──そしてまたブラックリストが再び主流にちょうどその頃から、○△と□□がシグネチャ主流のWAFということで出てきて、その後、ホワイトリストを宣伝してた△▽とか×○も実はシグネチャは結構ちゃんとしてるんだというのがわかってですね、こっちで売っていけばいいのにと思ってたら、いつの間にかどこもホワイトリストって言わなくなってしまったと。私ちょっと怒ってましてですね、ケジメを君たち付けないの? ホワイトリストは間違っておりました、って誰も言わないですよね。フェイドアウト、なかったことにしようと。でも、まあ予言が当たるとまあうれしいので、でも元通りになったなあという感じで。それが現在ですね。で、現在の主要なWAFはもうシグネチャということになっています。今のWAFは結構シグネチャの数も多くてですね、複雑なシグネチャが入ってるんです。これはWAF側のハードウェア性能が上がったというのが背景にあると思います。昔はたくさんの複雑なシグネチャを処理するほどの能力がなくて、単純化しないといけなかったという事情もあったんだと思うんですね。で、最近はご存じのようにCPUパワーが割と安い方の資源ですので、CPU資源をふんだんに使っても大丈夫、並列処理とかもできるでしょうから。ですから、現在はシグネチャのよさを競うということになっているのではないかと思います。シグネチャの善し悪しってなかなか比較が難しいんですけどね。(聞き手・文:山本洋介山)※本記事は有料版メールマガジンに全文を掲載しました