Patchfirst
CVE-2026-39987 KEVPublic exploit Critical · 9.8 EPSS 99.6%

Marimo Remote Code Execution Vulnerability

Marimo · Marimo

Summary

The Marimo reactive Python notebook, prior to 0.23.0, has a missing authentication check on its terminal WebSocket endpoint /terminal/ws, which only verifies running mode and platform support before accepting connections. An unauthenticated remote attacker can connect to this endpoint to obtain a full PTY shell and execute arbitrary system commands, requiring no privileges or user interaction.

Official description · NVD

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.

Breakdown
74.8 / 100
Exploited
Yes, in CISA KEV
Reports
0
Tactics
2/15

How an attack unfolds

Based on mappings. Select a step to see the evidence.
  1. How attackers get in

  2. What they do

First seen exploited the day it was disclosed. Public exploit code (PoC-in-GitHub) appeared 3 days after disclosure.

  1. DisclosedFirst seen exploitedVulnCheck KEV evidenceday 0
  2. Public exploit codePoC-in-GitHub+3 days
  3. Added to CISA KEVEU database agrees+14 days

CISA KEV listing is when exploitation was confirmed, not necessarily the first attack.

2 fixes in marimo over 10 weeks. The latest fix listed for marimo is 0.23.9.

Fixes in marimoPyPI package, by fixed version. Earlier and later fixes in the same package, not necessarily the same bug.

  1. 0.23.0CVE-2026-399879 Apr 2026KEV
  2. 0.23.9CVE-2026-5438617 Jun 2026Latest listed

techniques

2 , grouped by in kill-chain order, 2 cited passages 2

Initial AccessTA0001

Exploit Public-Facing Application T1190 Medium
AI mapping from the description · how it is exploited

Unauthenticated network exploitation of public-facing endpoint

The terminal WebSocket endpoint /terminal/ws lacks authentication validation
From the official description (NVD) Original (opens in a new tab) ↗

ExecutionTA0002

Command and Scripting Interpreter T1059 Medium
AI mapping from the description · primary impact

Full PTY shell enables arbitrary command execution

allowing an unauthenticated attacker to obtain a full PTY shell and execute arbitrary system commands
From the official description (NVD) Original (opens in a new tab) ↗

Detection

0 rules for this CVE · 244 general rules for its techniques

Rules for this CVE

0 that reference CVE-2026-39987 directly.

CVE-specific rules are not available in this build. Search SigmaHQ ↗

Sigma rules © SigmaHQ, Detection Rule License 1.1; linked, not reproduced.

Am I affected? What do I upgrade to?

From GitHub Security Advisories and OSV

1 package in 1 ecosystem. Main package: marimo.

Upgrade to 0.23.0 or later

pippip install "marimo>=0.23.0"

The first fix for CVE-2026-39987. No other CVE tracked by Patchfirst affects this package.

Affected versions

If you runUpgrade to
All versions before 0.23.00.23.0

“Up to” means the second version is the fix and is not affected.

Check your lockfile against all CVEs

What security researchers reported

Not named in any threat report yet

Also mentioned in 50 community threat pulses (AlienVault OTX)

Weaker evidence

Pulses are indicator collections that anyone can publish. A mention is not confirmation of exploitation.

References

5 links, grouped by NVD tag
↑ ↓ chooseEnter openEsc close