Skip to main content
10 Hours: The Marimo RCE Exploit TimelineIncident
4 min readFor Security Engineers

10 Hours: The Marimo RCE Exploit Timeline

What Happened

A remote code execution vulnerability in Marimo, an open-source Python notebook platform, was exploited within 10 hours of public disclosure. The flaw, tracked as CVE-2026-39987, affects Marimo versions 0.20.4 and earlier. It allows attackers to execute arbitrary code on vulnerable systems without authentication. Sysdig's threat intelligence team reported that attackers targeted exposed instances, primarily for credential theft.

The vulnerability requires no authentication, only network access to a vulnerable Marimo instance.

Timeline

T+0 hours: CVE-2026-39987 publicly disclosed
T+10 hours: First exploitation attempts observed by Sysdig
T+[unknown]: Marimo releases version 0.23.0 with patch
T+[ongoing]: Active scanning and exploitation continue

This timeline highlights a critical gap in most organizations' vulnerability management processes. If your patch cycle operates weekly or monthly, you're already at risk.

Which Controls Failed or Were Missing

Unauthenticated Access to Sensitive Functionality

The vulnerability exists because Marimo allowed code execution through endpoints without authentication. This is a fundamental failure in access control. Every endpoint performing privileged operations must enforce authentication and authorization checks.

No Network Segmentation

Organizations with Marimo instances exposed to the internet worsened the vulnerability. Development and testing tools should be behind network boundaries that restrict access to authorized users.

Delayed Patch Deployment

The 10-hour exploitation window assumes immediate awareness of the vulnerability. Most organizations lack real-time vulnerability intelligence and discover issues days or weeks later through regular scanning.

Missing Runtime Protection

Organizations without runtime application self-protection (RASP) or similar controls couldn't detect or block exploitation attempts in real-time, even if they couldn't patch immediately.

What the Relevant Standards Require

OWASP ASVS v4.0.3

Requirement 4.1.1: "Verify that the application enforces access control rules on a trusted service layer."

The Marimo vulnerability directly violates this requirement. Code execution capabilities must be protected by authentication and authorization controls.

Requirement 14.2.1: "Verify that all components are up to date, preferably using a dependency checker during build or compile time."

This requirement includes the runtime platform. Your dependency scanning must track frameworks and tools, not just imported libraries.

NIST 800-53 Rev 5

SI-2: Flaw Remediation: "Organizations identify, report, and correct system flaws...install security-relevant software and firmware updates within [organization-defined time period] of release."

Your time period must account for active exploitation timelines, not just change management comfort.

CM-7: Least Functionality: "Configure systems to provide only essential capabilities."

Running a development notebook platform on internet-accessible infrastructure violates this control. Marimo should not be publicly exposed.

ISO/IEC 27001:2022

Control 8.8: Management of technical vulnerabilities: "Information about technical vulnerabilities of information systems in use shall be obtained, the organization's exposure to such vulnerabilities shall be evaluated and appropriate measures shall be taken."

The control's effectiveness depends on your definition of "appropriate measures" and your response timeline. If your process can't respond within hours of a critical disclosure, you need additional controls.

Lessons and Action Items for Your Team

Implement Real-Time Vulnerability Intelligence

Subscribe to security advisories for every open-source component in your environment, including:

  • GitHub Security Advisories for dependencies
  • Vendor-specific security mailing lists
  • CISA Known Exploited Vulnerabilities catalog
  • Commercial threat intelligence feeds if budget allows

Configure alerts to notify your security team immediately.

Build an Emergency Patch Process

Document criteria for emergency patching:

  • Unauthenticated remote code execution
  • Authenticated RCE when the service is internet-accessible
  • Active exploitation confirmed by threat intelligence
  • CISA KEV catalog addition

Define who can authorize emergency patches, required testing, and communication methods.

Segment Development Tools

Platforms like Marimo should not be directly accessible from the internet. Use:

  • VPN or zero-trust network access controls
  • Internal network segments with firewall rules
  • Authentication proxies enforcing SSO

For external collaboration, establish a controlled export process.

Deploy Runtime Monitoring

Even with an emergency process, patching takes time. Runtime monitoring provides visibility into exploitation attempts.

For Python applications:

  • Enable audit logging for subprocess execution
  • Monitor unexpected network connections
  • Alert on unauthorized file system access
  • Track authentication failures and unauthorized access

Inventory Your Development Tools

List every development platform, IDE, notebook environment, and build tool:

  • Product name and version
  • Network accessibility
  • Authentication mechanism
  • Data classification of accessible resources
  • Owner and purpose

Update this inventory with the same rigor as production services.

Test Your Response Time

Conduct a tabletop exercise: A critical vulnerability in your development tools is disclosed at 9 AM. Walk through each step from notification to patched systems. Time each phase:

  • How long until your security team knows?
  • How long to identify affected systems?
  • How long to test and deploy the patch?

If the total exceeds your risk tolerance, identify areas for improvement. The Marimo incident shows attackers measure in hours. Your response must match that reality.

CISA Known Exploited Vulnerabilities

Topics:Incident

You Might Also Like