Autor: Evan Harris
Rizik: Nizak
Zahvaćena komponenta: Grafana MCP Server

Uvod

U sklopu našeg kontinuiranog sigurnosnog istraživanja poslužitelja Model Context Protocol (MCP) uočili smo sigurnosni propust u Grafana MCP Serveru koji omogućuje neovlašten pristup Grafana instancama putem neautentificirane mrežne izloženosti.

Pregled

Grafana MCP Server, kada se pokrene s zastavicom -t sse, izlaže neautentificirano sučelje Server-Sent Events (SSE) koje se prema zadanim postavkama povezuje na 0.0.0.0:8000 kada se pokreće putem Docker naredbe navedene u README datoteci MCP Servera. Takva konfiguracija omogućuje udaljenim napadačima s mrežnim pristupom interakciju s Grafana instancama žrtava bez autentifikacije.

Tehnički detalji

Problem

Kada je konfiguriran s SSE transportom putem Dockera, poslužitelj:

  • Povezuje se na 0.0.0.0:8000, čineći se dostupnim s bilo kojeg čvora u mreži
  • Ne pruža nikakav mehanizam autentifikacije za krajnju točku /sse
  • Vjeruje svakom povezanom klijentu da izvršava povlaštene Grafana operacije
  • Koristi GRAFANA_API_KEY žrtve za izvođenje radnji u njeno ime

Ranjiva konfiguracija

Prema README datoteci projekta, uz dodatak SSE transporta:

docker run --rm -p 8000:8000 \
  -e GRAFANA_URL \
  -e GRAFANA_API_KEY \
  mcp/grafana -debug -t sse

Time se krajnja točka http://victim_ip:8000/sse čini dostupnom cijeloj mreži.

Scenarij napada

Postavljanje na strani žrtve

Korisnik koji slijedi dokumentaciju:

  1. Preuzima Docker sliku Grafana MCP Servera
  2. Konfigurira varijable okruženja GRAFANA_URL i GRAFANA_API_KEY za svoju Grafana instancu
  3. Omogućuje SSE transport dodavanjem -t sse u Docker naredbu
  4. Nesvjesno izlaže http://their_ip:8000/sse napadačima na mrežnoj razini

Iskorištavanje od strane napadača

Napadač s mrežnim pristupom može:

  1. Otkriti izloženu krajnju točku na adresi http://victim_ip:8000/sse
  2. Povezati se pomoću MCP Inspectora: npx @modelcontextprotocol/inspector sse --port 8000
  3. Izvršavati neovlaštene operacije korištenjem dostupnih Grafana alata
  4. Manipulirati nadzornim pločama njihovim ispisivanjem, stvaranjem, ažuriranjem ili brisanjem

Proof of Concept

Demonstracija napada

Pomoću MCP Inspectora napadač se može povezati na izloženu SSE krajnju točku i izvršavati Grafana operacije:

  • Ispisati timove (teams) kako bi razumio strukturu organizacije
  • Ispisati nadzorne ploče kako bi identificirao osjetljivu poslovnu analitiku
  • Stvoriti nadzorne ploče kako bi ubacio zlonamjeran sadržaj
  • Ažurirati nadzorne ploče kako bi izmijenio postojeće vizualizacije
  • Pristupiti izvorima podataka i ostaloj povlaštenoj Grafana funkcionalnosti

Procjena utjecaja

Ovaj vektor napada omogućuje:

Narušavanje povjerljivosti

  • Otkrivanje izvora podataka koje razotkriva pozadinske sustave i konfiguracije
  • Nabrajanje nadzornih ploča koje otkriva osjetljivu poslovnu analitiku
  • Curenje informacija o korisnicima i timovima kroz MCP sučelje

Kompromitacija integriteta

  • Ubacivanje zlonamjernog sadržaja koje potencijalno dovodi korisnike u zabludu
  • Neovlašteno mijenjanje konfiguracije koje utječe na točnost vizualizacija
  • Manipulacija nadzornim pločama putem njihovog stvaranja, izmjene ili brisanja

Utjecaj na dostupnost

  • Prekid rada usluge putem brisanja ili oštećenja nadzornih ploča
  • Potencijalni uskraćivanje usluge putem preopterećenja sustava
  • Iscrpljivanje resursa zbog prekomjernog broja zahtjeva prema alatima

Faktori rizika

  • Zahtjev za mrežnim pristupom: Napadačima je potreban pristup žrtvi na mrežnoj razini
  • Bez autentifikacije: Bilo koji klijent može se povezati i izvršavati povlaštene operacije
  • Zadana Docker vezanje: Izloženost na 0.0.0.0 povećava površinu napada
  • Neprimjetan rad: Napadi se mogu odvijati bez znanja korisnika

Preporučeno ublažavanje

Za korisnike

  • Izbjegavajte korištenje -t sse na dijeljenim ili nepovjerljivim mrežama
  • Uvedite ograničenja na mrežnoj razini pomoću vatrozida ili VPN-a
  • Koristite vezanje na localhost izmjenom mapiranja Docker portova na 127.0.0.1:8000:8000
  • Nadzirite Grafana zapisnike radi neočekivane API aktivnosti

Vremenski slijed objave

  • 2024-05-22: Ranjivost otkrivena i prijavljena Grafani putem Intigriti VDP
  • 2024-05-23: Grafana potvrđuje primitak prijave
  • 2024-05-23: Prijavu Grafana tim označava kao “Informative”
  • 2024-05-23: Grafana daje dopuštenje za javnu objavu nalaza
  • 2025-09-02: Javna objava i objava sigurnosne obavijesti

Zaključak

Neautentificirano SSE sučelje u Grafana MCP Serveru pokazuje važnost sigurnih zadanih postavki u razvojnim alatima koji povezuju AI agente s korporativnim sustavima.

Iako zahtjev za mrežnim pristupom ograničava površinu napada, organizacije koje uvode MCP poslužitelje trebale bi primjenjivati strategije dubinske obrane i održavati svijest o rizicima mrežne izloženosti, osobito u dijeljenim okruženjima.

Reference