CVE-2026-39987
Description
marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks authentication validation, allowing an unauthenticated attacker to obtain a full PTY shell and execute arbitrary system commands. Unlike other WebSocket endpoints (e.g., /ws) that correctly call validate_auth() for authentication, the /terminal/ws endpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification. This vulnerability is fixed in 0.23.0.
Summary dbcve.org
marimo before 0.23.0 has a pre-authentication RCE vulnerability in the terminal WebSocket endpoint /terminal/ws. This endpoint skips authentication validation (unlike /ws which calls validate_auth()), only checking running mode and platform support, allowing unauthenticated attackers to obtain a full PTY shell and execute arbitrary system commands.
Mitigation
Upgrade to marimo version 0.23.0 or later, which includes the fix for proper authentication validation on the /terminal/ws endpoint.