
La evasión de la lista de bloqueo de variables de entorno de MCP provoca una RCE no autenticada en Flowise 3.1.1
CVE 2026-69263 es un bypass del parche de la antigua vulnerabilidad RCE parcheada en agosto de 2025. El parche introdujo una denylist que bloqueaba la instalación de paquetes arbitrarios.
Dado que npm lee la configuración de las variables de entorno, establecer la variable de entorno npm_config_yes=true reactiva el comportamiento bloqueado.
Flowise 3.1.1, la versión actual en el momento del informe. Corregido en 3.1.3
La siguiente configuración del servidor MCP evade el parche con CUSTOM_MCP_SECURITY_CHECK=true:
{
"mcpServers": {
"bypass": {
"command": "npx",
"args": ["cowsay"],
"env": {
"npm_config_yes": "true"
}
}
}
}
cowsay es un paquete benigno que se usa aquí únicamente para demostrar la ejecución. Un atacante real sustituiría su propio payload.
Ruta de ejecución:
validateCommandFlags pasa, porque args no contiene flags bloqueados.validateEnvironmentVariables pasa, porque npm_config_yes no está en la lista de bloqueo de cuatro elementos.npx instala y ejecuta automáticamente el paquete especificado, demostrando que la ejecución arbitraria es posible con los privilegios del proceso de Flowise.En un despliegue por defecto sin autenticación, cualquier usuario no autenticado que pueda alcanzar la API de Flowise puede desencadenar esto.
Las siguientes variables tampoco están en la lista de bloqueo e influyen en la ejecución a través de los otros intérpretes permitidos:
| Variable | Command | Effect |
|---|---|---|
npm_config_prefix | npx | Redirige la instalación del paquete a una ruta controlada por el atacante |
npm_config_userconfig | npx | Carga la configuración .npmrc controlada por el atacante |
NODE_PATH | node | Carga módulos desde una ruta controlada por el atacante |
PYTHONPATH | python3 | Carga módulos desde una ruta controlada por el atacante |
PYTHONSTARTUP | python3 | Ejecuta un archivo al iniciar el intérprete (solo sesiones interactivas) |
Esta vulnerabilidad RCE fue divulgada de forma responsable a los mantenedores de Flowise a través de su repositorio de GitHub. Puede encontrar el informe aquí