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_KEY al 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:

  1. Descarcă imaginea Docker a serverului Grafana MCP
  2. Configurează variabilele de mediu GRAFANA_URL și GRAFANA_API_KEY pentru instanța sa Grafana
  3. Activează transportul SSE adăugând -t sse la comanda Docker
  4. Expune fără să știe http://their_ip:8000/sse atacatorilor de la nivel de rețea

Exploatarea de către atacator

Un atacator cu acces la rețea poate:

  1. Descoperi endpoint-ul expus la http://victim_ip:8000/sse
  2. Se conecta folosind MCP Inspector: npx @modelcontextprotocol/inspector sse --port 8000
  3. Executa operațiuni neautorizate folosind instrumentele Grafana disponibile
  4. 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.0 mă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.

Referințe