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.
CVE-2026-39987
Score elevated to 9.8 because this CVE is listed on the CISA Known Exploited Vulnerabilities catalog (added 2026-04-23), indicating real-world exploitation has been confirmed by US federal agencies. NVD baseline CVSS 9.8 retained for reference. Confidence: HIGH.
- Actively exploited in the wild (CISA-KEV)
No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.
- CVSS v3
- 9.8
- EG Score
- 9.8(high)
- EG Risk
- 99(Act)EG Risk 99/100SSVC: Act
EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).
How it’s computedSeverity98% × 45%Exploitation100% × 40%Automatability100% × 15%Action: Fix now — active exploitation, automatable, high impact. - EPSS PROB
- 99%
- EPSS %ILE
- 100%
- KEV
- ⚠ Exploited
Published
April 9, 2026
Last Modified
April 23, 2026
Advisory Details (5)
Auto-updated Sep 9, 2026Marimo OSS Python Notebook RCE: From Disclosure to Exploitation in Under 10 Hours | Sysdig
https://www.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hoursKnown Exploited Vulnerabilities Catalog | CISA
Known Exploited Vulnerabilities Catalog | CISA. Listed in CISA Known Exploited Vulnerabilities catalog.
https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-39987Pre-Auth Remote Code Execution via Terminal WebSocket Authentication Bypass · Advisory · marimo-team/marimo · GitHub
https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xcfix: properly authenticate terminal route
Patch available: marimo-team/marimo 0.23.0 (PR #9098 merged 2026-04-08)
https://github.com/marimo-team/marimo/pull/9098commit c24d4806398f (marimo-team/marimo)
Patch available: marimo-team/marimo 0.23.0 (contains commit c24d4806398f)
https://github.com/marimo-team/marimo/commit/c24d4806398f30be6b12acd6c60d1d7c68cfd12aAffected Packages
(1 across 1 ecosystem)
PyPI(1)
| Package | Vulnerable range | Fixed in | Dependents |
|---|---|---|---|
| marimo | 0.0.0 ... 0.9.9 (370 versions) | 0.23.0 | — |
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 7× in last 7d / 31× in last 30d)
Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.
Showing the most recent 100 of 130 total refreshes for this CVE.
- 2026-09-14 19:24 UTCCISA KEV update
- 2026-09-11 18:49 UTCCISA KEV update
- 2026-09-10 19:28 UTCCISA KEV update
- 2026-09-10 10:29 UTCEG score recompute
- 2026-09-10 09:34 UTCEPSS rescore
- 2026-09-09 19:08 UTCCISA KEV update
- 2026-09-08 18:54 UTCCISA KEV update
- 2026-09-06 15:26 UTCEG score recompute
- 2026-09-06 13:47 UTCEPSS rescore
- 2026-09-05 18:46 UTCEG score recompute
- 2026-09-04 17:38 UTCCISA KEV update
- 2026-09-04 05:30 UTCEG score recompute
- 2026-09-04 05:06 UTCEPSS rescore
- 2026-09-02 17:33 UTCCISA KEV update
- 2026-08-31 14:19 UTCCISA KEV update
- 2026-08-30 21:55 UTCEG score recompute
- 2026-08-30 19:17 UTCEPSS rescore
- 2026-08-29 00:19 UTCEG score recompute
- 2026-08-28 21:41 UTCEPSS rescore
- 2026-08-27 17:22 UTCCISA KEV update
- 2026-08-26 17:41 UTCCISA KEV update
- 2026-08-24 18:52 UTCCISA KEV update
- 2026-08-24 16:52 UTCEG score recompute
- 2026-08-24 12:44 UTCEG score recompute
- 2026-08-21 16:49 UTCCISA KEV update
Show 75 moreShow fewer
- 2026-08-20 17:06 UTCCISA KEV update
- 2026-08-19 21:10 UTCEG score recompute
- 2026-08-19 17:33 UTCCISA KEV update
- 2026-08-19 17:03 UTCEPSS rescore
- 2026-08-18 16:58 UTCCISA KEV update
- 2026-08-17 13:56 UTCCISA KEV update
- 2026-08-16 06:21 UTCEG score recompute
- 2026-08-16 02:14 UTCEPSS rescore
- 2026-08-12 15:37 UTCEG score recompute
- 2026-08-12 13:51 UTCEPSS rescore
- 2026-08-11 19:32 UTCCISA KEV update
- 2026-08-07 17:09 UTCCISA KEV update
- 2026-08-05 17:25 UTCCISA KEV update
- 2026-08-04 17:02 UTCCISA KEV update
- 2026-08-03 19:22 UTCCISA KEV update
- 2026-08-02 03:31 UTCEG score recompute
- 2026-08-02 02:27 UTCEPSS rescore
- 2026-07-30 09:19 UTCEG score recompute
- 2026-07-29 19:27 UTCCISA KEV update
- 2026-07-27 19:24 UTCCISA KEV update
- 2026-07-27 17:17 UTCCISA KEV update
- 2026-07-26 14:04 UTCEG score recompute
- 2026-07-26 01:38 UTCEG score recompute
- 2026-07-25 14:18 UTCEPSS rescore
- 2026-07-25 14:18 UTCEPSS rescore
- 2026-07-24 14:17 UTCEPSS rescore
- 2026-07-24 14:17 UTCEPSS rescore
- 2026-07-23 03:10 UTCEG score recompute
- 2026-07-23 00:04 UTCEG score recompute
- 2026-07-22 19:40 UTCCISA KEV update
- 2026-07-21 14:37 UTCCISA KEV update
- 2026-07-17 10:30 UTCEG score recompute
- 2026-07-16 17:04 UTCCISA KEV update
- 2026-07-15 16:49 UTCCISA KEV update
- 2026-07-15 15:04 UTCCISA KEV update
- 2026-07-15 02:00 UTCEPSS rescore
- 2026-07-14 18:05 UTCCISA KEV update
- 2026-07-13 17:07 UTCCISA KEV update
- 2026-07-10 17:52 UTCCISA KEV update
- 2026-07-07 19:01 UTCCISA KEV update
- 2026-07-07 17:16 UTCCISA KEV update
- 2026-07-01 19:16 UTCCISA KEV update
- 2026-07-01 15:06 UTCEPSS rescore
- 2026-06-30 23:22 UTCEPSS rescore
- 2026-06-29 19:12 UTCCISA KEV update
- 2026-06-25 19:15 UTCCISA KEV update
- 2026-06-25 13:49 UTCEPSS rescore
- 2026-06-25 13:49 UTCEPSS rescore
- 2026-06-23 21:33 UTCEPSS rescore
- 2026-06-23 17:44 UTCCISA KEV update
- 2026-06-18 16:13 UTCCISA KEV update
- 2026-06-17 17:53 UTCEPSS rescore
- 2026-06-16 19:33 UTCCISA KEV update
- 2026-06-15 19:33 UTCCISA KEV update
- 2026-06-15 17:49 UTCEPSS rescore
- 2026-06-14 23:18 UTCEPSS rescore
- 2026-06-12 23:12 UTCEPSS rescore
- 2026-06-12 23:12 UTCEPSS rescore
- 2026-06-12 17:35 UTCCISA KEV update
- 2026-06-11 19:10 UTCCISA KEV update
- 2026-06-10 22:18 UTCEPSS rescore
- 2026-06-09 18:42 UTCCISA KEV update
- 2026-06-09 17:12 UTCCISA KEV update
- 2026-06-08 19:16 UTCCISA KEV update
- 2026-06-08 17:26 UTCCISA KEV update
- 2026-06-08 14:17 UTCEPSS rescore
- 2026-06-08 14:17 UTCEPSS rescore
- 2026-06-07 15:25 UTCEPSS rescore
- 2026-06-07 15:25 UTCEPSS rescore
- 2026-06-07 15:25 UTCEPSS rescore
- 2026-06-06 13:47 UTCEPSS rescore
- 2026-06-06 13:47 UTCEPSS rescore
- 2026-06-05 22:47 UTCEPSS rescore
- 2026-06-05 22:47 UTCEPSS rescore
- 2026-06-05 22:43 UTCCISA KEV update
Publicly available exploits
(4 references)Working exploit code is in the public domain (2 GitHub PoCs) (1 Exploit-DB entry). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.
- GitHub PoCTh3Purge/CVE-2026-39987First seen Sep 8, 2026
Marimo Pre Authentication RCE
Open source ↗ - Exploit-DBEDB-52673First seen Sep 2, 2026
Marimo 0.20.4 - RCE
Open source ↗ - GitHub PoCM3PH1569/CVE-2026-39987-POCFirst seen May 24, 2026
CVE-2026-39987 Exploitation Tool - Marimo < 0.23.0 Pre-Auth RCE (WebSocket)
Open source ↗ - Nucleijavascript/cves/2026/CVE-2026-39987.yamlFirst seen Jan 1, 2026
Marimo <= 0.20.4 - Pre-Auth Terminal WebSocket RCE
Open source ↗
Frequently asked(6)
What is CVE-2026-39987?
When was CVE-2026-39987 disclosed?
Is CVE-2026-39987 actively exploited?
What is the CVSS score of CVE-2026-39987?
Which products are affected by CVE-2026-39987?
How do I remediate CVE-2026-39987?
Dependency Blast Radius
See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-39987
Is Your Infrastructure Affected by CVE-2026-39987?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.