
Local isolated lab and nuclei template for CVE-2024-12537, an unauthenticated denial-of-service vulnerability in Open WebUI's code formatting endpoint. Validates detection logic against vulnerable and patched versions.
Ce dépôt contient un laboratoire de reproduction local et isolé ainsi qu'un candidat modèle nuclei pour CVE-2024-12537, une vulnérabilité de déni de service non authentifiée dans le point de terminaison de formatage de code d'Open WebUI.
Le laboratoire n'envoie pas de charges utiles de déni de service massives. Il valide la logique de détection nuclei via le point de terminaison d'empreinte non authentifié /api/version d'Open WebUI et une requête minimale {"code":"x"} à /api/v1/utils/code/format, puis compare une version vulnérable avec une version corrigée/plus récente.
open-webui/open-webuiCVE-2024-12537GHSA-chf7-q7m5-fq92POST /api/v1/utils/code/formatGET /api/versionv0.5.10v0.6.14< 0.5.14 pour le modèle de menace non authentifiéRéférences :
docker-compose.yml : démarre Open WebUI avec une balise Docker sélectionnableverify-cve-2024-12537.sh : attend que le service soit prêt, affiche /api/version et exécute nuclei lorsque disponiblenuclei/CVE-2024-12537.yaml : candidat modèle nucleicurlnucleiExécutez ceci uniquement dans un laboratoire local isolé. N'utilisez pas ces commandes contre des systèmes tiers. Utilisez-les uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de test.
Démarrez Open WebUI v0.5.10 :
WEBUI_TAG=v0.5.10 docker compose up -d
Exécutez le script de vérification :
sh verify-cve-2024-12537.sh
Réponse observée de la version vulnérable :
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.5.10"}
Sortie nuclei observée pour la version vulnérable :
[CVE-2024-12537:dsl-1] [http] [high] http://127.0.0.1:3010/api/v1/utils/code/format ["0.5.10"]
Nettoyage :
docker compose down -v
Démarrez Open WebUI v0.6.14 :
WEBUI_TAG=v0.6.14 docker compose up -d
Exécutez le script de vérification :
sh verify-cve-2024-12537.sh
Réponse observée de la version corrigée/plus récente :
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.6.14"}
Sortie nuclei observée pour la version corrigée/plus récente :
No results found
Nettoyage :
docker compose down -v
Validez le modèle :
nuclei -validate -t nuclei/CVE-2024-12537.yaml
Exécutez contre le laboratoire local :
nuclei -silent \
-t nuclei/CVE-2024-12537.yaml \
-include-templates nuclei/CVE-2024-12537.yaml \
-u http://127.0.0.1:3010
Comportement attendu :
v0.5.10 : correspondancev0.6.14 : aucune correspondance/api/v1/utils/code/format.{"code":"x"}, qui a renvoyé {"code":"x\n"} sur Docker v0.5.10 et {"detail":"Not authenticated"} sur Docker v0.6.14.-include-templates car les modèles étiquetés dos peuvent être exclus par défaut.curl: (52) Empty reply from server pendant le démarrage de l'application. Le script de vérification attend que /api/version réponde.docker-compose.yml définit RAG_EMBEDDING_MODEL="" et RAG_EMBEDDING_MODEL_AUTO_UPDATE=False pour que le laboratoire ne bloque pas sur l'initialisation du modèle d'embedding.<= 0.3.32 ; ce laboratoire utilise le seuil de chemin de code non authentifié < 0.5.14 basé sur le traçage des commits. La séquence pertinente est d3d161f72 (pas d'authentification, v0.5.0-v0.5.13), 2f75eef49 (ajoute get_verified_user, v0.5.14+), et 4fe45d443 (renforce avec get_admin_user, v0.6.14+).