🎃

【セキュリティ】WAFの基本

に公開

はじめに

Webアプリケーションが普及する中で、アプリケーション層を狙った攻撃も年々巧妙になっています。
SQLインジェクションやXSSなどの攻撃は、アプリケーションの脆弱性を突いて深刻な被害をもたらすことがあります。
これらの攻撃からWebアプリケーションを守るための防御手段の一つが、WAF(Web Application Firewall)です。
本記事では、WAFの基本とその役割についてのポイントをわかりやすくまとめていきます。

WAFとは何か?

WAF(Web Application Firewall)とは、Webアプリケーションへのリクエスト内容を解析し、悪意ある通信を検知・遮断するセキュリティ対策です。
通常のファイアウォールがIPアドレスやポート番号などネットワーク層の監視をするのに対して、
WAFはHTTPやHTTPSといったアプリケーション層の通信内容を検査する点が特徴です。

WAFは、HTTPプロトコルでやり取りされる「リクエスト行」「ヘッダ」「ボディ」などの内容を詳細に検査することで、SQLインジェクションなどのWebアプリケーションの脆弱性を突いた攻撃を検知し、ブロックします。
つまり、WAFは通信の中身そのものをチェックして、防御ラインを張るという役割を担っており、
通常のファイアウォールでは防げないようなアプリケーション層の攻撃にも対応することができます。

イメージ


https://www.eg-secure.co.jp/siteguard/waf より

WAFが防御する主な攻撃


https://it-trend.jp/waf/article/162-0008 より

【WAFが検知・防御する代表的な攻撃】

① XSS(クロスサイトスクリプティング)
JavaScriptなどのスクリプトを仕込み、ブラウザで実行させることで、ユーザー情報を盗み出す攻撃です。

② SQLインジェクション
入力値にSQL文を埋め込むことで、データベース操作を不正に行ない、データ漏洩・改ざんを狙った攻撃です。

③ パラメータ改ざん
Webアプリケーションが受け取るURLやフォームの値(パラメータ)をユーザーが不正に書き換える攻撃手法です。

④ コマンドインジェクション
システムコマンドを注入し、OS上で不正な処理を実行させ、サーバの乗っ取りや破壊を狙った攻撃です。

WAFはこれらのアプリケーション層における攻撃の初期段階で検知し、被害の拡大を防止する役割を担っています。

押さえておくべきポイント

① WAFは"万能"ではない
WAFは非常に有効な防御策ですが、すべての脆弱性を完全に防ぐわけではありません。
そのため、
・ユーザー入力のバリデーション
・パラメータのサニタイズ・エスケープ
・不要なエラーメッセージの抑制
などのセキュリティ対策が必要です。

② WAFによるブロックでテストが失敗することもある
開発環境でもWAFが適用されている場合、テスト時のリクエストがブロックされることがあります。
たとえば、APIの動作確認で特定のキーワード(例:SELECT)が含まれているだけで403エラーが返ることもあります。
そのようなときは、WAFログを確認したり、一時的にルールを緩和(可能であれば)したり、対策が否通用です。

まとめ

近年のWeb攻撃において、クロスサイトスクリプティング(XSS)が全体の約30〜40%を占めるなど、アプリケーション層の攻撃が非常に多く発生しています。
こうした攻撃は、Webサイトの信頼性やユーザー情報の漏洩を招くため、WAFの重要性が一層高まっています。

WAFはHTTPリクエストのリクエスト行やヘッダ、ボディまで詳細に検査し、XSSやSQLインジェクション、パラメータ改ざんなどの脆弱性を狙った攻撃をリアルタイムで検知・防御します。
そのため、単なるネットワーク防御だけでは防げない、アプリケーション層の多様な脅威に対して強力な盾となります。

一方で、WAFは万能ではなく、攻撃のすべてを防ぐことはできません。
WAFだけに頼らず、適切な入力検証や認証設計、脆弱性対策を行なうことが不可欠ということです。

最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://www.eg-secure.co.jp/siteguard/waf
https://it-trend.jp/waf/article/162-0008
https://www.shadan-kun.com/waf_websecurity/difference_between_waf_and_ips/?utm_source=chatgpt.com
https://www.nttpc.co.jp/column/security/waf.html
https://www.stream.co.jp/blog/blogpost-41898/

Discussion