WAFの解説(基本情報技術者シラバス用語)

目次

WAFとは

WAF(Web Application Firewall:ワフ)とは、Webアプリケーションの脆弱性を狙った攻撃からWebサイトやWebサービスを防御するための専用のセキュリティシステムです。一般的なファイアウォールがネットワークの出入り口を守るのに対し、WAFはWebサービスのデータの中身を詳細に分析して攻撃を防ぎます。

ショッピングサイトやブログなどのWebアプリケーションは、ユーザーからの入力を受け付けて処理を行います。悪意のある第三者は、この入力欄に特殊なプログラムコードなどを送り込んでデータを盗もうとします(SQLインジェクションやクロスサイトスクリプティングなど)。WAFは、インターネットから送られてくるリクエスト(通信データ)を監視し、このような悪意あるコードが含まれていないかをチェックします。もし怪しい通信を発見した場合は、Webサーバーに到達する前にその通信を遮断します。

具体例

Webサイトのお問い合わせフォームに、データベースを不正操作するための命令文(SQL文)が入力された場合、WAFがそれを検知してブロックします。

【入力例】
名前欄: ' OR '1'='1

【WAFの動作】
送信されたデータにSQLインジェクション攻撃の特徴的なパターンを検出したため、
Webサーバーへ渡す前に通信を拒否し、画面に「403 Forbidden(アクセス禁止)」のエラーを表示します。

もう少し詳しく

WAF(Web Application Firewall)は、一般的なファイアウォールやIDS/IPSが防ぐことのできない、Webアプリケーション層の脆弱性を狙った攻撃(OSコマンドインジェクション、SQLインジェクション、クロスサイトスクリプティング(XSS)、ディレクトリトラバーサルなど)からWebサイトを守ります。

WAFが通信を検査する基準には、大きく分けて「ブラックリスト方式(シグネチャ方式)」と「ホワイトリスト方式」があります。

ブラックリスト方式は、あらかじめデータベース化された既知の攻撃パターン(シグネチャ)と受信データを照合し、一致する通信を拒否する方式です。運用の手間が少なく導入しやすい反面、未知の脆弱性を狙った「ゼロデイ攻撃」を防ぐのは困難です。

一方、ホワイトリスト方式は、「許可する通信のパターン(許可される入力文字の種類や長さ、遷移パラメータなど)」を厳密に定義し、それに合致しない通信をすべて拒否する方式です。高いセキュリティ性能を発揮しますが、Webアプリケーションの仕様変更のたびにリストを更新する必要があり、運用の難易度が高いという特徴があります。近年では、機械学習を用いて正常な通信を学習し、自動でホワイトリストをチューニングするインテリジェントなWAFも普及しています。

試験でのポイント

試験では、ファイアウォール、IDS/IPS、WAFのそれぞれの防御対象(階層)の違いが非常によく出題されます。ファイアウォールは「ネットワーク層・トランスポート層(IPアドレスやポート番号)」、IDS/IPSは「ネットワーク層〜アプリケーション層全般(OSやプロトコルの脆弱性)」、WAFは「アプリケーション層(HTTPのヘッダやボディ、Webアプリのプログラム脆弱性)」を守るという役割分担を正しく区別できるかがポイントです。

また、WAFが防ぐことができる具体的な攻撃手法(SQLインジェクション、XSS、セッションハイジャックなど)の名前もセットで問われます。

関連する用語

関連する用語には、データベースを不正に操作する攻撃である「SQLインジェクション」、ユーザーのブラウザ上で悪意あるスクリプトを実行させる「クロスサイトスクリプティング(XSS)」、およびネットワーク全体を防御する「ファイアウォール」や「IPS」があります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