Serverul Grafana MCP expune o interfață SSE neautentificată care permite manipularea de la distanță a dashboardurilor
Autor: Evan Harris
Risc: Scăzut
Componentă afectată: Grafana MCP Server
Introducere
Ca parte a cercetării noastre continue de securitate asupra serverelor Model Context Protocol (MCP), am identificat o breșă de securitate în serverul Grafana MCP care permite accesul neautorizat la instanțele Grafana printr-o expunere de rețea neautentificată.
Prezentare generală
Serverul Grafana MCP, atunci când este pornit cu flag-ul -t sse, expune o interfață Server-Sent Events (SSE) neautentificată care, în mod implicit, se leagă la 0.0.0.0:8000 atunci când este rulat prin comanda Docker furnizată în README-ul serverului MCP. Această configurație permite atacatorilor de la distanță cu acces la rețea să interacționeze cu instanțele Grafana ale victimelor fără autentificare.
Detalii tehnice
Problema
Când este configurat cu transport SSE prin Docker, serverul:
- Se leagă la
0.0.0.0:8000, făcându-se accesibil de la orice gazdă din rețea - Nu oferă niciun mecanism de autentificare pentru endpoint-ul
/sse - Are încredere în orice client conectat pentru a executa operațiuni Grafana privilegiate
- Folosește
GRAFANA_API_KEYal victimei pentru a efectua acțiuni în numele acesteia
Configurație vulnerabilă
Urmând README-ul proiectului cu adăugarea transportului SSE:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL \
-e GRAFANA_API_KEY \
mcp/grafana -debug -t sse
Acest lucru expune endpoint-ul la http://victim_ip:8000/sse întregii rețele.
Scenariu de atac
Configurarea victimei
Un utilizator care urmează documentația:
- Descarcă imaginea Docker a serverului Grafana MCP
- Configurează variabilele de mediu
GRAFANA_URLșiGRAFANA_API_KEYpentru instanța sa Grafana - Activează transportul SSE adăugând
-t ssela comanda Docker - Expune fără să știe
http://their_ip:8000/sseatacatorilor de la nivel de rețea
Exploatarea de către atacator
Un atacator cu acces la rețea poate:
- Descoperi endpoint-ul expus la
http://victim_ip:8000/sse - Se conecta folosind MCP Inspector:
npx @modelcontextprotocol/inspector sse --port 8000 - Executa operațiuni neautorizate folosind instrumentele Grafana disponibile
- Manipula dashboardurile listându-le, creându-le, actualizându-le sau ștergându-le
Dovadă a conceptului
Demonstrarea atacului
Folosind MCP Inspector, un atacator se poate conecta la endpoint-ul SSE expus și poate executa operațiuni Grafana:
- Lista echipele pentru a înțelege structura organizației
- Lista dashboardurile pentru a identifica informații de business sensibile
- Crea dashboarduri pentru a injecta conținut malițios
- Actualiza dashboarduri pentru a modifica vizualizările existente
- Accesa sursele de date și alte funcționalități Grafana privilegiate
Evaluarea impactului
Acest vector de atac permite:
Încălcarea confidențialității
- Descoperirea surselor de date care expune sistemele și configurațiile backend
- Enumerarea dashboardurilor care dezvăluie informații de business sensibile
- Scurgerea informațiilor despre utilizatori și echipe prin interfața MCP
Compromiterea integrității
- Injectarea de conținut malițios care poate induce în eroare utilizatorii
- Alterarea configurației care afectează acuratețea vizualizărilor
- Manipularea dashboardurilor prin creare, modificare sau ștergere
Impact asupra disponibilității
- Perturbarea serviciului prin ștergerea sau coruperea dashboardurilor
- Refuzul serviciului posibil prin supraîncărcarea sistemului
- Epuizarea resurselor prin cereri excesive de instrumente
Factori de risc
- Cerința de acces la rețea: Atacatorii au nevoie de acces la nivel de rețea la victimă
- Fără autentificare: Orice client se poate conecta și executa operațiuni privilegiate
- Legare implicită Docker: Expunerea
0.0.0.0mărește suprafața de atac - Operare silențioasă: Atacurile pot avea loc fără ca utilizatorul să fie conștient
Măsuri de atenuare recomandate
Pentru utilizatori
- Evitați utilizarea
-t sseîn rețele partajate sau neîncredere - Implementați restricții la nivel de rețea folosind firewall-uri sau VPN-uri
- Folosiți legarea la localhost modificând maparea portului Docker la
127.0.0.1:8000:8000 - Monitorizați jurnalele Grafana pentru activitate API neașteptată
Cronologia divulgării
- 2024-05-22: Vulnerabilitate descoperită și raportată către Grafana prin Intigriti VDP
- 2024-05-23: Grafana confirmă primirea raportului
- 2024-05-23: Raport marcat ca „Informativ” de către echipa Grafana
- 2024-05-23: Grafana acordă permisiunea de a publica public constatările
- 2025-09-02: Divulgare publică și publicarea buletinului
Concluzie
Interfața SSE neautentificată din serverul Grafana MCP demonstrează importanța valorilor implicite sigure în instrumentele de dezvoltare care fac legătura între agenții AI și sistemele enterprise.
Deși cerința de acces la rețea limitează suprafața de atac, organizațiile care implementează servere MCP ar trebui să aplice strategii de apărare în profunzime și să mențină conștientizarea riscurilor de expunere în rețea, în special în medii partajate.