Vulnerability record · CVE-2026-39987 · published 9 April 2026
CVE-2026-39987: Marimo terminal WebSocket endpoint missing authentication allows pre-auth RCE
Coreweave · Marimo
Marimo, a reactive Python notebook, exposes a terminal WebSocket endpoint (/terminal/ws) that skips the validate_auth() check applied to other WebSocket endpoints, accepting connections based only on running mode and platform support. An unauthenticated attacker can therefore obtain a full PTY shell and run arbitrary system commands. The flaw is fixed in 0.23.0 and is listed in CISA KEV with a very high EPSS score, so it warrants urgent action.
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.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:
Automated analysis
critical priorityUnauthenticated network-reachable remote code execution with a CVSS 4.0 score of 9.3, CISA KEV listing and near-certain EPSS probability makes this an urgent patch-first issue.
What it is
Marimo, a reactive Python notebook, exposes a terminal WebSocket endpoint (/terminal/ws) that skips the validate_auth() check applied to other WebSocket endpoints, accepting connections based only on running mode and platform support. An unauthenticated attacker can therefore obtain a full PTY shell and run arbitrary system commands. The flaw is fixed in 0.23.0 and is listed in CISA KEV with a very high EPSS score, so it warrants urgent action.
Impact
An attacker gains a full interactive PTY shell on the host running Marimo and can execute arbitrary system commands with the privileges of the Marimo process. This is complete loss of confidentiality, integrity and availability for the affected instance.
Attack surface
Reachable over the network via the /terminal/ws WebSocket endpoint; no authentication is required and no user interaction is needed, as the endpoint omits the validate_auth() call used elsewhere. Any network-exposed Marimo instance prior to 0.23.0 is a candidate target.
Exploitation
CVE-2026-39987 is in CISA KEV (added 2026-04-23, due 2026-05-07) and has an EPSS 30-day probability of 0.98945 (99.9th percentile). References are tagged Exploit, including a vendor advisory and a third-party write-up describing exploitation within 10 hours of disclosure, so active exploitation should be assumed.
What to do
- Upgrade Marimo to 0.23.0 or later, which fixes the missing authentication check (patch commit c24d4806398f30be6b12acd6c60d1d7c68cfd12a).
- If immediate patching is not possible, remove network exposure of the Marimo instance (bind to localhost, restrict access via firewall or reverse proxy) and follow CISA KEV required action per BOD 22-01.
- Disable or block the /terminal/ws endpoint at the reverse proxy or load balancer until the upgrade is applied.
- Audit any internet-facing Marimo deployments for unauthorized access and rotate credentials or secrets reachable from the host.
- Track the CISA KEV due date of 2026-05-07 and confirm remediation before it lapses.
Detection
- Monitor WebSocket upgrade requests to /terminal/ws in reverse proxy or application logs, especially from unauthenticated or unexpected source IPs.
- Alert on shell or PTY process creation spawned by the Marimo process (e.g., unexpected /bin/sh, bash or python child processes).
- Hunt for outbound connections or command execution originating from Marimo hosts that do not match normal notebook activity.
- Review Marimo access logs for connections to /terminal/ws that bypass normal authentication flows.
This assessment is produced automatically and is not human-reviewed. Verify against the vendor advisory before acting on it.
Exploitation in the wild
CISA added CVE-2026-39987 to the Known Exploited Vulnerabilities catalog on 23 April 2026 as "Marimo Remote Code Execution Vulnerability". Required action: Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable. Federal deadline 7 May 2026.
Affected products
1 vulnerable configurations from NVD's CPE data, grouped by vendor and product.
References
| Link | Tags |
|---|---|
| https://github.com/marimo-team/marimo/commit/c24d4806398f30be6b12acd6c60d1d7c68cfd12a | Patch |
| https://github.com/marimo-team/marimo/pull/9098 | Issue TrackingPatch |
| https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc | ExploitMitigationVendor Advisory |
| https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-39987 | US Government Resource |
| https://www.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hours | ExploitThird Party Advisory |
Track CVE-2026-39987 inside VULONE
Watch it alongside the ransomware crews, C2 infrastructure and forum chatter that reference it, query it through the API and pull it into your SIEM over TAXII.
Related vulnerabilities
Same products first, then exploited flaws of the same weakness class.
Source: NIST National Vulnerability Database (record CVE-2026-39987), CISA KEV, FIRST EPSS (scores of 2026-09-26). This page is refreshed as NVD updates the record.