
Proof-of-Concept-Client und Docker-Lab zur Reproduktion von CVE-2026-15583, einer unauthentifizierten Confused-Deputy-SSRF im Grafana MCP Server, die Service-Account-Tokens über X-Grafana-URL preisgibt.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-15583
Grafana MCP Server 0.17.0 - Grafana Labs
Ich bin @abraxas_null. Loopback-Lab. Der Client ist CVE-2026-15583-Abraxas-Labs.py.
Confused Deputy. Unauthentifiziertes MCP HTTP übernimmt X-Grafana-URL aus der Anfrage und das Service-Account-Token aus der Umgebung und führt dann GET {url}/api/frontend/settings mit Authorization: Bearer aus. Ein leeres X-Grafana-Service-Account-Token fällt auf die Umgebungsvariable zurück. Behoben in 0.17.1, indem das konfigurierte Token nicht mehr an unbeabsichtigte Ziele gesendet wird.
| CVE | CVE-2026-15583 · CVE.org |
| CWE | CWE-918 |
| CVSS | High: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Produkt | Grafana MCP Server |
| Betroffen | alle Versionen bis einschließlich 0.17.0 |
| Gepatcht | 0.17.1 und später |
| Auth | unauthentifiziert |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
POST /mcp oder GET /sse mit X-Grafana-URL, das auf einen von dir kontrollierten Collector zeigt. Der Server liefert GRAFANA_SERVICE_ACCOUNT_TOKEN (oder GRAFANA_API_KEY) an dich aus. Das ist credential-basiertes SSRF plus Token-Diebstahl. Das Lab-Orakel ist das Witness-Token im Authorization-Header des Collectors.
Ich habe extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders nachverfolgt, dann NewGrafanaClient fetchPublicURL, dann AuthRoundTripper. Habe mcp-grafana 0.17.0 mit einem Loopback-Collector aufgesetzt.
Fail-Controls sind bereits im Lab vorhanden: eval/base64/system ist nicht der Witness; eine Reverse Shell ist nicht der Witness; 0.17.1 darf das Env-Token nicht an den Collector senden.
Port 18099. mcp-grafana 0.17.0. SSE oder streamable-http erreichbar. Env-Token gesetzt. Collector im Compose-Netzwerk.
Ziel nur 127.0.0.1:18099 (oder das von dir gebundene Loopback).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
Witness: Der Authorization-Header des Collectors enthält GHSA15583-WITNESS.
Wege, nichts zu lernen:
Aktualisiere Grafana MCP Server auf 0.17.1 oder neuer. Führe CVE-2026-15583-Abraxas-Labs.py erneut gegen den gepatchten Build aus: Der Collector darf das Env-Token nicht sehen.
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Siehe LICENSE.
Der Client kommuniziert mit Loopback. Die Verwendung gegen Systeme, die dir nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.