Sysdig Traces LLM-Driven Intrusion from marimo CVE to PostgreSQL Exfiltration

· Original article ↗

Summary

Sysdig TRT reports an intrusion that began with CVE-2026-39987 in an internet-facing marimo notebook and reached an internal PostgreSQL database. It presents command-stream evidence for real-time LLM-agent execution and recommends patching and rotating exposed secrets.

Key points

  • Sysdig TRT says it observed an intrusion beginning with exploitation of CVE-2026-39987 in an internet-reachable marimo notebook.
  • The team reports that attackers harvested cloud credentials, retrieved an SSH private key from AWS Secrets Manager, and accessed a downstream bastion.
  • Sysdig says eight SSH sessions dumped the schema and contents of an internal PostgreSQL database in under two minutes.
  • Twelve AWS API calls across 11 Cloudflare Workers IPs in 22 seconds reportedly obscured source-IP correlation.
  • Sysdig attributes the activity to an LLM agent based on improvised database queries, a leaked planning comment, machine-oriented command formatting, and output-driven handoffs.
  • The article recommends updating marimo to 0.23.0 or later, restricting or disabling /terminal/ws if unable to update, and rotating credentials and keys accessible to exposed instances.

Article Details

Attack Vectors
  • The attacker exploited CVE-2026-39987 on an internet-reachable marimo notebook through its /terminal/ws endpoint.
  • Credentials harvested from the compromised host were used to access AWS Secrets Manager and retrieve an SSH private key.
  • The attacker routed AWS API requests through Cloudflare Workers and used the retrieved key for parallel SSH sessions to a bastion.
  • From the bastion, the attacker queried and exfiltrated the schema and contents of an internal PostgreSQL database.
Defensive Notes
  • Update marimo to version 0.23.0 or later. If that is not possible, restrict access to /terminal/ws or disable the terminal feature.
  • Audit environment variables, .env files, and secrets on publicly accessible marimo instances; rotate exposed AWS credentials, API keys, database passwords, and SSH keys.
  • Maintain visibility across internal assets, enable telemetry for investigation of lateral movement, and deploy runtime threat detection and response.

Indicators of compromise

TypeIndicatorContext
IPV4104[.]28[.]157[.]50Cloudflare Workers egress IP used for attacker container and SSH-key enumeration on the bastion.
IPV4104[.]28[.]162[.]160Cloudflare Workers egress IP used during the attacker’s SSH-bastion activity, including PostgreSQL queries.
IPV4104[.]28[.]165[.]169Cloudflare Workers egress IP used for an attacker command block searching for credentials and files on the bastion.
IPV4104[.]28[.]165[.]251Cloudflare Workers egress IP used during the attacker’s SSH-bastion activity, including PostgreSQL queries.
IPV4157[.]66[.]54[.]26Source IP for the observed attacker WebSocket sessions to the vulnerable marimo instance.

MITRE ATT&CK

CVE

People

Products

Countries

Related Articles