
نص برمجي لإثبات المفهوم (PoC) لتوضيح CVE 2025-64458، الموجود في Django، ثغرة رفض الخدمة المحتملة (DoS) في `HttpResponseRedirect`/`HttpResponsePermanentRedirect` على ويندوز.
تسمح مشكلة رفض الخدمة (DoS) في استجابات إعادة التوجيه في Django للمهاجم بتحفيز عمل CPU مفرط أثناء تسوية عنوان URL عند بناء استجابات إعادة التوجيه. على ويندوز، يكون تسوية Unicode NFKC في Python بطيئة بشكل خاص. ونتيجة لذلك، فإن إنشاء HttpResponseRedirect/HttpResponsePermanentRedirect (أو استخدام django.shortcuts.redirect()) مع عناوين URL كبيرة جدًا ومسيطر عليها من قبل المهاجم يمكن أن يتسبب في أوقات معالجة غير طبيعية، مما يؤدي إلى استنزاف خيوط الطلب وتباطؤ/انقطاع الخدمة.
هذه المشكلة هي متابعة لـ CVE‑2025‑27556 وتؤثر تحديدًا على ويندوز بسبب خصائص أداء unicodedata.normalize() على هذا النظام.
next/return_to، أو منطق التطبيق الذي يعيد إعادة توجيه باستخدام إدخال غير موثوق).HttpResponseRedirect (302) و HttpResponsePermanentRedirect (301)، بالإضافة إلى django.shortcuts.redirect().poc.py)A)، على سبيل المثال https://AA…/.HttpResponseRedirect(url)، مما يؤدي إلى تشغيل تسوية URL (iri_to_uri()) والتقسيم (urlsplit())، مما يمارس المسار البطيء على ويندوز.DisallowedRedirect (انظر ملخص التصحيح)، مما يمنع عمل التسوية المكلف.HttpResponseRedirectBase.__init__:
MAX_URL_LENGTH من django.utils.http.str ويرفع DisallowedRedirect إذا كان len(redirect_to_str) > MAX_URL_LENGTH قبل استدعاء urlsplit().DisallowedRedirect.