Il Grafana MCP Server espone un'interfaccia SSE non autenticata che consente la manipolazione remota delle dashboard
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_KEYdella 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:
- Scarica l’immagine Docker del Grafana MCP Server
- Configura le variabili d’ambiente
GRAFANA_URLeGRAFANA_API_KEYper la propria istanza di Grafana - Abilita il trasporto SSE aggiungendo
-t sseal comando Docker - Espone inconsapevolmente
http://their_ip:8000/ssead aggressori a livello di rete
Sfruttamento da parte dell’aggressore
Un aggressore con accesso alla rete può:
- Individuare l’endpoint esposto all’indirizzo
http://victim_ip:8000/sse - Connettersi utilizzando MCP Inspector:
npx @modelcontextprotocol/inspector sse --port 8000 - Eseguire operazioni non autorizzate utilizzando gli strumenti di Grafana disponibili
- 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.0amplia 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 ssesu 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.