
CVE-2026-15583を再現するProof-of-conceptクライアントおよびDockerラボ。これはGrafana MCP Serverにおける未認証のconfused-deputy SSRFであり、X-Grafana-URL経由でサービスアカウントトークンを漏洩させる。
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-15583
Grafana MCP Server 0.17.0 - Grafana Labs
私は @abraxas_null です。ループバックラボです。クライアントは CVE-2026-15583-Abraxas-Labs.py です。
Confused deputy。認証されていない MCP HTTP はリクエストから X-Grafana-URL を、環境変数からサービスアカウントトークンを受け取り、Authorization: Bearer を付けて {url}/api/frontend/settings に GET します。X-Grafana-Service-Account-Token が空の場合は環境変数にフォールバックします。0.17.1 で、設定されたトークンを意図しない宛先に送信しないようにすることで修正されました。
| 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 |
| Product | Grafana MCP Server |
| Affected | 0.17.0 までのすべてのバージョン(含む) |
| Patched | 0.17.1 以降 |
| Auth | 認証なし |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 のみ |
X-Grafana-URL を自分が制御するコレクターに向けて POST /mcp または GET /sse を実行します。サーバーは GRAFANA_SERVICE_ACCOUNT_TOKEN(または GRAFANA_API_KEY)をあなたに送信します。これは認証情報を伴う SSRF とトークン窃取です。ラボのオラクルは、コレクターの Authorization ヘッダー内の witness トークンです。
extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders、次に NewGrafanaClient の fetchPublicURL、そして AuthRoundTripper をマッピングしました。ループバックコレクターを備えた mcp-grafana 0.17.0 を立ち上げました。
ラボにはすでにフェイルコントロールがあります。eval/base64/system は witness ではありません。リバースシェルは witness ではありません。0.17.1 は環境変数トークンをコレクターに送信してはなりません。
ポート 18099。mcp-grafana 0.17.0。SSE または streamable-http に到達可能。環境変数トークン設定済み。コレクターは compose ネットワーク上。
ターゲットは 127.0.0.1:18099 のみ(またはバインドしたループバック)。
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
Witness: コレクターの Authorization ヘッダーに GHSA15583-WITNESS が含まれる。
何も学べずに終わる方法:
Grafana MCP Server を 0.17.1 以降に更新してください。パッチ済みビルドに対して CVE-2026-15583-Abraxas-Labs.py を再実行してください。コレクターが環境変数トークンを認識してはなりません。
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0。LICENSE を参照してください。
クライアントはループバックと通信します。所有していないシステムに対して使用することは、Abraxas Labs によって許可されていません。保証はありません。