Skip to main content
Cyber News & CTI Reports :: 2026-05-29 | Attackers Use LLM Agent for Post-Exploitation After Marimo CVE-2026-39987 Exploit
Contact Page | Privacy Policy

2026-05-29 | Attackers Use LLM Agent for Post-Exploitation After Marimo CVE-2026-39987 Exploit

1. AI Summary

An unknown actor exploited CVE‑2026‑39987 in publicly exposed Marimo notebooks. They used an LLM‑driven agent to harvest cloud credentials and SSH keys. The attacker then exfiltrated a PostgreSQL database in under two minutes.

2. IOCs

IOC Type Value Description Relevant MITRE ATT&CK Techniques
Filepath
~/.pgpass
File containing PostgreSQL password used by attacker to dump the database T1083|T1003
Filepath
~/.ssh/id_ed25519
SSH private key extracted and used for bastion authentication T1021.002|T1078
Vulnerability CVE-2026-39987 Critical RCE vulnerability in Marimo reactive Python notebook T1190

3. MITRE ATT&CK

Code Title
T1059.002 Command and Scripting Interpreter: Unix Shell
T1003 Credential Access
T1078 Valid Accounts
T1021.002 Remote Services: SSH
T1190 Exploit Public-Facing Application
T1083 File and Directory Discovery
T1071.006 Application Layer Protocol: SSH

4. Targets

Type Value
Sector Software development / Data science

5. Article Details

6. Original text

An unknown threat actor has been observed using a large language model (LLM) agent to conduct post-compromise actions after obtaining initial access following the exploitation of a publicly-accessible Marimo network using a recently disclosed vulnerability. "The attacker compromised an internet-reachable Marimo notebook via

CVE-2026-39987
, extracted two cloud credentials from the compromised host, replayed them through a fanned-out egress pool to retrieve an SSH private key from AWS Secrets Manager, and used that key to drive eight short SSH sessions against a downstream SSH bastion server," Sysdig said . "The bastion phase exfiltrated the schema and full contents of an internal PostgreSQL database in under two minutes."
CVE-2026-39987
refers to a critical pre-authenticated remote code execution vulnerability impacting all versions of Marimo prior to and including 0.20.4. It allows an unauthenticated attacker to execute arbitrary system commands. The issue was addressed in version 0.23.0, released last month. The security defect has since come under active exploitation, with threat actors using it to initiate manual reconnaissance against honeypot systems and attempt to harvest sensitive data. The latest activity documented by Sysdig sticks to the same pattern, the primary difference being that an LLM agent was used to drive the post-exploitation activity. The incident, per the cloud security firm, was recorded on May 10, 2026, with the attacker gathering credentials from the environment and then using the harvested AWS access key to perform API calls against AWS Secrets Manager and retrieve an SSH private key. Minutes later, the threat actor is said to have carried out the first SSH authentication on the SSH bastion server using the retrieved key, followed by launching eight parallel SSH sessions against the downstream server to siphon an internal PostgreSQL database. The end-to-end attack chain lasted a little over an hour.

Sysdig said it uncovered four indicators that an LLM agent was behind the activity. First, the attacker improvised a database dump without any prior knowledge of the schema. Second, a Chinese-language planning comment, "看还能做什么" translating to "See what else we can do" leaked directly in the command stream when executing a credential search. "The database hostname was opaque, with no application identifier on disk and no schema dump pre-staged, yet the chain still landed on a credential table within minutes," Sysdig said. "The attacker no longer needs to see your environment to operate inside it." The third sign is that every command is designed for machine consumption, with each command separated by a "---" delimiter, along with bounded output captures, disabling the "less" command, and discarding the error stream (stderr) to minimize noise. Lastly, the value handoffs are obtained from prior tool output. In other words, the manner in which certain values, say, database passwords, were extracted implies an AI agent feeding its own previous output -- running a cat command of the "

~/.pgpass
" file -- into the next action. In another instance, a cat command to print the contents of a specific file ("cat
~/.ssh/id_ed25519
") is preceded by an ls ("list") command that passes the same file pattern as input ("ls -la
~/.ssh/id_ed25519
*") to confirm that the SSH Key exists. "When a scripted operator builds a per-target playbook and reuses it, the bar to adding a new target is engineering time," Sysdig concluded. "However, an agent operator carries general priors about a class of applications and composes the chain live to best fit its target. Here, the bar becomes inference budget, not playbook authorship." "The defender-relevant property of an agent-in-the-loop is adaptiveness. A scripted attacker hits a missing file, an unexpected schema, or an authentication failure and either aborts or falls through to a hard-coded fallback.

An agent reads the surprise, decides what to try next, and keeps going." To counter this threat, it's recommended that users update to the latest version of Marimo, audit environments for any publicly-accessible instances, and rotate credentials, API keys, and SSH keys.