Le point de terminaison MCP non authentifié de nginx-ui permet la prise de contrôle à distance de Nginx
Plateforme
go
Composant
github.com/0xjacky/nginx-ui
### Résumé L'intégration MCP (Model Context Protocol) de nginx-ui expose deux points de terminaison HTTP : `/mcp` et `/mcp_message`. Alors que `/mcp` exige à la fois une liste blanche d'adresses IP et une authentification (middleware `AuthRequired()`), le point de terminaison `/mcp_message` applique uniquement la liste blanche d'adresses IP - et la liste blanche d'adresses IP par défaut est vide, ce que le middleware considère comme « tout autoriser ». Cela signifie que tout attaquant réseau peut invoquer tous les outils MCP sans authentification, y compris le redémarrage de nginx, la création/modification/suppression de fichiers de configuration nginx et le déclenchement de rechargements automatiques de la configuration - réalisant ainsi une prise de contrôle complète du service nginx. ### Détails #### Code vulnérable **`mcp/router.go:9-17` - Asymétrie d'authentification entre les points de terminaison** ```go func InitRouter(r *gin.Engine) { r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(), func(c *gin.Context) { mcp.ServeHTTP(c) }) r.Any("/mcp_message", middleware.IPWhiteList(), func(c *gin.Context) { mcp.ServeHTTP(c) }) } ``` Le point de terminaison `/mcp` a `middleware.AuthRequired()`, mais `/mcp_message` ne l'a pas. Les deux points de terminaison sont acheminés vers le même gestionnaire `mcp.ServeHTTP()`, qui traite toutes les invocations d'outils MCP. **`internal/middleware/ip_whitelist.go:11-26` - Emp
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement