El Grafana MCP Server expone una interfaz SSE sin autenticación que permite la manipulación remota de paneles
Autor: Evan Harris
Riesgo: Bajo
Componente afectado: Grafana MCP Server
Introducción
Como parte de nuestra investigación continua de seguridad sobre los servidores del Model Context Protocol (MCP), identificamos una brecha de seguridad en el Grafana MCP Server que permite el acceso no autorizado a instancias de Grafana mediante una exposición de red sin autenticación.
Descripción general
El Grafana MCP Server, cuando se inicia con el indicador -t sse, expone una interfaz de Server-Sent Events (SSE) sin autenticación que, de forma predeterminada, se enlaza a 0.0.0.0:8000 cuando se ejecuta con el comando de Docker que figura en el README del MCP Server. Esta configuración permite que atacantes remotos con acceso a la red interactúen con las instancias de Grafana de las víctimas sin autenticación.
Detalles técnicos
El problema
Cuando se configura con el transporte SSE a través de Docker, el servidor:
- Se enlaza a
0.0.0.0:8000, lo que lo hace accesible desde cualquier host de la red - No proporciona ningún mecanismo de autenticación para el endpoint
/sse - Confía en cualquier cliente conectado para ejecutar operaciones privilegiadas de Grafana
- Utiliza la
GRAFANA_API_KEYde la víctima para realizar acciones en su nombre
Configuración vulnerable
Siguiendo el README del proyecto con la incorporación del transporte SSE:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL \
-e GRAFANA_API_KEY \
mcp/grafana -debug -t sse
Esto expone el endpoint en http://victim_ip:8000/sse a toda la red.
Escenario de ataque
Configuración de la víctima
Un usuario que sigue la documentación:
- Descarga la imagen de Docker del Grafana MCP Server
- Configura las variables de entorno
GRAFANA_URLyGRAFANA_API_KEYpara su instancia de Grafana - Habilita el transporte SSE añadiendo
-t sseal comando de Docker - Expone sin saberlo
http://their_ip:8000/ssea atacantes a nivel de red
Explotación por parte del atacante
Un atacante con acceso a la red puede:
- Descubrir el endpoint expuesto en
http://victim_ip:8000/sse - Conectarse mediante MCP Inspector:
npx @modelcontextprotocol/inspector sse --port 8000 - Ejecutar operaciones no autorizadas utilizando las herramientas de Grafana disponibles
- Manipular paneles al listarlos, crearlos, actualizarlos o eliminarlos
Prueba de concepto
Demostración del ataque
Con MCP Inspector, un atacante puede conectarse al endpoint SSE expuesto y ejecutar operaciones de Grafana:
- Listar equipos para comprender la estructura de la organización
- Listar paneles para identificar información sensible de inteligencia de negocio
- Crear paneles para inyectar contenido malicioso
- Actualizar paneles para modificar visualizaciones existentes
- Acceder a las fuentes de datos y a otras funciones privilegiadas de Grafana
Evaluación del impacto
Este vector de ataque permite:
Vulneración de la confidencialidad
- Descubrimiento de fuentes de datos, exponiendo sistemas de backend y configuraciones
- Enumeración de paneles, revelando información sensible de inteligencia de negocio
- Fuga de información de usuarios y equipos a través de la interfaz MCP
Compromiso de la integridad
- Inyección de contenido malicioso, que puede inducir a error a los usuarios
- Alteración de la configuración, que afecta la precisión de las visualizaciones
- Manipulación de paneles mediante creación, modificación o eliminación
Impacto en la disponibilidad
- Interrupción del servicio mediante la eliminación o corrupción de paneles
- Posible denegación de servicio mediante la sobrecarga del sistema
- Agotamiento de recursos por medio de solicitudes excesivas de herramientas
Factores de riesgo
- Requisito de acceso a la red: los atacantes necesitan acceso a la red de la víctima
- Sin autenticación: cualquier cliente puede conectarse y ejecutar operaciones privilegiadas
- Enlace predeterminado de Docker: la exposición a
0.0.0.0aumenta la superficie de ataque - Operación silenciosa: los ataques pueden producirse sin que el usuario lo advierta
Mitigaciones recomendadas
Para los usuarios
- Evite usar
-t sseen redes compartidas o no confiables - Aplique restricciones a nivel de red utilizando cortafuegos o VPN
- Utilice el enlace a localhost modificando el mapeo de puertos de Docker a
127.0.0.1:8000:8000 - Supervise los registros de Grafana en busca de actividad inesperada en la API
Cronología de la divulgación
- 2024-05-22: Vulnerabilidad descubierta y reportada a Grafana a través de Intigriti VDP
- 2024-05-23: Grafana confirma la recepción del informe
- 2024-05-23: El equipo de Grafana marca el informe como “Informative”
- 2024-05-23: Grafana concede permiso para publicar los hallazgos públicamente
- 2025-09-02: Divulgación pública y publicación del aviso de seguridad
Conclusión
La interfaz SSE sin autenticación del Grafana MCP Server demuestra la importancia de contar con configuraciones predeterminadas seguras en las herramientas de desarrollo que conectan a los agentes de IA con los sistemas empresariales.
Si bien el requisito de acceso a la red limita la superficie de ataque, las organizaciones que despliegan servidores MCP deberían implementar estrategias de defensa en profundidad y mantener la conciencia de los riesgos de exposición en la red, especialmente en entornos compartidos.