
Client de preuve de concept et lab Docker reproduisant CVE-2026-15583, une SSRF de type confused-deputy non authentifiée dans Grafana MCP Server qui exfiltre les jetons de compte de service via X-Grafana-URL.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-15583
Grafana MCP Server 0.17.0 - Grafana Labs
Je suis @abraxas_null. Labo en boucle locale. Le client est CVE-2026-15583-Abraxas-Labs.py.
Confused deputy. Le MCP HTTP non authentifié récupère X-Grafana-URL depuis la requête et le jeton de compte de service depuis l'environnement, puis effectue un GET {url}/api/frontend/settings avec Authorization: Bearer. Un X-Grafana-Service-Account-Token vide retombe sur la variable d'environnement. Corrigé dans la 0.17.1 en n'envoyant plus le jeton configuré vers des destinations non prévues.
| CVE | CVE-2026-15583 · CVE.org |
| CWE | CWE-918 |
| CVSS | Élevé : 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Produit | Grafana MCP Server |
| Affecté | toutes les versions jusqu'à 0.17.0 (incluse) |
| Corrigé | 0.17.1 et ultérieures |
| Auth | non authentifié |
| Licence | GNU Affero GPL v3.0 |
| Labo | 127.0.0.1 uniquement |
POST /mcp ou GET /sse avec X-Grafana-URL pointant vers un collecteur que vous contrôlez. Le serveur vous transmet GRAFANA_SERVICE_ACCOUNT_TOKEN (ou GRAFANA_API_KEY). C'est du SSRF avec identifiants, plus un vol de jeton. L'oracle du labo est le jeton témoin dans l'en-tête Authorization du collecteur.
J'ai cartographié extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders, puis NewGrafanaClient fetchPublicURL, puis AuthRoundTripper. J'ai monté mcp-grafana 0.17.0 avec un collecteur en boucle locale.
Contrôles d'échec déjà présents dans le labo : eval/base64/system n'est pas le témoin ; un reverse shell n'est pas le témoin ; la 0.17.1 ne doit pas envoyer le jeton d'environnement au collecteur.
Port 18099. mcp-grafana 0.17.0. SSE ou streamable-http accessible. Jeton d'environnement défini. Collecteur sur le réseau compose.
Cible uniquement 127.0.0.1:18099 (ou la boucle locale que vous avez liée).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
Témoin : l'en-tête Authorization du collecteur contient GHSA15583-WITNESS.
Façons d'échouer sans rien apprendre :
Mettez à jour Grafana MCP Server vers la 0.17.1 ou une version plus récente. Relancez CVE-2026-15583-Abraxas-Labs.py contre la version corrigée : le collecteur ne doit pas voir le jeton d'environnement.
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Voir LICENSE.
Le client communique en boucle locale. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.