marimo Affected by Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass
Affects marimo 0.20.4 and earlier when run in edit mode; notebooks deployed as applications are not affected. Fixed in 0.23.0.
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Listed in CISA KEV
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Actively exploited
- Fix
- Fixed in 0.23.0
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
marimo, a reactive Python notebook, is affected by a flaw that lets an unauthenticated attacker over the network open a full terminal session and run arbitrary system commands on the host without logging in. The impact is complete compromise of the system running the affected notebook server.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original 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.
Timeline
- CVE published
- Added to CISA KEV
CISA has evidence of exploitation in the wild
- Record last updated
- CISA remediation deadline
Due date for US federal agencies to patch
- EPSS reached 10%
FIRST estimates at least a 10% chance of exploitation in the next 30 days
Affected versions
- marimo-team marimo
fixed in 0.23.0
- marimoPyPI
fixed in 0.23.0
References 3
GitHub · marimo-team/marimo
Questions about CVE-2026-39987
What does this mean?
The terminal WebSocket endpoint checks only the running mode and platform support before accepting connections, and it does not require authentication. A single WebSocket connection can give an unauthenticated party a full interactive root shell on the server.Source: github.com, github.com
Am I affected, and how do I check?
marimo 0.20.4 and earlier are affected, but only when the endpoint is reachable, which requires marimo to run in edit mode. Notebooks deployed as applications are not affected. To check, look at the installed marimo version and at how the notebook is launched.Source: github.com, github.com
What should I do about it?
Upgrade marimo to 0.23.0 or later, which is the listed fixed version.Source: github.com, github.com
Is it being exploited?
Yes. CISA added it to its Known Exploited Vulnerabilities catalog on 2026-04-23, which means it has evidence of attacks. No public exploit code is tracked.Source: cisa.gov, cve.now feed data