2021-04-08、Cloudflare は URL 正規化 を発表しました。これは HTTP リクエストの URI パスを正規化してゾーンを保護する機能です。
悪意のあるユーザーは、ファイアウォールシステムとオリジンシステムで異なる解釈をされるような URI を作成できます。Normalize incoming URLs を有効にすると、URI パスでフィルタリングするすべてのルールが正規形の URL を受け取ります。これにより、こうした悪意のあるユーザーに対する追加の保護層が得られます。
Cloudflare は、この変更の影響を受けるゾーンを除き、すべての Cloudflare ゾーンで URL 正規化を段階的に有効にしました。影響を受けるゾーンは、すべてのファイアウォールルールを分析し、URL 正規化手法を使うと一致しなくなる HTTP フィールドのパターンを探すことで特定しました。
対象フィールドは次のとおりです。
http.request.uri.pathhttp.request.full_urihttp.request.uri
Cloudflare は、既存のファイアウォールルールの動作が変わらないよう、これらの変更の影響を受けるゾーンでは URL 正規化を自動では有効にしませんでした。
Rules > Overview > URL Normalization で Normalize incoming URLs を有効にし、ゾーンのセキュリティ体制を強化することを強くおすすめします。有効にしないと、攻撃が成功するリスクが高まります。悪意のある第三者が、ルールで想定していない形に URL を加工する可能性があります。
たとえば、http.request.uri.path contains "/login" のような式のファイアウォールルールは、攻撃者が l を %6C としてエンコードすると回避される可能性があります。この場合、URL 正規化が無効だと、トラフィックはファイアウォールルールに一致しません。
詳細と追加の例は URL 正規化の仕組み を参照してください。
次の手順をおすすめします。
- URL 正規化の変更の影響を受けるファイアウォールルールを更新します。
- URL 正規化を有効にします。
これらの手順により、ゾーンのセキュリティ体制が強化されます。
URL 正規化を有効にする前に、ゾーン上の影響を受けるファイアウォールルールを確認し、次のいずれかの対応を取ってください。
-
正規化後に一致しなくなる部分を、これらのファイアウォールルールから削除します。たとえば、URL パス内の
//や../を探すルールです。管理者は以前、限定的な URL 正規化を行うためにこうしたルールを作成していました。これらのルールは、安全に無効化してから削除できます。 -
これらのファイアウォールルールで、正規化されていない URI パスを持つ訪問者を特定したい場合は、元の(または生の)非正規化フィールドを使うように更新してください。対象フィールドは次のとおりです。
raw.http.request.uri.pathraw.http.request.full_uriraw.http.request.uri
影響を受けるファイアウォールルールを更新したら、Rules > Overview > URL Normalization で URL 正規化を有効にします。
ダッシュボードで URL 正規化の設定にアクセスするには、Cloudflare ユーザーが Firewall ロール またはいずれかの Administrator ロールを持っている必要があります。