Marimo Remote Code Execution Vulnerability
marimo-team — marimo
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.
9.8
97.3%
Vector breakdown
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- High
- Availability
- High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Published
- Apr 9, 2026
- Modified
- Jun 17, 2026
- Added to KEV
- Apr 23, 2026
- Federal patch due
- May 7, 2026
CISA 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.
Weakness classification
Affected packages
Proof-of-concept & exploitation references
8 foundWeaponization
Public repositories whose name or description references CVE-2026-39987, found via a live GitHub search at request time. These are community-sourced signals, not a verified working exploit - cross-check each one before relying on it, and treat higher star counts and recent activity as (weak) corroboration, not proof.
- Th3Purge/CVE-2026-39987★ 9
Marimo Pre Authentication RCE
updated Oct 2, 2026
- M3PH1569/CVE-2026-39987-POC★ 5
CVE-2026-39987 Exploitation Tool - Marimo < 0.23.0 Pre-Auth RCE (WebSocket)
updated Sep 9, 2026
- keraattin/CVE-2026-39987★ 1
CVE-2026-39987: Marimo Python Notebook Pre-Auth RCE (CVSS 9.3). Python & Nmap NSE detection scripts. Missing authentication on /terminal/ws WebSocket endpoint gives attackers a full PTY shell without any credentials. Exploited in the wild within 10 hours of disclosure. Fixed in Marimo 0.23.0.
updated Jul 28, 2026
- Nxploited/CVE-2026-39987★ 1
marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability
updated Oct 1, 2026
- h3raklez/CVE-2026-39987★ 1
Marimo Pre-Auth RCE
updated Jun 1, 2026
- Ghxstsec/CVE-2026-39987★ 1
updated Sep 2, 2026
- rootdirective-sec/CVE-2026-39987-Lab★ 1
updated Aug 5, 2026
- Wind010/CVE-2026-39987_PoC★ 1
A proof-of-concept for CVE-2026-39987
updated Aug 4, 2026
References
Frequently asked questions
What is CVE-2026-39987?
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.
How severe is CVE-2026-39987?
CVE-2026-39987 has a CVSS base score of 9.8 out of 10 (CVSS 3.1).
Is CVE-2026-39987 actively exploited in the wild?
Yes. CVE-2026-39987 is listed in the CISA Known Exploited Vulnerabilities (KEV) catalog, added Apr 23, 2026, meaning CISA has confirmed evidence of active exploitation.
What is the EPSS score for CVE-2026-39987?
97.3% - meaning FIRST.org's EPSS model estimates a 97.3% probability this vulnerability will be exploited in the wild within 30 days (100% percentile among all scored CVEs).
Is there exploit tooling available for CVE-2026-39987?
We found 8 public GitHub repositories referencing CVE-2026-39987, though none matched a known Nuclei template or Metasploit module at last check. Review each one before relying on it - see the proof-of-concept section above.
What type of vulnerability is CVE-2026-39987?
CVE-2026-39987 is classified under CWE-306 (CWE-306: Missing Authentication for Critical Function).
Cross-checked against
Impactr finds and proves whether CVE-2026-39987 - or flaws like it - are actually reachable in your own web apps and APIs, with a reproducible exploit as evidence.
Join the waitlist