
Laboratorio locale isolato e modello nuclei per CVE-2024-12537, una vulnerabilità di denial-of-service non autenticata nell'endpoint di formattazione del codice di Open WebUI. Convalida la logica di rilevamento rispetto alle versioni vulnerabili e patchate.
Questo repository contiene un laboratorio di riproduzione locale e isolato e un candidato template nuclei per CVE-2024-12537, una vulnerabilità di denial-of-service non autenticata nell'endpoint di formattazione del codice di Open WebUI.
Il laboratorio non invia payload di denial-of-service di grandi dimensioni. Valida la logica di rilevamento di nuclei attraverso l'endpoint di fingerprint non autenticato /api/version di Open WebUI e una richiesta minima {"code":"x"} a /api/v1/utils/code/format, quindi confronta una versione vulnerabile con una versione corretta/più recente.
open-webui/open-webuiCVE-2024-12537GHSA-chf7-q7m5-fq92POST /api/v1/utils/code/formatGET /api/versionv0.5.10v0.6.14< 0.5.14 per il modello di minaccia non autenticataRiferimenti:
docker-compose.yml: avvia Open WebUI con un tag Docker selezionabileverify-cve-2024-12537.sh: attende la prontezza, stampa /api/version ed esegue nuclei quando disponibilenuclei/CVE-2024-12537.yaml: candidato template nucleicurlnucleiEsegui questo solo in un laboratorio locale isolato. Non utilizzare questi comandi contro sistemi di terze parti. Utilizza solo contro sistemi di tua proprietà o per i quali hai un'autorizzazione scritta esplicita per testarli.
Avvia Open WebUI v0.5.10:
WEBUI_TAG=v0.5.10 docker compose up -d
Esegui lo script di verifica:
sh verify-cve-2024-12537.sh
Risposta della versione vulnerabile osservata:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.5.10"}
Output nuclei della versione vulnerabile osservato:
[CVE-2024-12537:dsl-1] [http] [high] http://127.0.0.1:3010/api/v1/utils/code/format ["0.5.10"]
Pulisci:
docker compose down -v
Avvia Open WebUI v0.6.14:
WEBUI_TAG=v0.6.14 docker compose up -d
Esegui lo script di verifica:
sh verify-cve-2024-12537.sh
Risposta della versione corretta/più recente osservata:
HTTP/1.1 200 OK
content-type: application/json
{"version":"0.6.14"}
Output nuclei della versione corretta/più recente osservato:
No results found
Pulisci:
docker compose down -v
Convalida il template:
nuclei -validate -t nuclei/CVE-2024-12537.yaml
Esegui contro il laboratorio locale:
nuclei -silent \
-t nuclei/CVE-2024-12537.yaml \
-include-templates nuclei/CVE-2024-12537.yaml \
-u http://127.0.0.1:3010
Comportamento previsto:
v0.5.10: corrispondenzav0.6.14: nessuna corrispondenza/api/v1/utils/code/format.{"code":"x"}, che ha restituito {"code":"x\n"} su Docker v0.5.10 e {"detail":"Not authenticated"} su Docker v0.6.14.-include-templates perché i template con tag dos potrebbero essere esclusi per impostazione predefinita.curl: (52) Empty reply from server mentre l'applicazione è ancora in fase di avvio. Lo script di verifica attende fino a quando /api/version risponde.docker-compose.yml imposta RAG_EMBEDDING_MODEL="" e RAG_EMBEDDING_MODEL_AUTO_UPDATE=False in modo che il laboratorio non si blocchi sull'inizializzazione del modello di embedding.<= 0.3.32; questo laboratorio utilizza il cutoff del percorso codice non autenticato < 0.5.14 basato sul tracciamento dei commit. La sequenza rilevante è d3d161f72 (nessuna autenticazione, v0.5.0-v0.5.13), 2f75eef49 (aggiunge get_verified_user, v0.5.14+) e 4fe45d443 (rafforza a get_admin_user, v0.6.14+).