
CVE-2026-39987 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Marimo के /terminal/ws WebSocket एंडपॉइंट में एक प्री-ऑथेंटिकेशन RCE है और बिना क्रेडेंशियल्स के इंटरैक्टिव शेल प्रदान करता है।
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)
कनेक्शन स्वीकार करने और pty.fork() को कॉल करने से पहले केवल सत्र मोड (EDIT) और
प्लेटफ़ॉर्म समर्थन की जाँच करता है। इसमें न तो @requires(...) डेकोरेटर है और न ही
validate_auth() कॉल।
0.20.4 में मापा गया अंतर:
@requires(...) के 73 उपयोग।/ws (नोटबुक) -> के 2 कॉल।validate_auth()terminal.py -> 0 @requires, 0 validate_auth। <-- यही दोष है।AuthBackend मिडलवेयर HTTP और /ws वेबसॉकेट की सुरक्षा करता है, लेकिन
/terminal/ws बिना कुकी और बिना टोकन के कनेक्शन स्वीकार करता है और marimo प्रोसेस
के विशेषाधिकारों के साथ एक PTY शेल फोर्क करता है।
marimo edit ...), जो एडिटर का डिफ़ॉल्ट मोड है।pty समर्थन वाला प्लेटफ़ॉर्म (Linux/macOS; Windows और Pyodide प्रभावित नहीं हैं)।एक हमलावर जो नेटवर्क पर marimo edit सर्वर तक पहुँच सकता है (रिमोट / कंटेनर
डिप्लॉयमेंट में आम, अक्सर root के रूप में चल रहा होता है), बिना ऑथेंटिकेट किए एक
इंटरैक्टिव शेल प्राप्त कर लेता है: क्रेडेंशियल चोरी (cat .env), लेटरल मूवमेंट,
मैलवेयर डिप्लॉयमेंट। डिस्क्लोज़र के 10 घंटे से कम समय में जंगल में शोषण किया गया;
2026-04-23 को CISA की KEV सूची में जोड़ा गया।
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 को अविश्वसनीय
नेटवर्क पर उजागर न करें; एडिटर को एक ऑथेंटिकेटेड प्रॉक्सी के पीछे रखें; इसे
बिना विशेषाधिकारों के / बिना सीक्रेट वाले कंटेनर में चलाएँ।
केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उपयोग के लिए। इसे केवल उन सिस्टमों के विरुद्ध चलाएँ जिनके आप स्वामी हैं या जिनका परीक्षण करने की आपके पास स्पष्ट अनुमति है।