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.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| marimo-team | marimo | < 0.23.0 | — |
Public exploits
Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.
Exploit-DB 1
- Marimo 0.20.4 - RCE EDB-52673 · webapps · Sep 2, 2026
GitHub 31 repositories · most starred shown
-
Th3Purge/CVE-2026-39987 ★ 9 · Sep 8, 2026
Marimo Pre Authentication RCE
-
M3PH1569/CVE-2026-39987-POC ★ 5 · May 24, 2026
CVE-2026-39987 Exploitation Tool - Marimo < 0.23.0 Pre-Auth RCE (WebSocket)
-
1nt1m4cy/HTB-Cohort ★ 2 · Nov 4, 2026
HTB Cohort writeup -- SSRF, Marimo CVE-2026-39987, PackageKit CVE-2026-41651
-
LaRemontada12/CVE-2026-39987-Marimo-RCE-SOC-Detection ★ 1 · Sep 27, 2026
Security research and SOC investigation of CVE-2026-39987 using Docker, Nginx, Linux process monitoring, Splunk SIEM, and SPL detection rules.
-
Ghxstsec/CVE-2026-39987 ★ 1 · Sep 1, 2026
PoC for CVE-2026-39987 — pre-auth RCE in Marimo via unauthenticated /terminal/ws WebSocket
-
Wind010/CVE-2026-39987_PoC ★ 1 · Aug 3, 2026
A proof-of-concept for CVE-2026-39987
-
rootdirective-sec/CVE-2026-39987-Lab ★ 1 · May 4, 2026
-
h3raklez/CVE-2026-39987 ★ 1 · Apr 25, 2026
Marimo Pre-Auth RCE
-
Nxploited/CVE-2026-39987 ★ 1 · Apr 18, 2026
marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability
-
keraattin/CVE-2026-39987 ★ 1 · Apr 15, 2026
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…
Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.
Automated scanner template
A ready-made Nuclei template detects this vulnerability automatically. Vulnerabilities with public scanner templates are typically probed across the internet soon after the template appears — exposed systems should be patched first.
- Marimo <= 0.20.4 - Pre-Auth Terminal WebSocket RCE javascript/cves/2026/CVE-2026-39987.yaml
Source: projectdiscovery/nuclei-templates (MIT) — updated daily. Only links are listed.
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| PyPI | marimo | < 0.23.0 | 0.23.0 | GHSA-2679-6mx9-h9xc |