ZeroHour
The Hacker Newspublished ()ingested @TheHackersNews

Marimo Notebook Flaw Could Run MCP Commands Before Cells Execute in Edit Mode

AI summary · glm-5.3-flash

Marimo notebook flaw CVE-2026-75149 (CVSS 8.7) allows attacker-supplied MCP commands to run as local subprocesses before any cell executes in edit mode.

Marimo addressed CVE-2026-75149, a high-severity code injection flaw allowing attacker-supplied Model Context Protocol (MCP) commands to execute as local subprocesses when a crafted notebook is opened in edit mode, before any cell runs. The issue affects versions prior to 0.23.15, carries CVSS v4 of 8.7 and CVSS v3.1 of 8.8, and requires user interaction but no authentication. Marimo fixed it in version 0.23.15 (released July 23, 2026) via a PEP 723 hardening patch that treats notebook metadata as attacker-controlled and strips ai, mcp, completion, secrets, and server configuration sections. VulnCheck's CNA also disclosed CVE-2026-67618 (CVSS 7.1), involving an attacker-controlled AI base_url that exfiltrates operator API keys, and earlier CVE-2023-39987, a missing auth on /terminal/ws endpoint allowing full PTY shell access.

  • CVE-2026-75149 allows attacker MCP commands to execute before any notebook cell runs
  • Fixed in Marimo 0.23.15 via PEP 723 hardening patch stripping notebook metadata sections
  • CVSS v4 8.7 / v3.1 8.8; user interaction required, no auth needed
  • Related CVE-2026-67618 (CVSS 7.1) leaks API keys via attacker-controlled AI base_url
  • Discovered by Gregory Tan (Grg0rry); current PyPI release is 0.24.0
OrganizationsOSVPyPI

Vulnerabilities mentionedAll →

CVEVulnerabilityCVSSEPSSFlagsAffectedExposurePublished
CVE-2026-39987
Unauthenticated Remote Code Execution in Marimo Python Notebook

Marimo, a reactive Python notebook, contains an unauthenticated remote code execution flaw (CVE-2026-39987, CWE-306; CVSS 4.0: 9.3 Critical) because its terminal WebSocket endpoint /terminal/ws skips authentication entirely. Unlike other WebSocket endpoints such as /ws, which call validate_auth(), /terminal/ws only checks the running mode and platform support before accepting connections, so any unauthenticated attacker who can reach the server can obtain a full PTY shell and execute arbitrary system commands on the host. All marimo deployments running versions prior to 0.23.0 are affected, with internet-exposed instances at greatest risk. Exploitation is confirmed in the wild: the flaw was added to CISA's KEV catalog on 2026-04-23, public PoCs exist, and reporting shows it was exploited within roughly 10 hours of disclosure, with observed post-exploitation activity involving LLM agents. EPSS assigns a 98.9% probability of exploitation within 30 days (100th percentile).

Do: Upgrade marimo to 0.23.0 or later; until patched, restrict access to the /terminal/ws WebSocket endpoint by binding the notebook to localhost, a VPN, or an authenticating reverse proxy. Identify whether any marimo instances are internet-exposed and review logs for connections to /terminal/ws and unexpected shell or process spawns, given reports of LLM-agent-driven post-exploitation on compromised instances. As a KEV entry (added 2026-04-23), this requires federal agencies to apply the vendor fix or mitigations per BOD 22-01 timelines.

9.399% KEV PoC ×4
  • Marimo (reactive Python notebook) all versions prior to 0.23.0
  • CoreWeave marimo all versions prior to 0.23.0
moderatelikely tens of thousands of users, with directly internet-exposed marimo servers plausibly in the low thousands
CVE-2026-67618
marimo before 0.23.15 contains a configuration injection vulnerability that allows notebook authors to exfiltrate operator API keys by embedding a malicious bas

marimo before 0.23.15 contains a configuration injection vulnerability that allows notebook authors to exfiltrate operator API keys by embedding a malicious base_url in PEP-723 inline script metadata, which is merged into session configuration with higher precedence than the operator's own settings due to insufficient sanitization in sanitize_pyproject_dict. When an operator opens the crafted notebook and makes an AI request, marimo resolves the attacker-controlled base_url from the notebook config while falling back to the operator's OPENAI_API_KEY environment variable for authentication, transmitting the API key to the attacker-controlled endpoint without requiring any cell execution.

NVD description · AI analysis pending
7.1<1%
CVE-2026-75149
Code Injection in marimo Notebooks Executes Commands via Crafted MCP Server Entries

