
Cliente de prueba de concepto y laboratorio Docker que reproduce CVE-2026-15583, un SSRF de tipo confused-deputy no autenticado en Grafana MCP Server que filtra tokens de cuenta de servicio a través de X-Grafana-URL.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-15583
Grafana MCP Server 0.17.0 - Grafana Labs
Soy @abraxas_null. Laboratorio en loopback. El cliente es CVE-2026-15583-Abraxas-Labs.py.
Confused deputy. El MCP HTTP no autenticado toma X-Grafana-URL de la petición y el token de la cuenta de servicio del entorno, y luego hace GET {url}/api/frontend/settings con Authorization: Bearer. Un X-Grafana-Service-Account-Token vacío recurre al entorno. Corregido en 0.17.1 al no enviar el token configurado a destinos no previstos.
| CVE | CVE-2026-15583 · CVE.org |
| CWE | CWE-918 |
| CVSS | Alto: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Producto | Grafana MCP Server |
| Afectadas | todas las versiones hasta la 0.17.0 (inclusive) |
| Parcheado | 0.17.1 y posteriores |
| Autenticación | no autenticado |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
POST /mcp o GET /sse con X-Grafana-URL apuntando a un colector que tú controlas. El servidor envía GRAFANA_SERVICE_ACCOUNT_TOKEN (o GRAFANA_API_KEY) hacia ti. Eso es SSRF con credenciales más robo de token. El oráculo del laboratorio es el token testigo en la cabecera Authorization del colector.
Mapeé extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders, luego NewGrafanaClient fetchPublicURL, luego AuthRoundTripper. Levanté mcp-grafana 0.17.0 con un colector en loopback.
Controles de fallo ya presentes en el laboratorio: eval/base64/system no es el testigo; una reverse shell no es el testigo; la 0.17.1 no debe enviar el token del entorno al colector.
Puerto 18099. mcp-grafana 0.17.0. SSE o streamable-http accesible. Token de entorno configurado. Colector en la red de compose.
Objetivo solo 127.0.0.1:18099 (o el loopback que hayas enlazado).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
Testigo: la cabecera Authorization del colector contiene GHSA15583-WITNESS.
Formas de perder sin aprender nada:
Actualiza Grafana MCP Server a 0.17.1 o posterior. Vuelve a ejecutar CVE-2026-15583-Abraxas-Labs.py contra la compilación parcheada: el colector no debe ver el token del entorno.
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Ver LICENSE.
El cliente se comunica con loopback. Usarlo contra sistemas que no son tuyos no está autorizado por Abraxas Labs. Sin garantía.