情報処理安全確保支援士 2024年 秋期 午前2 問12
問題文
WAFにおけるフォールスポジティブに該当するものはどれか。
選択肢
ア:HTMLの特殊文字"<"を検出したときに通信を遮断するようにWAFを設定した場合、数式を入力するWebサイトに"<"を数式の一部として含んだHTTPリクエストが送信されたときWAFが攻撃として検知し遮断する。(正解)
イ:HTTPリクエストのうちRFCなどに定義されておらずWebアプリケーションソフトウェアの開発者が独自に追加したフィールドについてはWAFが検査しないという仕様を悪用して攻撃の命令を埋め込んだHTTPリクエストが送信されたときWAFが遮断しない。
ウ:HTTPリクエストのパラメータ中に許可しない文字列を検出したときに通信を遮断するようにWAFを設定した場合、許可しない文字列をパラメータ中に含んだ不正なHTTPリクエストが送信されたときWAFが攻撃として検知し遮断する。
エ:悪意のある通信を正常な通信と見せかけHTTPリクエストを分割して送信されたときWAFが遮断しない。
🔒 解説は解答すると表示されます
WAFのフォールスポジティブ【午前2解説】
正解の理由
フォールスポジティブ(誤検知)は、WAFが本来は許可すべき正当な通信を攻撃と誤って判定して遮断する事象を指します。設問の選択肢のうち、アは「HTMLの特殊文字 '<'(小なり記号、山括弧)を検出したため、数式に含まれる正当な '<' を攻撃と判定して遮断する」ケースを示しており、これは典型的な誤検知(フォールスポジティブ)です。したがって、アが正解です。
(注)ここでの「'<'」は小なり記号(山括弧)を意味し、前回の誤記のように「く」と表記するのではありません。
解法ステップ
- フォールスポジティブの定義を確認する:正当な通信が不正と判定されること。
- 各選択肢を「遮断された通信が正当か不正か」で分類する。
- 正当な通信を遮断 → フォールスポジティブ
- 不正な通信を遮断しない → フォールスネガティブ(誤検出漏れ)
- 不正な通信を遮断する → 正しく検知(真陽性)
- 選択肢と定義を照らし合わせ、該当するものを選ぶ。
- 結果:正当な数式に含まれる '<' を攻撃と誤判定して遮断する ア が該当。
選択肢別の誤答解説
-
ア: 正解。WAFルールが文字列 '<' を単純に攻撃シグネチャとして検出して遮断すると、数式や科学表記など正当な用途の '<' を誤ってブロックする。これがフォールスポジティブ(誤検知)である。
-
イ: 不正な命令を埋め込んだ独自フィールドをWAFが検査しないために遮断しない、という記述は「攻撃を見逃す」ケースでありフォールスネガティブ(誤検出漏れ)であってフォールスポジティブではない。
-
ウ: 許可しない文字列を検出して遮断する設定で、許可しない文字列を含んだ「不正なHTTPリクエスト」が遮断されたとある。これは意図通りの検知(真陽性)であり誤検知ではない。もし同じルールが正当な入力も遮断するならフォールスポジティブになるが、選択肢文は不正リクエストを対象にしているため該当しない。
-
エ: 悪意のある通信を分割して送信しWAFが遮断しないのは、WAFの検知回避(フォールスネガティブ)を示す。これも誤検知ではない。
よくある誤解
- 「'<' を検出=必ず攻撃」ではない:'<' は HTML/数学/化学表記など正当な用途があるため、単純な文字照合でブロックすると誤検知が増える。
- フォールスポジティブとフォールスネガティブを混同しやすい:前者は“正当な通信を誤って遮断”、後者は“攻撃を見逃す”という点を明確に区別する。
- WAFは万能ではない:シグネチャベースだと文脈判断が弱く、文脈依存の許容/拒否ルールを適切にチューニングする必要がある。
補足コラム
実運用での対策例(要点)
- コンテキスト判定:入力が数式や数値比較の文脈であることを判別し、'<’ を例外扱いする。
- ホワイトリスト方式:期待されるパラメータ形式を明示してそれ以外を検査対象にする。
- シグネチャ調整とカスタムルール:アプリケーション固有の挙動に合わせてシグネチャをチューニング。
- テストとログ:テスト環境で正当なユースケースを流し、False Positive を検出してルールを調整する。
- 例(ModSecurity の単純なルール例):
# 単純な検知ルール(例示)
SecRule ARGS "<" "id:1001,phase:2,deny,msg:'Contains <'"
# 数式の文脈(例)では除外するための例外
SecRule ARGS "@rx (?<=\d)\s*<\s*(?=\d)" "id:1002,phase:2,pass,nolog,ctl:ruleRemoveById=1001"
上の例では、数字と数字の間にある '<'(数式の小なり)を検出してルール1001を無効化することで誤検知を減らす考え方を示している。実運用ではより厳密な検証とセキュリティレビューが必要。
FAQ
Q. フォールスポジティブはどうやって減らすべきですか?
A. コンテキスト理解を取り入れたルール、ホワイトリスト、アプリケーションと連携したテストログに基づくチューニングが基本です。
A. コンテキスト理解を取り入れたルール、ホワイトリスト、アプリケーションと連携したテストログに基づくチューニングが基本です。
Q. すべてのルールを緩くすれば誤検知は減る?
A. 一時的には減るが、検知精度が落ちて攻撃を見逃す(フォールスネガティブ)リスクが上がるためバランスが重要です。
A. 一時的には減るが、検知精度が落ちて攻撃を見逃す(フォールスネガティブ)リスクが上がるためバランスが重要です。
Q. HTMLの '<' は常にエンコードすべき?
A. 入力の用途による。表示用テキストならエンコード、数式やコードを受け付けるフィールドは構文を解析して安全に扱うなど用途に応じて処理するのが望ましい。
A. 入力の用途による。表示用テキストならエンコード、数式やコードを受け付けるフィールドは構文を解析して安全に扱うなど用途に応じて処理するのが望ましい。
関連キーワード: WAF、フォールスポジティブ、誤検知、フォールスネガティブ、ModSecurity、チューニング、シグネチャ、ホワイトリスト、文脈判定

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

