Marimo CVE-2026-39987 Exploited in the Wild

9 hours and 41 minutes. That's how long it took from CVE disclosure to active exploitation in the wild. CVE-2026-39987 hit Marimo — the Python notebook with 18K GitHub stars and 1M+ monthly downloads — with a 9.3 CVSS pre-auth RCE. The bug is embarrassingly simple. Every endpoint in Marimo calls validate_auth(). Every endpoint except /terminal/ws. That WebSocket just checks your OS platform and hands you a full PTY shell. No token. No session. Nothing. One WebSocket connection = root access to the host. Sysdig's honeypots caught the first exploit attempts before most teams even read the advisory. Complete credential theft took under 3 minutes from initial connection. What makes this worse: versions through 0.20.4 are all vulnerable. The fix isn't in 0.20.5 — it's in 0.23.0. Three full minor versions shipped with this endpoint wide open before anyone added auth to it. CISA added it to the KEV catalog. The federal patch deadline is today, April 11. If you're running Marimo on anything network-accessible — a cloud VM, a shared dev box, even localhost with port forwarding — you need to update right now. Not after standup. Not after lunch. Patch-Tuesday thinking is dead for developer tools exposed to the internet. A 10-hour exploit window doesn't care about your change management process. How many other developer tools are sitting on unauthenticated WebSocket endpoints right now? #CyberSecurity #CVE #Python #DevSecOps #InfoSec

  • No alternative text description for this image

To view or add a comment, sign in

Explore content categories