定義
WAF(Web Application Firewall)とは、WebサイトへのすべてのHTTPリクエストを検査し、アプリケーションに到達する前に悪意のあるパターンをフィルタリングまたはブロックするセキュリティレイヤーです。リバースプロキシやCDNのエッジノードとしてアプリケーションの前面に配置され、各リクエストのヘッダー、URLパラメータ、ボディをルールセットと照合します。通常、OWASP Top 10に分類される脅威、すなわちSQLインジェクション、クロスサイトスクリプティング、ファイルインクルージョン、認証の不備を悪用する攻撃に加え、クレデンシャルスタッフィングを行うボット、スクレイパー、既知のエクスプロイトの兆候を検出します。現在のほとんどのWAFは、サーバーにインストールする形式ではなく、マネージドクラウドサービス(Cloudflare、AWS WAF、Imperva、Sucuriなど)として提供されているため、新たな脆弱性が公表されてから数時間以内にルールの更新が展開され、アプリケーション自体を変更する必要はありません。多くのCDNは、セキュリティ層にWAFを組み込んでいます。トレードオフとして、ルールが正当なトラフィックに対して誤作動を起こす(誤検知)ことがあり、またWAFは安全でないアプリケーションそのものを修正するものではなく、あくまでアプリケーションに到達する攻撃対象領域を減らすものです。
利用方法
WAFは、すべてのリクエストに対して一連のルール(ベンダー管理のものとカスタムのもの)を適用します。既知の悪意あるペイロードをブロックし、疑わしいIPをレート制限し、自動化されているように見えるブラウザにチャレンジを課し、すべてを検査用にログとして記録します。最も強力なWAFは、ルールセットと攻撃トラフィックで訓練された機械学習モデルを組み合わせています。
重要な理由
WAFは、サイトのセキュリティ体制を本格的に向上させる最も安価な手段であり、新規インストールされたWordPressやパッチ未適用のライブラリが脆弱な攻撃から防御します。優れたコードの代わりにはなりませんが、脆弱性が発見された際の時間稼ぎになり、インターネット全体から常時押し寄せる攻撃トラフィックのノイズを吸収してくれます。