
Cliente proof-of-concept e laboratório Docker que reproduzem o CVE-2026-15583, um SSRF de confused deputy não autenticado no Grafana MCP Server que vaza tokens de conta de serviço via X-Grafana-URL.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-15583
Grafana MCP Server 0.17.0 - Grafana Labs
Sou @abraxas_null. Laboratório em loopback. O cliente é CVE-2026-15583-Abraxas-Labs.py.
Confused deputy. O MCP HTTP não autenticado obtém o X-Grafana-URL a partir do pedido e o token da conta de serviço a partir do ambiente, e depois faz GET {url}/api/frontend/settings com Authorization: Bearer. Um X-Grafana-Service-Account-Token vazio recorre ao ambiente. Corrigido na 0.17.1 ao não enviar o token configurado para destinos não intencionais.
| 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 |
| Produto | Grafana MCP Server |
| Afetadas | todas as versões até 0.17.0 (inclusive) |
| Corrigido | 0.17.1 e posteriores |
| Autenticação | não autenticado |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1 |
POST /mcp ou GET /sse com X-Grafana-URL a apontar para um coletor que controla. O servidor envia-lhe o GRAFANA_SERVICE_ACCOUNT_TOKEN (ou GRAFANA_API_KEY). Isto é SSRF com credenciais, além de roubo de token. O oráculo do laboratório é o token testemunha no cabeçalho Authorization do coletor.
Mapeei extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders, depois NewGrafanaClient fetchPublicURL, depois AuthRoundTripper. Montei o mcp-grafana 0.17.0 com um coletor em loopback.
Controlos de falha já presentes no laboratório: eval/base64/system não é a testemunha; uma reverse shell não é a testemunha; a 0.17.1 não deve enviar o token do ambiente para o coletor.
Porta 18099. mcp-grafana 0.17.0. SSE ou streamable-http acessível. Token de ambiente definido. Coletor na rede do compose.
Alvo apenas 127.0.0.1:18099 (ou o loopback que associou).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
Testemunha: o cabeçalho Authorization do coletor contém GHSA15583-WITNESS.
Formas de perder sem aprender nada:
Atualize o Grafana MCP Server para a 0.17.1 ou mais recente. Volte a executar CVE-2026-15583-Abraxas-Labs.py contra a build corrigida: o coletor não deve ver o token do ambiente.
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Ver LICENSE.
O cliente comunica com o loopback. A sua utilização contra sistemas que não lhe pertencem não é autorizada pela Abraxas Labs. Sem garantia.