
Bypass da lista de bloqueio de variáveis de ambiente do MCP leva a RCE não autenticado no Flowise 3.1.1
CVE 2026-69263 é um bypass de correção da antiga vulnerabilidade de RCE corrigida em agosto de 2025. A correção introduziu uma denylist que bloqueava a instalação de pacotes arbitrários.
Como o npm lê configurações de variáveis de ambiente, definir a variável de ambiente npm_config_yes=true reativa o comportamento bloqueado.
Flowise 3.1.1, versão atual no momento do relato. Corrigido na versão 3.1.3
A seguinte configuração de servidor MCP contorna a correção com CUSTOM_MCP_SECURITY_CHECK=true:
{
"mcpServers": {
"bypass": {
"command": "npx",
"args": ["cowsay"],
"env": {
"npm_config_yes": "true"
}
}
}
}
cowsay é um pacote benigno usado aqui apenas para comprovar a execução. Um atacante real substituiria o payload pelo seu próprio.
Caminho de execução:
validateCommandFlags passa, porque args não contém flags bloqueadas.validateEnvironmentVariables passa, porque npm_config_yes não está na blocklist de quatro itens.npx instala e executa automaticamente o pacote especificado, comprovando que a execução arbitrária é possível com os privilégios do processo do Flowise.Em uma implantação padrão sem autenticação, qualquer usuário não autenticado que consiga acessar a API do Flowise pode acionar isso.
As seguintes variáveis também estão ausentes da blocklist e influenciam a execução por meio dos outros interpretadores permitidos:
| Variável | Comando | Efeito |
|---|---|---|
npm_config_prefix | npx | Redireciona a instalação de pacotes para um caminho controlado pelo atacante |
npm_config_userconfig | npx | Carrega a configuração .npmrc controlada pelo atacante |
NODE_PATH | node | Carrega módulos de um caminho controlado pelo atacante |
PYTHONPATH | python3 | Carrega módulos de um caminho controlado pelo atacante |
PYTHONSTARTUP | python3 | Executa um arquivo na inicialização do interpretador (somente em sessões interativas) |
Esta vulnerabilidade de RCE foi divulgada de forma responsável aos mantenedores do Flowise por meio do repositório deles no GitHub. Você pode encontrar o relatório aqui