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

  1. Descarga la imagen de Docker del Grafana MCP Server
  2. Configura las variables de entorno GRAFANA_URL y GRAFANA_API_KEY para su instancia de Grafana
  3. Habilita el transporte SSE añadiendo -t sse al comando de Docker
  4. Expone sin saberlo http://their_ip:8000/sse a atacantes a nivel de red

Explotación por parte del atacante

Un atacante con acceso a la red puede:

  1. Descubrir el endpoint expuesto en http://victim_ip:8000/sse
  2. Conectarse mediante MCP Inspector: npx @modelcontextprotocol/inspector sse --port 8000
  3. Ejecutar operaciones no autorizadas utilizando las herramientas de Grafana disponibles
  4. 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.0 aumenta 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 sse en 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.

Referencias