
استغلال إثبات المفهوم لـ CVE-2026-39987، وهو RCE قبل المصادقة في نقطة نهاية WebSocket /terminal/ws الخاصة بـ Marimo، يمنح صدفة تفاعلية دون بيانات اعتماد.
CVSS 4.0: 9.3 (حرج) · AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H
يؤثر على: marimo <= 0.20.4 · تم إصلاحه: 0.23.0 · CWE-306 (مصادقة مفقودة)
الإشعار الأمني: GHSA-2679-6mx9-h9xc · الإصلاح: marimo-team/marimo@c24d480
نقطة نهاية WebSocket /terminal/ws (marimo/_server/api/endpoints/terminal.py)
تتحقق فقط من وضع الجلسة (EDIT) ودعم المنصة قبل قبول الاتصال واستدعاء
pty.fork(). لا تحمل أي مُزخرف @requires(...) ولا استدعاء validate_auth().
للمقارنة، ما تم قياسه في 0.20.4:
@requires(...) عبر 18 نقطة نهاية./ws (دفتر الملاحظات) -> استدعاءان لـ .validate_auth()terminal.py -> 0 @requires، 0 validate_auth. <-- الخلل.وسيط AuthBackend يحمي HTTP و WebSocket /ws، لكن
/terminal/ws يقبل الاتصال بدون ملف تعريف ارتباط وبدون رمز مميز ويُنشئ
صدفة PTY بصلاحيات عملية marimo.
marimo edit ...)، وهو الوضع الافتراضي للمحرر.pty (Linux/macOS؛ Windows و Pyodide غير متأثرين).مهاجم قادر على الوصول إلى خادم marimo edit عبر الشبكة (شائع في
عمليات النشر البعيدة / الحاويات، وغالبًا ما يعمل بصلاحيات root) يحصل على
صدفة تفاعلية دون مصادقة: سرقة بيانات الاعتماد (cat .env)، حركة جانبية،
نشر برمجيات خبيثة. تم استغلاله في البرية خلال أقل من 10 ساعات من الإفصاح؛ وأُضيف إلى
كتالوج KEV الخاص بـ CISA في 2026-04-23.
pip install "marimo==0.20.4" websockets
marimo edit demo.py --headless --port 2718 --token --token-password SECRET
python exploit.py ws://127.0.0.1:2718 "id; cat /etc/passwd"
يرسل exploit.py بدون رمز مميز، وبدون ملف تعريف ارتباط، وبدون ترويسة Authorization. يرسل
الأمر كنص خام + "\r" (Enter)، تمامًا كما يكتبه المستخدم في الطرفية.
/ws -> 403 (المصادقة تعمل فعلًا)./terminal/ws بدون رمز مميز -> مقبول. تم التنفيذ على الخادم:
uid=1000() gid=1000() ...
Linux ...
وكتب /tmp/cve_2026_39987_proof.txt -> تم تأكيد RCE.قم بالترقية إلى marimo >= 0.23.0. تخفيف مؤقت: لا تعرّض marimo edit
لشبكات غير موثوقة؛ ضع المحرر خلف وسيط موثّق؛ شغّله
بدون صلاحيات مرتفعة / في حاوية بدون أسرار.
لاختبارات الأمان المصرّح بها والاستخدام التعليمي فقط. شغّله فقط ضد أنظمة تملكها أو لديك إذن صريح باختبارها.