Le Grafana MCP Server expose une interface SSE non authentifiée permettant la manipulation à distance des tableaux de bord
Auteur : Evan Harris
Risque : Faible
Composant concerné : Grafana MCP Server
Introduction
Dans le cadre de nos recherches continues en sécurité sur les serveurs Model Context Protocol (MCP), nous avons identifié une faille de sécurité dans le Grafana MCP Server qui permet un accès non autorisé aux instances Grafana par le biais d’une exposition réseau non authentifiée.
Vue d’ensemble
Le Grafana MCP Server, lorsqu’il est lancé avec l’option -t sse, expose une interface Server-Sent Events (SSE) non authentifiée qui se lie par défaut à 0.0.0.0:8000 lorsqu’il est exécuté via la commande Docker fournie dans le README du serveur MCP. Cette configuration permet à des attaquants distants disposant d’un accès réseau d’interagir avec les instances Grafana des victimes sans authentification.
Détails techniques
Le problème
Lorsqu’il est configuré avec le transport SSE via Docker, le serveur :
- Se lie à
0.0.0.0:8000, ce qui le rend accessible depuis n’importe quel hôte du réseau - Ne fournit aucun mécanisme d’authentification pour le point de terminaison
/sse - Fait confiance à tout client connecté pour exécuter des opérations Grafana privilégiées
- Utilise la
GRAFANA_API_KEYde la victime pour effectuer des actions en son nom
Configuration vulnérable
En suivant le README du projet avec l’ajout du transport SSE :
docker run --rm -p 8000:8000 \
-e GRAFANA_URL \
-e GRAFANA_API_KEY \
mcp/grafana -debug -t sse
Cela expose le point de terminaison à l’adresse http://victim_ip:8000/sse à l’ensemble du réseau.
Scénario d’attaque
Configuration de la victime
Un utilisateur qui suit la documentation :
- Télécharge l’image Docker du Grafana MCP Server
- Configure les variables d’environnement
GRAFANA_URLetGRAFANA_API_KEYpour son instance Grafana - Active le transport SSE en ajoutant
-t sseà la commande Docker - Expose sans le savoir
http://their_ip:8000/sseà des attaquants au niveau du réseau
Exploitation par l’attaquant
Un attaquant disposant d’un accès réseau peut :
- Découvrir le point de terminaison exposé à l’adresse
http://victim_ip:8000/sse - Se connecter à l’aide de MCP Inspector :
npx @modelcontextprotocol/inspector sse --port 8000 - Exécuter des opérations non autorisées à l’aide des outils Grafana disponibles
- Manipuler les tableaux de bord en les listant, en les créant, en les mettant à jour ou en les supprimant
Preuve de concept
Démonstration de l’attaque
À l’aide de MCP Inspector, un attaquant peut se connecter au point de terminaison SSE exposé et exécuter des opérations Grafana :
- Lister les équipes pour comprendre la structure de l’organisation
- Lister les tableaux de bord pour identifier des données sensibles de business intelligence
- Créer des tableaux de bord pour injecter du contenu malveillant
- Mettre à jour les tableaux de bord pour modifier les visualisations existantes
- Accéder aux sources de données et à d’autres fonctionnalités Grafana privilégiées
Évaluation de l’impact
Ce vecteur d’attaque permet :
Atteinte à la confidentialité
- Découverte des sources de données, exposant les systèmes back-end et les configurations
- Énumération des tableaux de bord, révélant des données sensibles de business intelligence
- Fuite d’informations sur les utilisateurs et les équipes via l’interface MCP
Compromission de l’intégrité
- Injection de contenu malveillant, susceptible d’induire les utilisateurs en erreur
- Altération de la configuration, affectant la précision des visualisations
- Manipulation des tableaux de bord par création, modification ou suppression
Impact sur la disponibilité
- Interruption de service par la suppression ou la corruption de tableaux de bord
- Déni de service potentiel par la surcharge du système
- Épuisement des ressources par des requêtes d’outils excessives
Facteurs de risque
- Exigence d’accès réseau : les attaquants ont besoin d’un accès au réseau de la victime
- Absence d’authentification : tout client peut se connecter et exécuter des opérations privilégiées
- Liaison Docker par défaut : l’exposition à
0.0.0.0augmente la surface d’attaque - Fonctionnement silencieux : les attaques peuvent se produire à l’insu de l’utilisateur
Mesures d’atténuation recommandées
Pour les utilisateurs
- Évitez d’utiliser
-t ssesur des réseaux partagés ou non fiables - Mettez en place des restrictions au niveau du réseau à l’aide de pare-feu ou de VPN
- Utilisez une liaison sur localhost en modifiant le mappage des ports Docker en
127.0.0.1:8000:8000 - Surveillez les journaux de Grafana afin de détecter toute activité inattendue de l’API
Chronologie de la divulgation
- 2024-05-22 : Vulnérabilité découverte et signalée à Grafana via Intigriti VDP
- 2024-05-23 : Grafana accuse réception du signalement
- 2024-05-23 : Le signalement est marqué comme « Informative » par l’équipe de Grafana
- 2024-05-23 : Grafana accorde l’autorisation de publier les conclusions publiquement
- 2025-09-02 : Divulgation publique et publication de l’avis de sécurité
Conclusion
L’interface SSE non authentifiée du Grafana MCP Server illustre l’importance de paramètres par défaut sécurisés dans les outils de développement qui relient les agents d’IA aux systèmes d’entreprise.
Bien que l’exigence d’accès réseau limite la surface d’attaque, les organisations qui déploient des serveurs MCP devraient mettre en œuvre des stratégies de défense en profondeur et rester conscientes des risques d’exposition sur le réseau, en particulier dans les environnements partagés.