Autore: Evan Harris
Rischio: Basso
Componente interessato: Grafana MCP Server

Introduzione

Nell’ambito della nostra continua attività di ricerca sulla sicurezza dei server Model Context Protocol (MCP), abbiamo individuato una lacuna di sicurezza nel Grafana MCP Server che consente l’accesso non autorizzato alle istanze di Grafana attraverso un’esposizione di rete non autenticata.

Panoramica

Il Grafana MCP Server, quando avviato con il flag -t sse, espone un’interfaccia Server-Sent Events (SSE) non autenticata che, per impostazione predefinita, si lega a 0.0.0.0:8000 quando viene eseguito tramite il comando Docker fornito nel README del MCP Server. Questa configurazione consente ad aggressori remoti con accesso alla rete di interagire con le istanze di Grafana delle vittime senza autenticazione.

Dettagli tecnici

Il problema

Quando è configurato con il trasporto SSE tramite Docker, il server:

  • Si lega a 0.0.0.0:8000, rendendolo accessibile da qualsiasi host della rete
  • Non fornisce alcun meccanismo di autenticazione per l’endpoint /sse
  • Si fida di qualsiasi client connesso per eseguire operazioni privilegiate di Grafana
  • Utilizza la GRAFANA_API_KEY della vittima per eseguire azioni per suo conto

Configurazione vulnerabile

Seguendo il README del progetto con l’aggiunta del trasporto SSE:

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

Questo espone l’endpoint all’indirizzo http://victim_ip:8000/sse all’intera rete.

Scenario di attacco

Configurazione della vittima

Un utente che segue la documentazione:

  1. Scarica l’immagine Docker del Grafana MCP Server
  2. Configura le variabili d’ambiente GRAFANA_URL e GRAFANA_API_KEY per la propria istanza di Grafana
  3. Abilita il trasporto SSE aggiungendo -t sse al comando Docker
  4. Espone inconsapevolmente http://their_ip:8000/sse ad aggressori a livello di rete

Sfruttamento da parte dell’aggressore

Un aggressore con accesso alla rete può:

  1. Individuare l’endpoint esposto all’indirizzo http://victim_ip:8000/sse
  2. Connettersi utilizzando MCP Inspector: npx @modelcontextprotocol/inspector sse --port 8000
  3. Eseguire operazioni non autorizzate utilizzando gli strumenti di Grafana disponibili
  4. Manipolare le dashboard elencandole, creandole, aggiornandole o eliminandole

Proof of Concept

Dimostrazione dell’attacco

Utilizzando MCP Inspector, un aggressore può connettersi all’endpoint SSE esposto ed eseguire operazioni di Grafana:

  • Elencare i team per comprendere la struttura dell’organizzazione
  • Elencare le dashboard per identificare informazioni sensibili di business intelligence
  • Creare dashboard per iniettare contenuti dannosi
  • Aggiornare le dashboard per modificare le visualizzazioni esistenti
  • Accedere alle origini dati e ad altre funzionalità privilegiate di Grafana

Valutazione dell’impatto

Questo vettore di attacco consente:

Violazione della riservatezza

  • Individuazione delle origini dati, esponendo sistemi di backend e configurazioni
  • Enumerazione delle dashboard, rivelando informazioni sensibili di business intelligence
  • Fuga di informazioni su utenti e team tramite l’interfaccia MCP

Compromissione dell’integrità

  • Iniezione di contenuti dannosi, che può trarre in inganno gli utenti
  • Manomissione della configurazione, che compromette l’accuratezza delle visualizzazioni
  • Manipolazione delle dashboard tramite creazione, modifica o eliminazione

Impatto sulla disponibilità

  • Interruzione del servizio tramite eliminazione o corruzione delle dashboard
  • Potenziale denial of service tramite sovraccarico del sistema
  • Esaurimento delle risorse tramite richieste eccessive di strumenti

Fattori di rischio

  • Requisito di accesso alla rete: gli aggressori necessitano di accesso alla rete della vittima
  • Nessuna autenticazione: qualsiasi client può connettersi ed eseguire operazioni privilegiate
  • Binding predefinito di Docker: l’esposizione a 0.0.0.0 amplia la superficie di attacco
  • Operazione silenziosa: gli attacchi possono avvenire senza che l’utente se ne accorga

Mitigazioni consigliate

Per gli utenti

  • Evitare di usare -t sse su reti condivise o non affidabili
  • Applicare restrizioni a livello di rete utilizzando firewall o VPN
  • Utilizzare il binding su localhost modificando la mappatura delle porte di Docker in 127.0.0.1:8000:8000
  • Monitorare i log di Grafana per rilevare attività API impreviste

Cronologia della divulgazione

  • 2024-05-22: Vulnerabilità scoperta e segnalata a Grafana tramite Intigriti VDP
  • 2024-05-23: Grafana conferma la ricezione della segnalazione
  • 2024-05-23: La segnalazione viene contrassegnata come “Informative” dal team di Grafana
  • 2024-05-23: Grafana concede l’autorizzazione a pubblicare i risultati pubblicamente
  • 2025-09-02: Divulgazione pubblica e pubblicazione dell’avviso di sicurezza

Conclusione

L’interfaccia SSE non autenticata nel Grafana MCP Server dimostra l’importanza di impostazioni predefinite sicure negli strumenti di sviluppo che collegano gli agenti di IA ai sistemi aziendali.

Sebbene il requisito di accesso alla rete limiti la superficie di attacco, le organizzazioni che distribuiscono server MCP dovrebbero adottare strategie di difesa in profondità e mantenere la consapevolezza dei rischi di esposizione sulla rete, specialmente negli ambienti condivisi.

Riferimenti