
Обход блок-списка переменных окружения MCP приводит к неаутентифицированному удалённому выполнению кода (RCE) в Flowise 3.1.1
CVE 2026-69263 — это обход патча старой RCE-уязвимости, исправленной ещё в августе 2025 года. Патч ввёл Denylist — список запрещённых элементов, блокирующий установку произвольных пакетов.
Поскольку npm считывает конфигурацию из переменных окружения, установка переменной окружения npm_config_yes=true возвращает заблокированное поведение обратно.
Flowise 3.1.1, актуальная версия на момент сообщения. Исправлено в 3.1.3
Следующая конфигурация MCP-сервера обходит патч с CUSTOM_MCP_SECURITY_CHECK=true:
{
"mcpServers": {
"bypass": {
"command": "npx",
"args": ["cowsay"],
"env": {
"npm_config_yes": "true"
}
}
}
}
cowsay — это безвредный пакет, используемый здесь только для доказательства выполнения. Настоящий злоумышленник подставил бы собственную нагрузку.
Путь выполнения:
validateCommandFlags проходит, поскольку args не содержит заблокированных флагов.validateEnvironmentVariables проходит, поскольку npm_config_yes отсутствует в списке блокировки из четырёх пунктов.npx автоматически устанавливает и выполняет указанный пакет, что доказывает возможность произвольного выполнения с привилегиями процесса Flowise.При развёртывании по умолчанию без аутентификации любой неаутентифицированный пользователь, имеющий доступ к API Flowise, может вызвать это.
Следующие переменные также отсутствуют в списке блокировки и влияют на выполнение через другие разрешённые интерпретаторы:
| Переменная | Команда | Эффект |
|---|---|---|
npm_config_prefix | npx | Перенаправляет установку пакетов в контролируемый злоумышленником путь |
npm_config_userconfig | npx | Загружает контролируемую злоумышленником конфигурацию .npmrc |
NODE_PATH | node | Загружает модули из контролируемого злоумышленником пути |
PYTHONPATH | python3 | Загружает модули из контролируемого злоумышленником пути |
PYTHONSTARTUP | python3 | Выполняет файл при запуске интерпретатора (только для интерактивных сеансов) |
Эта RCE-уязвимость была ответственно раскрыта мейнтейнерам Flowise через их репозиторий на GitHub. Вы можете найти отчёт здесь