WAFのフォールスポジティブを誤検知と検知漏れの違いから理解する
情報セキュリティマネジメント試験 令和元年度秋期 午前 問14 / セキュリティ › 情報セキュリティ対策
過去問にチャレンジ
WAFにおけるフォールスポジティブに該当するものはどれか。
- ア
HTMLの特殊文字"<"を検出したときに通信を遮断するようにWAFを設定した場合,"<"などの数式を含んだ正当なHTTPリクエストが送信されたとき,WAFが攻撃として検知し,遮断する。
- イ
HTTPリクエストのうち,RFCなどに仕様が明確に定義されておらず,Webアプリケーションソフトウェアの開発者が独自の仕様で追加したフィールドについてはWAFが検査しないという仕様を悪用して,攻撃の命令を埋め込んだHTTPリクエストが送信されたとき,WAFが遮断しない。
- ウ
HTTPリクエストのパラメータとして許可する文字列以外を検出したときに通信を遮断するようにWAFを設定した場合,許可しない文字列を含んだ不正なHTTPリクエストが送信されたとき,WAFが攻撃として検知し,遮断する。
- エ
悪意のある通信を正常な通信と見せかけ,HTTPリクエストを分割して送信されたとき,WAFが遮断しない。
会話形式の解説
講師今回はWAF、つまりWebアプリケーションへの攻撃を見張って止める仕組みの検知結果がテーマです。どの選択肢がフォールスポジティブに当たるかを見分けます。
受験者フォールスポジティブとフォールスネガティブは、どちらがどちらなのか毎回迷います。「ポジティブ」と聞くと、問題なしと判定したような気がしてしまいます。
講師そこがよくある読み違いです。ここでの「ポジティブ(陽性)」は「攻撃と判定した」という意味です。なのでフォールスポジティブは、正常な通信を誤って攻撃と判定してしまう誤検知を指します。逆にフォールスネガティブは、攻撃を誤って正常と判定してしまう検知漏れです。
受験者なるほど。では、通信が本当は正当なのか不正なのかと、WAFが止めたのか通したのかの二つを見ればよいのですね。
講師そのとおりです。その二つの観点で選択肢を整理していきましょう。まず、数式に含まれる「<」を攻撃とみなして遮断する例はどうですか。
受験者数式を送っているだけなので、リクエストは正当です。それをWAFが止めているので、正当なのに攻撃と判定した誤検知、つまりフォールスポジティブだと思います。
講師正解です。次に、開発者が独自に追加したフィールドをWAFが検査しない仕様を突かれて、攻撃の命令を含むリクエストが通ってしまう例はどうでしょう。
受験者こちらは不正な通信なのに通してしまっているので、検知漏れのフォールスネガティブですね。
講師はい。HTTPリクエストを分割して正常な通信のように見せかけ、WAFが遮断できない例も同じ組み合わせです。異常な通信を見逃しているので、フォールスネガティブに当たります。
受験者許可していない文字列を含むリクエストを遮断する例は、遮断しているのでフォールスポジティブかと一瞬思いました。
講師そこが紛らわしいところです。この例では、送られたリクエスト自体が不正だとはっきり書かれています。不正な通信を設定どおりに止めているので、これは正しい検知です。フォールスポジティブにもフォールスネガティブにも当たりません。
受験者「遮断した」だけで判断せず、通信がもともと正当だったかどうかを必ず確認する必要があるのですね。正当なのに遮断されたのは数式の例だけなので、これが答えだと分かりました。
講師よく整理できています。補足すると、一般に検査を厳しくすると誤検知が増えて正常な業務を妨げやすくなり、緩くすると検知漏れが増えて攻撃を通しやすくなります。両者はトレードオフになりやすいので、運用しながらルールを調整していくことが大切です。
まとめ
WAFのフォールスポジティブとは、正当な通信を誤って攻撃と判定して遮断してしまう誤検知のことです。反対に、攻撃を正常と判定して通してしまう検知漏れはフォールスネガティブと呼びます。判定するときは「通信が実際に正当か不正か」と「WAFが遮断したか通したか」を組み合わせて考えます。この問題では、数式の「<」を含む正当なリクエストが遮断される例がフォールスポジティブに当たり、不正なリクエストを設定どおりに遮断する例は正しい検知です。「ポジティブ」は「攻撃と判定した」という意味なので、「問題なし」と読み違えないよう注意しましょう。
解答・解説
正解はアです
この問題のテーマ
WAFの検知結果が「誤検知(フォールスポジティブ)」と「検知漏れ(フォールスネガティブ)」のどちらに当たるかを見分ける問題です。
解き方の考え方
各選択肢を二つの観点で整理します。一つ目は、送られた通信が実際に正当か不正か。二つ目は、WAFがその通信を遮断したか通したか、です。フォールスポジティブは「正当な通信なのに攻撃と判定して遮断した」場合なので、この組み合わせに当てはまる選択肢を選びます。不正な通信を通してしまった場合はフォールスネガティブで、不正な通信を遮断した場合は正しい検知です。
選択肢ごとの解説
- ○ア HTMLの特殊文字"<"を検出したときに通信を遮断するようにWAFを設定した場合,"<"などの数式を含んだ正当なHTTPリクエストが送信されたとき,WAFが攻撃として検知し,遮断する。数式に含まれる「<」を攻撃とみなして遮断する例です。リクエスト自体は正当なのに、WAFが異常と判定して止めているため、誤検知にあたるフォールスポジティブです。
- ×イ HTTPリクエストのうち,RFCなどに仕様が明確に定義されておらず,Webアプリケーションソフトウェアの開発者が独自の仕様で追加したフィールドについてはWAFが検査しないという仕様を悪用して,攻撃の命令を埋め込んだHTTPリクエストが送信されたとき,WAFが遮断しない。開発者が独自に追加したフィールドをWAFが検査しない仕様を突かれ、攻撃の命令を含むリクエストが通ってしまう例です。不正な通信を正常と判断して通しているので、検知漏れにあたるフォールスネガティブです。
- ×ウ HTTPリクエストのパラメータとして許可する文字列以外を検出したときに通信を遮断するようにWAFを設定した場合,許可しない文字列を含んだ不正なHTTPリクエストが送信されたとき,WAFが攻撃として検知し,遮断する。許可していない文字列を含む不正なリクエストを、設定どおりに攻撃として遮断する例です。不正な通信を正しく止めているので、誤検知ではありません。
- ×エ 悪意のある通信を正常な通信と見せかけ,HTTPリクエストを分割して送信されたとき,WAFが遮断しない。HTTPリクエストを分割して正常な通信のように見せかけた攻撃を、WAFが遮断できない例です。異常な通信を見逃しているので、フォールスネガティブにあたります。
補足
一般に、検査を厳しくすると誤検知が増えて正常な業務を妨げやすくなり、緩くすると検知漏れが増えて攻撃を通しやすくなります。両者はトレードオフになりやすいため、運用しながらルールを調整していく必要があります。英語の「ポジティブ(陽性)」は「攻撃と判定したこと」を指すので、「ポジティブ=問題なし」と読み違えないように注意してください。
POINT
- フォールスポジティブは、正常な通信を誤って異常と判定してしまう誤検知のことです。
- フォールスネガティブは、異常な通信を誤って正常と判定してしまう検知漏れのことです。
- 判定するときは「通信が実際に正当か不正か」と「WAFが遮断したか通したか」の二つを組み合わせて考えます。
- 不正な通信を設定どおりに遮断するのは正しい動作で、フォールスポジティブにもフォールスネガティブにもあたりません。
