ISA2006の「HTTPポリシーの構成」にURL保護項目があります。
その中に「正規化の検証する(Verify Normalization)」という項目があります。
この項目は、正規化後にエスケープ文字を含むURLを使用した要求をブロックする場合に使います。
今一わからない表現ですよね・・・最初は私もわかりませんでした。
もう少し詳しく説明すると、
- 正規化とは、%xxなどURLエンコード(文字コードはutf-8)されたクライアントからの要求をデコードするプロセスのこと。
- クラッカーなど攻撃者からのURLエンコードされた要求は、通常二重エンコードされたものが多いです。
※詳しくはOWASPのDouble Encodingを見てください。勉強になりますよ。 - ISAのこの設定をONにすると、2回正規化します。
最初の正規化をA、2回目の正規化をBとすれば、下記のとおりになります。
攻撃の意図がない要求 A = B
攻撃の意図がある要求 A ≠ B
OWASPのサンプルコードをJavaScriptのunescape関数を使ってテストしてみました。
2回unescapeすることでalert関数が実行されました。
この手法を使えば、SQL InjectionやXSS、Directory Traversalなどが可能になります。
とはいえ、既知の内容ですので昨今のFWやIDSのシグネチャで止められる可能性が大きいので、人為的ミスやベンダミスがない限り大丈夫と思っています。
※古典的な攻撃手法が逆に通じる場合があるので気をつけた方がいいと思います。