
POC_CVE-2024-12537
Dieses Repository enthält ein lokales, isoliertes Reproduktionslabor und einen Nuclei-Template-Kandidaten für CVE-2024-12537, eine nicht authentifizierte Denial-of-Service-Sicherheitslücke im Code-Formatierungs-Endpunkt von Open WebUI.
Das Labor sendet keine großen Denial-of-Service-Payloads. Es validiert die Nuclei-Erkennungslogik über den nicht authentifizierten Fingerprint-Endpunkt /api/version von Open WebUI und eine minimale Anfrage {"code":"x"} an /api/v1/utils/code/format und vergleicht dann eine anfällige Version mit einer gepatchten/neueren Version.
open-webui/open-webuiCVE-2024-12537GHSA-chf7-q7m5-fq92POST /api/v1/utils/code/formatGET /api/versionv0.5.10v0.6.14< 0.5.14 für das nicht authentifizierte BedrohungsmodellReferenzen:
docker-compose.yml: startet Open WebUI mit einem wählbaren Docker-Tagverify-cve-2024-12537.sh: wartet auf Bereitschaft, gibt /api/version aus und führt nuclei aus, wenn verfügbarnuclei/CVE-2024-12537.yaml: Nuclei-Template-KandidatcurlnucleiFühren Sie dies nur in einem lokalen, isolierten Labor aus. Verwenden Sie diese Befehle nicht gegen Systeme Dritter. Verwenden Sie sie nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.
Starten Sie Open WebUI v0.5.10:
WEBUI_TAG=v0.5.10 docker compose up -d
Führen Sie das Verifikationsskript aus:
sh verify-cve-2024-12537.sh
Beobachtete Antwort der anfälligen Version:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.5.10"}
Beobachtete Nuclei-Ausgabe der anfälligen Version:
[CVE-2024-12537:dsl-1] [http] [high] http://127.0.0.1:3010/api/v1/utils/code/format ["0.5.10"]
Aufräumen:
docker compose down -v
Starten Sie Open WebUI v0.6.14:
WEBUI_TAG=v0.6.14 docker compose up -d
Führen Sie das Verifikationsskript aus:
sh verify-cve-2024-12537.sh
Beobachtete Antwort der gepatchten/neueren Version:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.6.14"}
Beobachtete Nuclei-Ausgabe der gepatchten/neueren Version:
No results found
Aufräumen:
docker compose down -v
Vorlage validieren:
nuclei -validate -t nuclei/CVE-2024-12537.yaml
Gegen das lokale Labor ausführen:
nuclei -silent \
-t nuclei/CVE-2024-12537.yaml \
-include-templates nuclei/CVE-2024-12537.yaml \
-u http://127.0.0.1:3010
Erwartetes Verhalten:
v0.5.10: Trefferv0.6.14: kein Treffer/api/v1/utils/code/format.{"code":"x"}, was auf Docker v0.5.10 {"code":"x\n"} und auf Docker v0.6.14 {"detail":"Not authenticated"} zurückgab.-include-templates, da mit dos getaggte Templates standardmäßig ausgeschlossen sein können.curl: (52) Empty reply from server zurück, während die Anwendung noch startet. Das Verifikationsskript wartet, bis /api/version antwortet.docker-compose.yml setzt RAG_EMBEDDING_MODEL="" und RAG_EMBEDDING_MODEL_AUTO_UPDATE=False, damit das Labor nicht auf die Initialisierung des Embedding-Modells wartet.<= 0.3.32; dieses Labor verwendet den nicht authentifizierten Codepfad-Cutoff < 0.5.14 basierend auf Commit-Verfolgung. Die relevante Sequenz ist d3d161f72 (keine Authentifizierung, v0.5.0-v0.5.13), 2f75eef49 (fügt get_verified_user hinzu, v0.5.14+) und 4fe45d443 (härtet auf get_admin_user, v0.6.14+).