
CVE-2026-39987 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Marimo के /terminal/ws WebSocket एंडपॉइंट में प्री-ऑथेंटिकेशन RCE है, जो बिना प्रमाणीकरण के PTY शेल एक्सेस प्रदान करता है।
Marimo <= 0.20.4 /terminal/ws WebSocket एंडपॉइंट में प्री-ऑथेंटिकेशन RCE भेद्यता से प्रभावित है।
एंडपॉइंट एप्लिकेशन मोड और टर्मिनल समर्थन की जांच करता है, लेकिन WebSocket कनेक्शन स्वीकार करने से पहले प्रमाणीकरण को मान्य नहीं करता। यह फिर एक PTY शेल बनाता है, जिससे एक अनप्रमाणित हमलावर Marimo प्रक्रिया के विशेषाधिकारों के साथ कमांड निष्पादित कर सकता है।
अन्य WebSocket एंडपॉइंट्स के विपरीत जो validate_auth() को कॉल करते हैं, कमजोर टर्मिनल एंडपॉइंट कनेक्शन को सीधे स्वीकार करता है:
if app_state.mode != SessionMode.EDIT:
await websocket.close(...)
return
if not supports_terminal():
await websocket.close(...)
return
await websocket.accept()
child_pid, fd = pty.fork()
गायब प्रमाणीकरण जांच PTY तक अनप्रमाणित पहुंच की अनुमति देती है।
<= 0.20.4शामिल CVE-2026-39987.py क्लाइंट इससे कनेक्ट होता है:
/terminal/ws
इंटरैक्टिव मोड:
python3 CVE-2026-39987.py -i
एकल कमांड:
python3 CVE-2026-39987.py "id"
स्क्रिप्ट में DEFAULT_HOST को बदलकर लक्ष्य कॉन्फ़िगर करें।
सफल शोषण Marimo सर्वर उपयोगकर्ता के रूप में एक अनप्रमाणित PTY शेल और मनमाना कमांड निष्पादन प्रदान कर सकता है।