WAFとは ― ファイアウォールとの違いと守れる攻撃
WAFは、
WAFとは:Webアプリへの通信の中身を検査する仕組み
WAFは、ファイアウォールが通してしまうWebアプリへの攻撃を、通信の中身を検査して止める仕組みです。ログイン画面にSQLインジェクションの文字列を送る要求も、宛先は許可したHTTPSのポートです。そのため、ファイアウォールは通します。
WAFは要求の中身まで読み、攻撃のパターンを見つけると遮断します。WAFはWeb Application Firewallの略です。
IPAの資料「WAF読本」によると、WAFは攻撃による影響を減らす対策です。脆弱性を直す根本的な対策には入りません。同じ資料は、複数のWebアプリへの攻撃をまとめて防げることを、WAFの効果に挙げています。
ファイアウォール・IPSとの違い
ファイアウォールは、送信元と宛先のIPアドレスやポート番号で通信を選びます。Webサイトを公開するには、443番などのポートを開けておく必要があります。そのポートを通ってくる攻撃は、ファイアウォールでは止められません。
WAFは、ファイアウォールを通ってきたHTTPの要求の中身を調べます。見るのは、URLとその後ろに付いた入力値、ヘッダや送信されたフォームの値などです。WAF読本は、Webサーバが返す応答の中身も検査の対象に挙げています。
IPSも、通信の中身を検出パターンと照らし合わせます。違うのは、守る相手の広さです。IPSは、OSの脆弱性を突く攻撃やファイル共有への攻撃など、さまざまな機器への攻撃を対象にします。
WAFは、守る相手をWebアプリに絞っています。その代わり、Webアプリに合わせた細かい検査ができます。IPSの置き場所や検知の方式は、IDSとIPSの記事で説明しています。
| 仕組み | 主に | 止める | 止められない |
|---|---|---|---|
| ファイアウォール | IPアドレスと | 許可していない | 許可した |
| IPS | 通信の | さまざまな機器への | 暗号化されたままの |
| WAF | HTTPの | Webアプリへの | HTTPと |
動かして確かめる:通信はどこで止まるか
同じWebサイトに、5種類の通信が来たとします。ファイアウォールは、インターネットから443番ポートへの接続だけを許可します。その後ろにWAFを置いた構成です。次の図で、通信の例を選べます。
SQL文を含む入力は、ファイアウォールを通り、WAFで止まります。一方で、他人の注文番号を指定した要求は、どちらも通ってしまいます。
WAFで防げる攻撃と検査の方式
WAFが得意とするのは、要求の中身に特徴が表れる攻撃です。代表的なものは、SQLインジェクションとクロスサイトスクリプティングです。WAF読本は、CSRFを防ぐ機能を持つ製品もあるとしています。
攻撃のパターンと照らし合わせる方式
1つ目は、攻撃の特徴を並べた一覧と照らし合わせる方式です。一覧に一致した要求を、不正な通信とみなします。WAF読本はこの一覧をブラックリストと呼び、製品の提供元が用意したものを使えるとしています。
この方式は、どのWebアプリにも同じ一覧を使えます。その代わり、特徴が分かっている攻撃しか見つけられません。新しい攻撃の手口が分かるたびに、一覧を更新する必要があります。
IPAの補足資料は、2017年に公表されたApache Struts 2の脆弱性の例を挙げています。公表の翌日には、複数のWAFの提供元が、攻撃を遮断する検出パターンを公開しました。WAFの製品では、この検出パターンをシグネチャと呼びます。
ソフトウェアの修正版を当てる前でも、WAFで攻撃を止められる場合があります。補足資料は、適切に運用していれば被害を水際で食い止められる可能性があるとしています。
正しい値と照らし合わせる方式
2つ目は、正しい値の決まりと照らし合わせる方式です。たとえば、商品番号の欄には数字だけが入ると決めておきます。決まりに合わない要求を、不正な通信とみなします。
WAF読本は、この決まりの一覧をホワイトリストと呼んでいます。正しい値以外をすべて止めるので、まだ知られていない攻撃にも対応できます。ただし、Webアプリごとに一覧を作り、アプリの仕様を変えるたびに直す必要があります。
正しい値を決められるのは、WAFが守る相手を特定のWebアプリに絞っているからです。2つの方式の違いを表にまとめます。
| 方式 | 比べる | 良い | 手間 |
|---|---|---|---|
| 攻撃の | 攻撃の | どの | 新しい |
| 正しい | Webアプリごとの | まだ | アプリごとに |
WAFの限界:誤検知・見逃し・防げない攻撃
WAFを入れても、すべての攻撃を防げるわけではありません。WAFは要求を機械的に検査するので、判定を誤ることがあります。正常な要求を攻撃と判定する誤りをフォールスポジティブと呼び、誤検知とも言います。
攻撃を正常と判定する誤りはフォールスネガティブで、見逃しとも言います。WAF読本は、2つを偽陽性と偽陰性と書いています。IDSとIPSの記事で説明した2つの誤りと、同じ考え方です。
誤検知は正しい利用者を止める
WAFは判定した要求を止めるので、誤検知が起きると正しい利用者がサービスを使えなくなります。WAF読本は、提供元の一覧の検出パターンを全部有効にすると、誤検知が起きることがあるとしています。そのときは、原因になった検出パターンを無効にします。
WAFには、不正と判定した要求を止めずに通し、記録だけを残す設定もあります。WAF読本は、この設定を導入のときの検証に使うとしています。
正しい値を決められない欄
正しい値と照らし合わせる方式でも、見逃しは起きます。問い合わせ欄のように自由に書ける欄では、正常な値を決められません。その欄には決まりを作れず、攻撃を見逃すことがあります。
WAFでは防げない攻撃
要求の形が正常と変わらない攻撃は、WAFでは止められません。WAF読本は、利用者ごとの権限の確かめ方に不備がある場合を例に挙げています。一部の利用者だけに許した機能を別の利用者が使う要求も、WAFからは正常な通信に見えます。
また、WAFが見るのは、一般的にHTTPとHTTPSの通信だけです。IPAの補足資料は、SSHを使った不正アクセスやFTPを使った不正なアップロードは検知できないとしています。こうした通信の入口は、ファイアウォールで絞ります。
このため、WAFは脆弱性の修正の代わりにはなりません。IPAは、ソフトウェアの修正などの根本的な解決と、WAFのような保険的な対策の両方を検討するよう勧めています。
WAFの置き場所と種類
WAFは、どこで要求を検査するかによって3つの型に分かれます。IPAの補足資料は、アプライアンス型・ソフトウェア型・クラウドサービス型に分けています。ここでは、3つ目をクラウド型と書きます。
アプライアンス型は、専用の機器をWebサーバの手前のネットワークに置く形です。Webサーバへの通信が、必ずこの機器を通るように構成を変えます。社内LANと分けたDMZにWebサーバを置くなら、その手前が置き場所になります。OWASPは、WAFをリバースプロキシの一種とみなせるとしています。
ソフトウェア型は、Webサーバの中にソフトウェアとして入れる形です。WAF読本は、この形がホスト型と呼ばれることもあると書いています。ネットワークの構成を変えずに入れられますが、Webサーバ1台ずつに入れる必要があります。
クラウド型は、組織の外にある事業者のサーバを経由させる形です。事業者のサーバが要求を検査し、問題のない要求を組織のWebサーバへ中継します。自社で機器を買わずに使え、検出パターンの更新も事業者が行います。
| 型 | 置く | 良い | 注意点 |
|---|---|---|---|
| アプライアンス型 | Webサーバの | Webサーバに | 機器が |
| ソフトウェア型 | Webサーバの | ネットワークの | Webサーバの |
| クラウド型 | 組織の | 導入までの | 設定できる |
ネットワークに置くWAFは、通信の経路の途中に入ります。WAF読本は、WAFを入れるとWebサイトの可用性が下がるおそれがあるとしています。クラウドのサービスとして使うWAFには、たとえばAWS WAFがあります。
HTTPSの通信は復号してから検査する
HTTPSの通信は、中身がTLSで暗号化されています。暗号化されたままでは、WAFはURLや入力値を読めません。WAFで要求を検査するには、どこかで復号した後の中身を見る必要があります。
ネットワークに置くWAFがHTTPSに対応していれば、WAF自身が復号して検査できます。このとき、WAFはWebサーバの代わりに利用者からのTLSの接続を受けます。TLSでは、サーバが証明書に対応する秘密鍵で署名して本物であることを示します。
このため、WAFにもWebサイトの証明書と秘密鍵を置きます。プロキシの記事で説明したTLS終端と、同じ形です。
ソフトウェア型のWAFは、Webサーバが復号した後の要求を検査します。WAF読本は、このためWAFがHTTPSに対応していなくても検査できるとしています。
WAFに復号の機能が無い場合は、ほかの機器が復号した後の区間に置きます。SSLアクセラレータは、暗号化と復号を専門に引き受ける機器です。その後ろで、HTTPのままWebサーバへ送る区間にWAFを置けば、中身を検査できます。
練習問題(全6問)
正解:Webアプリへの
WAFは、
正解:ファイアウォールは
ファイアウォールは、
正解:まだ
正しい
正解:権限の
番号を
正解:復号する
暗号化されたままでは、
正解:正常な
フォールスポジティブは、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
参考にした資料
- IPA「Web Application Firewall(WAF)読本 改訂第2版」(定義・ファイアウォールとIPSとの違い・検査の方式・置き場所・誤検知と見逃し・防げない攻撃)
- IPA「Web Application Firewall(WAF)の導入に向けた検討項目」(製品・サービスの3つの型、検知できる攻撃の範囲、Apache Struts 2の脆弱性の例)
- OWASP「Web Application Firewall」(WAFが守る相手とリバースプロキシとの関係)
- NIST SP 800-41 Rev.1「Guidelines on Firewalls and Firewall Policy」(WAFの位置づけ、暗号化された通信の検査)
- RFC 9846「The Transport Layer Security (TLS) Protocol Version 1.3」(サーバの証明書と署名)
- IPA 過去問題(基本情報技術者試験 令和5年度・令和7年度 公開問題 科目A 問10)
関連記事
おすすめの本 PR
セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

