
Djangoのリダイレクト応答におけるサービス拒否(DoS)の問題により、攻撃者がリダイレクト応答の構築時にURL正規化中に過剰なCPU処理を引き起こす可能性があります。Windowsでは、PythonのUnicode NFKC正規化が特に低速です。その結果、攻撃者が制御する非常に大きなUnicode URLを使用してHttpResponseRedirect/HttpResponsePermanentRedirect(またはdjango.shortcuts.redirect())を作成すると、病的な処理時間が発生し、リクエストスレッドの枯渇やサービスの減速・停止につながる可能性があります。
この問題はCVE‑2025‑27556のフォローアップであり、Windows上でのunicodedata.normalize()のパフォーマンス特性により、特にWindowsに影響を与えます。
next/return_toパラメータ、または信頼できない入力を使用してリダイレクトを返すアプリロジック)を反映または使用するエンドポイントを介した、認証されていないDoS。HttpResponseRedirect(302)および(301)、さらにに影響します。HttpResponsePermanentRedirectdjango.shortcuts.redirect()poc.py)が示すことA)を繰り返すことで非常に長いURLを構築します(例:https://AA…/)。HttpResponseRedirect(url)を繰り返しインスタンス化し、URL正規化(iri_to_uri())と分割(urlsplit())をトリガーし、Windows上で低速なパスを実行します。DisallowedRedirectで拒否され(パッチの概要を参照)、高価な正規化作業を防ぎます。HttpResponseRedirectBase.__init__にリダイレクトターゲットの長さガードを追加:
django.utils.httpからMAX_URL_LENGTHをインポート。strに変換し、len(redirect_to_str) > MAX_URL_LENGTHの場合、urlsplit()を呼び出す前にDisallowedRedirectを発生させます。DisallowedRedirectを発生させることを確認します。