
Django में पाए गए CVE 2025-64458, Windows पर `HttpResponseRedirect`/`HttpResponsePermanentRedirect` में संभावित DoS को प्रदर्शित करने के लिए एक PoC स्क्रिप्ट।
Django के रीडायरेक्ट रिस्पॉन्स में एक denial-of-service (DoS) समस्या है जो रीडायरेक्ट रिस्पॉन्स बनाते समय URL नॉर्मलाइज़ेशन के दौरान हमलावर को अत्यधिक CPU कार्य ट्रिगर करने की अनुमति देती है। Windows पर, Python का Unicode NFKC नॉर्मलाइज़ेशन विशेष रूप से धीमा है। परिणामस्वरूप, हमलावर-नियंत्रित, बहुत बड़े Unicode URLs के साथ HttpResponseRedirect/HttpResponsePermanentRedirect बनाना (या django.shortcuts.redirect() का उपयोग करना) पैथोलॉजिकल प्रोसेसिंग समय का कारण बन सकता है, जिससे रिक्वेस्ट थ्रेड्स की समाप्ति और सेवा की धीमी गति/आउटेज हो सकती है।
यह समस्या CVE‑2025‑27556 की अनुवर्ती (follow‑up) है और विशेष रूप से Windows को प्रभावित करती है, क्योंकि उस प्लेटफ़ॉर्म पर unicodedata.normalize() का प्रदर्शन विशेष रूप से धीमा है।
next/ पैरामीटर, या ऐप लॉजिक जो अविश्वसनीय इनपुट का उपयोग करके रीडायरेक्ट लौटाता है)।return_toHttpResponseRedirect (302) और HttpResponsePermanentRedirect (301), साथ ही django.shortcuts.redirect()।poc.py) क्या प्रदर्शित करता हैA) दोहराकर अत्यधिक लंबे URLs बनाता है, उदाहरण के लिए https://AA…/।HttpResponseRedirect(url) इंस्टैंशिएट करता है, जो URL नॉर्मलाइज़ेशन (iri_to_uri()) और स्प्लिटिंग (urlsplit()) को ट्रिगर करता है, जिससे Windows पर धीमा पथ सक्रिय होता है।DisallowedRedirect के साथ शुरुआत में ही अस्वीकार कर दिया जाता है (पैच सारांश देखें), जिससे महंगा नॉर्मलाइज़ेशन कार्य रुक जाता है।HttpResponseRedirectBase.__init__ में रीडायरेक्ट लक्ष्यों के लिए एक लंबाई गार्ड जोड़ता है:
django.utils.http से MAX_URL_LENGTH इम्पोर्ट करता है।str में परिवर्तित करता है और urlsplit() को कॉल करने से पहले len(redirect_to_str) > MAX_URL_LENGTH होने पर DisallowedRedirect उठाता है।DisallowedRedirect उठाएँ।