marimo before 0.23.15 contains a code injection vulnerability (CWE-94) in its notebook configuration handler. An attacker crafts a notebook whose embedded configuration includes an MCP server entry with an attacker-controlled command value; when a victim opens that notebook in edit mode, marimo launches the specified command as a local subprocess before any notebook cell runs, requiring no authentication and no cell execution. Successful exploitation gives the attacker arbitrary command execution on the victim's machine with the privileges of the marimo process, reflected in the high CVSS 4.0 score of 8.7 (network vector, user interaction required to open the notebook). Anyone running an affected marimo version who opens shared or untrusted notebook files in edit mode is affected. No public proof-of-concept, KEV listing, or known in-the-wild exploitation is currently reported, and EPSS estimates a 0.6% probability of exploitation in the next 30 days.

Do: Upgrade marimo to 0.23.15 or later. Until patched, avoid opening notebooks from untrusted sources in edit mode (prefer read/preview mode), and inspect the notebook configuration—especially MCP server entries and their command fields—in shared notebooks before opening them.

8.7<1%
  • marimo (open-source project) marimo before 0.23.15 (fixed in 0.23.15)
moderate≈ tens of thousands of users/installs (open-source Python notebook tool with modest adoption; only users opening untrusted notebooks in edit mode are exposed)
Full article475 words · extracted from thehackernews.com · click to collapse

Swati KhandelwalAug 25, 2026Vulnerability / AI Security

Marimo has addressed a high-severity security flaw in its notebook software that allowed an attacker to execute an attacker-supplied Model Context Protocol (MCP) command in a specially crafted notebook, according to VulnCheck's CVE Numbering Authority (CNA) record.

The CNA record says the command can run as a local subprocess when the notebook is opened in edit mode.

The vulnerability, tracked as CVE-2026-75149, is a code injection issue affecting versions prior to 0.23.15. VulnCheck's CVE Numbering Authority (CNA) record assigns it a CVSS v4 score of 8.7 and a CVSS v3.1 score of 8.8, with user interaction required and no attacker authentication required.

Marimo has addressed the issue in version 0.23.15. The CVE was published on August 19. Users running an affected release should move to a version outside the affected range.

According to OSV's CVE import, a crafted notebook can supply an attacker-controlled MCP server command through notebook configuration.

The victim opens the notebook in edit mode. The CNA record says the specified command is launched as a local subprocess before any notebook cell is executed.

Marimo's PEP 723 hardening patch treats notebook metadata as attacker-controlled and passes notebook-supplied configuration through an allowlist.

The following notebook-supplied configuration sections are removed -

  • ai
  • mcp
  • completion
  • secrets
  • server

The patch's MCP regression case uses an attacker-controlled URL and verifies that the mcp section is removed. The CNA record supplies the separate command-to-subprocess behavior described for CVE-2026-75149.

The Hacker News confirmed on August 25 that the current PyPI release is version 0.24.0, released August 17. Marimo's version 0.23.15 release was published on July 23, 2026. Marimo's security policy says security patches are provided for the latest stable release and encourages users to stay current.

The CVE record credits Gregory Tan, who uses the handle Grg0rry, with discovering the flaw. The same handle also appears as a co-author on Marimo's PEP 723 hardening commit.

The same configuration boundary was addressed in VulnCheck's separate CVE-2026-67618 advisory (CVSS score: 7.1), disclosed on August 4, 2026. That flaw affects Marimo versions before 0.23.15 and involves an attacker-controlled artificial intelligence (AI) base_url supplied through notebook metadata.

For CVE-2026-67618, an operator opens the malicious notebook. The operator later makes an AI request. The configured endpoint then receives the operator's API key without requiring a notebook cell to be executed.

CVE-2026-75149 is separate from the earlier CVE-2026-39987 flaw in Marimo. Marimo's advisory for that vulnerability states that versions 0.20.4 and earlier were affected by a missing authentication validation on the /terminal/ws endpoint.

Requests reaching that endpoint could obtain a full pseudo-terminal (PTY) shell. The shell could then execute arbitrary commands. Marimo lists version 0.23.0 as the patched version for the earlier flaw.

Found this article interesting? Follow us on Google News, Twitter and LinkedIn to read more exclusive content we post.

Text extracted automatically; images, tables and formatting may be missing. Original: https://thehackernews.com/2026/08/marimo-notebook-flaw-could-run-mcp.html