Contexte
nginx-ui est une interface graphique web open source permettant de gérer la configuration d'un serveur Nginx. Une vulnérabilité critique a été découverte dans son intégration MCP (Model Context Protocol), permettant à tout attaquant de contourner l'authentification et de prendre le contrôle total du serveur.
Selon les données Shodan, environ 2 689 instances sont actuellement exposées sur internet.
Mécanisme d'attaque
nginx-ui expose deux endpoints HTTP dans son intégration MCP :
/mcp— protégé par liste blanche d'IP et authentification/mcp_message— protégé uniquement par liste blanche d'IP, vide par défaut, donc accessible depuis n'importe quelle adresse
L'endpoint /mcp_message gère l'écriture et le rechargement des fichiers de configuration Nginx, mais le middleware d'authentification y est absent. Un attaquant peut ainsi invoquer des actions privilégiées sans aucun identifiant, en deux requêtes HTTP suffisent pour prendre le contrôle complet du serveur.
Impact
Un attaquant exploitant cette vulnérabilité peut :
- Modifier la configuration Nginx pour intercepter ou rediriger tout le trafic entrant
- Voler les credentials d'administration en manipulant les logs du serveur
- Maintenir un accès persistant en dérobant des tokens et des secrets
- Cartographier l'infrastructure en lisant les fichiers de configuration
- Couper les services en injectant une configuration invalide
Versions concernées
Toutes les versions de nginx-ui antérieures à la version 2.3.4.
Remédiation
Mettre à jour nginx-ui vers la version 2.3.4 dès que possible. Cette version ajoute le middleware d'authentification manquant sur l'endpoint /mcp_message.
En attendant la mise à jour, vérifiez si votre instance est exposée :
# Tester si l'endpoint est accessible sans authentification
curl -s -o /dev/null -w "%{http_code}" http://VOTRE_IP:PORT/mcp_message
# Une réponse 200 indique que votre instance est vulnérable et exposée
Recommandations
- Ne jamais exposer nginx-ui directement sur internet — restreignez l'accès via VPN ou réseau privé
- Appliquez une liste blanche d'IP explicite sur toutes les interfaces d'administration
- Surveillez les logs pour détecter tout accès inhabituel aux endpoints
/mcpet/mcp_message - Auditez vos interfaces d'administration web — ce type de faille (middleware manquant sur un seul endpoint) est fréquent dans les outils open source peu audités