Web Application Firewall(略称:WAF、ワフ)とはウェブアプリケーションの脆弱性を悪用した攻撃からウェブアプリケーションを保護するセキュリティの一種。WAFを導入するウェブサイト運営者は、検出パターンを設定することで、ウェブサイトとウェブサイト利用者との間の通信の内容を機械的に検査する。WAFを使用することで、以下の効果が期待できる。

- 脆弱性を悪用した攻撃からウェブアプリケーションを防御する。
- 脆弱性を悪用した攻撃を検出する。
- 複数のウェブアプリケーションへの攻撃をまとめて防御する。

検出パターンにクレジットカードの番号や個人番号といった特徴のある個人情報のパターンを設定することで、そういった個人情報が悪意のある人に送信されてしまうことを防ぐといった使い方もできる。

セキュリティ対策としては、ウェブアプリケーションの実装面での根本的な対策ではなく、あくまでも攻撃による影響を低減する運用面での対策となる。

ウェブアプリケーションそのものに脆弱性を作り込まないために対策も各種あるが、現実的にはウェブアプリケーションの脆弱性を悪用した攻撃は後を絶たない。また、脆弱性が発見された場合においても、ウェブサイト運営者側の事情から即時に脆弱性を修正できないという実情もある。このため、ウェブアプリケーションが攻撃の被害にあわないためのセキュリティ対策の一つとして、WAFの使用が有効だと考えられている。

WAFを導入する主なケースとして、レンタルサーバ提供ベンダーや、複数のグループ企業を束ねている大手企業など、直接自分で管理していないウェブアプリケーションを保護したい場合、他社が開発したウェブアプリケーションを利用しているなど自分では脆弱性を防ぐことができない場合、事業継続の観点からウェブアプリケーションを停止できず脆弱性を行ったりパッチを当てたりできない場合等があり、根本対策のコストよりもWAFの導入・運用のコストのほうが安い場合にWAFを導入する。

PCI-DSSでは、定期的なアプリケーションコードの見直しかWAFの導入のいずれかを行わなければならないと定められている。

## 概要

WAFはウェブサイトの前に設置し、ウェブアプリケーションの脆弱性に対する攻撃と思われる通信の遮断等を行うものであり、LANとインターネットの境界などに設置されることが多い通常のファイヤーウォールとは(その名称にもかかわらず)機能が異なる。WAFが検知する攻撃はウェブサイトへのものに特化しており、HTMLを解釈してクロスサイトスクリプティングやSQLインジェクションなどの攻撃を遮断する。

攻撃を遮断する点においてIPSと類似するが、IPSはOSやファイル共有サービスなど様々なものに対する攻撃を遮断するために不正な通信パターンをブラックリストとして登録しておくのに対し、WAFの防御対象はウェブアプリケーションに限定されている為ブラックリスト型の遮断のみならず、正常な通信を事前登録してホワイトリスト型の遮断も行うことができる。

WAFにはHTTP通信(リクエスト、レスポンス)を検査し、検査結果に基づいて通信を処理し、処理結果をログとして出力する機能がそなわっている。通信の検査は前述のようにホワイトリスト、ブラックリストを用いて行う。検査結果に基づいた通信の処理としては、そのまま通過させる、エラー応答を返す、遮断する、通信内容の一部を書き換えた上で通過させる、という4通りがある。またセッションのパラメータの正当性やHTTPリクエストの正当性を確認してCSRF等の攻撃を防ぐ機能、ウェブサイトの画面遷移の正当性を確認する機能、ホワイトリストやブラックリストを自動更新する機能、ログをレポートの形で出力する機能、不正な通信を管理者にメール等で通知する機能等がついている事もある。

WAFはウェブアプリケーションがあるサーバ(=ウェブサーバ)にインストールする場合と、ウェブサーバとインターネットの間に別サーバを設置してそこにインストールする場合がある。それぞれの比較は下記のとおりである:

| インストール場所 | 利点 | 欠点・制約 |
| --- | --- | --- |
| ウェブサーバ | - ウェブサーバがHTTPSに対応していればWAFがHTTPSに対応していなくてもHTTPSを処理できる。 | - ウェブサーバの動作環境に依存する - 複数のウェブサーバがある場合その全てにWAFを導入する必要がある。 - WAFがウェブサーバの性能劣化の原因になる可能性がある |
| ウェブサーバとインターネットの間にある別のサーバ | - ウェブサーバの動作環境に依存しない - 複数のウェブサーバがあっても1台のWAFで防御できる(ようにネットワークを構成できる)。特にネットワークベンダーがWAFを用意してくれれば、そのベンダーを利用してウェブサーバを構築した企業は自身でWAFを導入しなくて済む | - 既存のウェブサイトに後からWAFを導入する場合はネットワーク構成を見直す必要がある - WAFによりウェブサイトの可用性が劣化する可能性がある |

なお、たとえばウェブアプリケーションの認可機能に問題があるが、HTTP通信自身には問題がないケースなどではWAFは異常を検知してくれないので別の対策が必要となる。

## WAF の進化の過程

急激に変化するIT環境や益々高度化するサイバー攻撃の増加に伴い、WAFも進化してきた。その進化の過程は動作方式によって第1、第2、第3世代とその次の世代として分けられる。

### 第1世代 WAF

第1世代のWAFは、ブラックリスト及びホワイトリストを管理者があらかじめ登録しておいて、Webトラフィックをアプリケーション層で分析する際、その内容が登録されているパターンと一致するかどうかを比較する方式を採用した。

#### - 限界

第1世代のWAFは新・変種攻撃に柔軟に対応できるようにパターンの範囲を広げて登録する方法を使ってきた。しかし、これは却って正常なWebトラフィックを攻撃として検知してしまう現状を招いた。攻撃タイプが多様化していくことにつれ登録されているパターン数もともに増加してきて、パフォーマンスの劣化につながるといった問題も発生した。また、人によりパターンをアップデート作業が行われたため、運用負担も大幅に増加した。

### 第2世代WAF

第2世代WAFは、Webアプリケーションを一定期間モニタリングし安全だと判断されたアクセスをホワイトリストとして自動作成する「リスト自動作成機能」が搭載された。

#### - 限界

第2世代のWAFは第1世代WAFと同じ構造で設計されたため、Webセキュリティ環境に存在する様々なWeb攻撃に適切に対応できず、結局第1世代WAFの限界であったパフォーマンス劣化や誤検知の問題は引き続き解決できなかった。また、依然として管理者による手動設定が必要であったため結果的に全体的な管理負担を増加につながった。

### 第3世代 WAF

第3世代WAFは、Web攻撃タイプ別に「ブラックリスト検知」、「ファイトリスト検知」、「Webトラフィックコンテンツ分析」などの技術を結合させ、論理的に攻撃を検知する仕組みで、第1・2世代のWAFに比べ極めて低い誤検知率を実現した。また、最小限のパターンを追加するだけで、攻撃の変種も直ちに防衛でき、パターン登録によるパフォーマンス劣化問題も解決した。

#### - 第3世代WAFの次は

現在のWAFは検知能力を更に高めるためにAI・マシンラーニング技術を用いて、第3世代のWAFを補っていく方向に進化している。

## 代表的なオープンソースソフトウェアのWAF

韓国インターネット振興院がオープンソースソフトウェアのWAFとして以下のソフトウェアを紹介している。

- ModSecurity(Trustwave)
- WebKnight(AQTRONIX)