
PoC 스크립트로, Django에서 발견된 CVE-2025-64458을 시연합니다. Windows에서 `HttpResponseRedirect`/`HttpResponsePermanentRedirect`의 잠재적 DoS입니다.
Django 리디렉션 응답의 서비스 거부(DoS) 문제로, 공격자가 리디렉션 응답을 구성할 때 URL 정규화 과정에서 과도한 CPU 작업을 유발할 수 있습니다. Windows에서는 Python의 Unicode NFKC 정규화가 특히 느립니다. 그 결과, 공격자가 제어하는 매우 큰 유니코드 URL로 HttpResponseRedirect/HttpResponsePermanentRedirect를 생성하거나 django.shortcuts.redirect()를 사용하면 비정상적인 처리 시간이 발생하여 요청 스레드가 고갈되고 서비스 속도 저하/중단이 발생할 수 있습니다.
이 문제는 CVE‑2025‑27556의 후속 조치이며, 특히 Windows에서 unicodedata.normalize()의 성능 특성으로 인해 영향을 받습니다.
next/return_to 매개변수, 또는 신뢰할 수 없는 입력을 사용하여 리디렉션을 반환하는 앱 로직)를 통한 비인증 DoS.HttpResponseRedirect (302) 및 (301), 그리고 .HttpResponsePermanentRedirectdjango.shortcuts.redirect()poc.py)가 보여주는 것A)를 반복하여 매우 긴 URL을 생성합니다. 예: https://AA…/.HttpResponseRedirect(url)를 반복적으로 인스턴스화하여 URL 정규화(iri_to_uri()) 및 분할(urlsplit())을 트리거하며, Windows에서 느린 경로를 실행합니다.DisallowedRedirect로 조기에 거부되어(패치 요약 참조), 비용이 많이 드는 정규화 작업을 방지합니다.HttpResponseRedirectBase.__init__에서 리디렉션 대상에 길이 검사를 추가합니다:
django.utils.http에서 MAX_URL_LENGTH를 가져옵니다.str로 변환하고, len(redirect_to_str) > MAX_URL_LENGTH이면 urlsplit()을 호출하기 전에 DisallowedRedirect를 발생시킵니다.DisallowedRedirect를 발생시키는지 확인하는 테스트를 확장합니다.