2011-07-28

Webアプリケーション・ファイアウォール(WAF)の限界

By Taro Yamazaki  |  21:30 No comments

ModSecurity SQL Injection Challenge: Lessons Learned から。この元記事はWebアプリケーションを開発している(特にデータベースを使用している)方にはぜひ一度ご覧いただきたいと思います。

mod_securityはご存知のとおり、Apacheモジュールとして提供されているWebアプリケーション・ファイアウォール(WAF)です。少し前に、mod_securityが導入されたテストサーバーへのSQLインジェクション攻撃を仕掛ける「SQL Injection Challenge」というイベントが開催されました。「とにかく早く攻撃を成功させる」という「Level.1」と、「mod_securityの警告を表示させることなく攻撃を成功させる(より実践的といえるでしょう)」という「Level.2」の2つのカテゴリで行われ、見事に何人かのユーザーが攻撃を成功させました。この記事では、このうち「Level.2」で攻撃を成功させた9人の手順を詳しく解説しています。SQLのコメント機能を使ったもの、Cookieを使ったもの、タブ文字などの特殊文字を使ったものなど、まさに多彩といえる攻撃パターンです。

Webアプリケーション・ファイアウォールを使用する際には、以下の点を覚えておいたほうがよいでしょう。

ブラックリスト・フィルタリングは攻撃を防ぐには不十分

SQLインジェクション攻撃からWebサイトを守るには、WAFの導入だけでなく、アプリケーションの作りそのものの安全性を高めるなどの総合的な対策が必要です。sqlmapの作者であるMiroslav Stamparは自身のブログ(この記事もとてもよくまとめられています)の中で、多くのWAFで使用しているブラックリスト方式は細工がされたクエリを弾けない場合があり、過信すべきでないと述べています。

Webアプリケーション・ファイアウォールの目的を正しく理解する

前述のようにWAFを導入したからといって攻撃を完全に防げるわけではなく、「攻撃を可視化できること」と「攻撃をより難しくすること」が目的だとしています。また、攻撃者が攻撃を開始するときの「下調べ」を難しくするという効果はかなり期待できるでしょう。この目的をきちんと認識した上で、データベースを利用したWebアプリケーションを開発する際には、パラメータクエリを使用することやデータベースの権限を適切に設定することといった、基本的な対策を確実に行うことが必要です。

もちろん、WAFには限界はあるものの、有用なツールであることは間違いありませんので、ぜひ最新の情報を取り入れつつ活用しましょう。

あ、そうそう、大切なことを1つ。mod_security 2.2.0以前を使っていると、元記事で説明されている手法によるSQLインジェクション攻撃を防げません。mod_securityを使用しているなら、すぐにでもバージョン2.2.1にアップデートするのをお忘れなく!

Author: Taro Yamazaki

0 コメント:

© 2015 yamata::memo | Distributed By My Blogger Themes | Created By BloggerTheme9
TOP