
عميل إثبات مفهوم ومختبر Docker لإعادة إنتاج CVE-2026-15583، وهو ثغرة SSRF من نوع confused-deputy غير مصادَق عليها في Grafana MCP Server تسرّب رموز حسابات الخدمة عبر 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. مختبر loopback. العميل هو CVE-2026-15583-Abraxas-Labs.py.
Confused deputy. خادم MCP HTTP غير المُصادَق يأخذ X-Grafana-URL من الطلب ورمز حساب الخدمة من البيئة، ثم ينفّذ GET على {url}/api/frontend/settings مع Authorization: Bearer. قيمة 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 فقط |
POST إلى /mcp أو GET إلى /sse مع X-Grafana-URL يشير إلى collector تتحكم به. يرسل الخادم GRAFANA_SERVICE_ACCOUNT_TOKEN (أو GRAFANA_API_KEY) إليك. هذا SSRF موثَّق مع سرقة الرمز. دليل المختبر هو رمز الشاهد في ترويسة Authorization الخاصة بالـ collector.
قمت بتتبّع extractKeyGrafanaInfoFromReq / ExtractGrafanaInfoFromHeaders، ثم NewGrafanaClient fetchPublicURL، ثم AuthRoundTripper. أعددت mcp-grafana 0.17.0 مع collector على loopback.
ضوابط الفشل موجودة مسبقًا في المختبر: eval/base64/system ليس هو الشاهد؛ reverse shell ليس هو الشاهد؛ 0.17.1 يجب ألا يرسل رمز البيئة إلى الـ collector.
المنفذ 18099. mcp-grafana 0.17.0. SSE أو streamable-http قابل للوصول. رمز البيئة مُعيَّن. الـ collector على شبكة compose.
الهدف فقط 127.0.0.1:18099 (أو الـ loopback الذي ربطته).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-15583-Abraxas-Labs.py
الشاهد: ترويسة Authorization الخاصة بالـ Collector تحتوي على GHSA15583-WITNESS.
طرق للخسارة دون تعلّم أي شيء:
حدّث Grafana MCP Server إلى 0.17.1 أو أحدث. أعد تشغيل CVE-2026-15583-Abraxas-Labs.py مقابل البناء المُرقَّع: يجب ألا يرى الـ collector رمز البيئة.
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. راجع LICENSE.
يتحدث العميل إلى loopback. استخدامه ضد أنظمة لا تملكها غير مُصرَّح به من Abraxas Labs. لا ضمان.