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 发起 GET {url}/api/frontend/settings。空的 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 |
| 产品 | Grafana MCP Server |
| 受影响版本 | 所有版本 直至 0.17.0(含) |
| 已修补版本 | 0.17.1 及更高版本 |
| 认证 | 未认证 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
向 /mcp 发送 POST 或向 /sse 发送 GET,并将 X-Grafana-URL 指向你控制的收集器。服务器会将 GRAFANA_SERVICE_ACCOUNT_TOKEN(或 GRAFANA_API_KEY)发送给你。这就是带凭据的 SSRF 加上令牌窃取。实验环境的判定依据是收集器 Authorization 头中的见证令牌。
我梳理了 extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders,然后是 NewGrafanaClient 的 fetchPublicURL,再是 AuthRoundTripper。搭建了 mcp-grafana 0.17.0 和一个回环收集器。
实验环境中已设置失败对照:eval/base64/system 不是判定依据;反向 shell 不是判定依据;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
判定依据:收集器的 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 授权。不提供任何担保。