CVE-2026-39987 Marimo Remote Code Execution
Unauthenticated attackers can execute arbitrary system commands via an unsecured terminal WebSocket endpoint in marimo notebooks.
- Exploited in the wild
- Since 23 Apr 2026
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-39987?
CVE-2026-39987 is a critical authentication bypass vulnerability in marimo-team marimo, published on 9 Apr 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official 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.
Weakness: CWE-306
Which versions are affected by CVE-2026-39987?
3 open source packages ship an affected version, including marimo. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
marimo PyPI | All versions | 0.23.0 |
marimo PyPI | All versions | 0.23.0 |
marimo PyPI | All versions | 0.23.0 |
Products include Coreweave Marimo.
How do I fix CVE-2026-39987?
Upgrade marimo to 0.23.0 or later. US federal agencies must fix it by 7 May 2026.
Upgrade, and rotate credentials and sessions that may have been exposed. More about Authentication bypass.
Is CVE-2026-39987 being exploited?
Yes. Attackers have exploited CVE-2026-39987 in the wild since at least 23 Apr 2026.
Public exploit code: 1 Exploit-DB entry, 1 Nuclei template and 29 proofs of concept on GitHub.
Sources
Also known as GHSA-2679-6mx9-h9xc, PYSEC-2026-407.