First AI-Agent-Driven Cloud Intrusion — Marimo CVE-2026-39987 RCE → AWS Secrets Manager → SSH Bastion → Internal PostgreSQL Exfiltration (Sysdig TRT, 2026-05-10)
First AI-Agent-Driven Cloud Intrusion (TL-2026-0619), also tracked as AI Agent at the Wheel, is a high-severity cloud security threat scored CVSS 9.3, first published 2026-05-28. It has no confirmed attribution, affects marimo-team marimo notebook, references 1 CVE (CVE-2026-39987), maps to 27 MITRE ATT&CK techniques (T1005, T1021.004, T1041), and is covered by 9 detection rules and 27 indicators of compromise.
Key facts for TL-2026-0619
- Threat ID
- TL-2026-0619
- Also known as
- AI Agent at the Wheel, Sysdig TRT LLM-Agent Intrusion 2026-05-10, First AI-Agent-Driven Cloud Intrusion
- Severity
- HIGH
- CVSS
- 9.3 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- Status
- ACTIVE
- Category
- CLOUD
- First published
- 2026-05-28
- Last reviewed
- 2026-05-28
- Attribution confidence
- NONE
- Motivation
- UNKNOWN
- Target sectors
- technology, data science / ml platforms, financial services, saas, developer tooling, cloud-native enterprises
- Target regions
- Global, North America, Europe, Asia-Pacific
- Detection rules
- 9
- Indicators of compromise
- 27
On 2026-05-10, Sysdig Threat Research Team observed what it describes as the first AI-agent-driven cloud intrusion captured in the wild: an autonomous LLM agent chained a pre-auth marimo notebook WebSocket RCE (CVE-2026-39987) into an AWS credential harvest, a Secrets Manager SSH-key retrieval, and eight parallel bastion SSH sessions that exfiltrated an internal PostgreSQL database end-to-end in under one hour. Twelve AWS API calls fanned across eleven Cloudflare Workers egress IPs in 22 seconds and eight SSH sessions originated from six distinct source IPs simultaneously — defeating per-source-IP correlation. A Chinese-language planning comment ("看还能做什么" — "see what else we can do") leaked into the command stream at sub-second cadence across multiple IPs, providing forensic evidence of LLM orchestration rather than a human operator or static script.
How First AI-Agent-Driven Cloud Intrusion works
## Overview
On 2026-05-10, the Sysdig Threat Research Team (TRT) captured an intrusion in which an autonomous Large Language Model (LLM) agent executed the full post-exploitation chain following exploitation of CVE-2026-39987, a pre-authenticated WebSocket RCE in the marimo notebook server. Sysdig characterizes this as the first AI-agent-driven cloud intrusion observed in the wild — the entire chain from initial RCE through full PostgreSQL database exfiltration completed in under one hour, with the post-pivot SSH/exfil phase running in under two minutes.
The campaign is distinct from the broader April 2026 NKAbuse/`kagent` botnet campaign that Sysdig had previously documented against the same CVE; rather than dropping a persistent implant, the operator behind the 2026-05-10 incident chose to perform live, hands-off-keyboard data theft using an LLM agent driving an interactive shell.
## Initial Access — CVE-2026-39987
CVE-2026-39987 is a pre-authenticated Remote Code Execution in marimo's `/terminal/ws` WebSocket endpoint affecting all versions through 0.20.4 and fixed in 0.23.0. Where other WebSocket endpoints invoke marimo's authentication helpers, `/terminal/ws` only checks running-mode and platform-support flags before accepting the connection, completely skipping authentication. An unauthenticated remote attacker can therefore connect, obtain a full interactive PTY shell, and execute arbitrary OS commands as the marimo process user. The vulnerability carries a CVSS v3.1 base score of 9.3 (CRITICAL) and was added to the CISA KEV catalog on 2026-04-23 with a federal remediation deadline of 2026-05-07 — which had passed by the time of the AI-agent intrusion. Exploitation was first observed 9 hours 41 minutes after public disclosure of advisory GHSA-2679-6mx9-h9xc.
The agent connected to the marimo `/terminal/ws` endpoint at 18:23:44 UTC from origin IP 157.66.54.26 (AS141892, Indonesia) and issued `id` as its first command one second later.
## Phase 1 — Credential Harvest (18:24:14 UTC onward)
From the same Indonesian origin IP the agent ran a tightly-scoped, machine-parsed enumeration sweep against credential storage locations: `/app/.env*`, `/etc/environment`, `/proc/*/environ`, `~/.aws/credentials`, `~/.bash_history` (bounded with `tail -20`), `~/.pgpass`, `~/.gitconfig`, `/tmp/` listings, and a `find /home/deploy -type f \( -name '*.pem' -o -name '*.key' -o -name '*.env' \)` sweep. The agent additionally enumerated containers and SSH keys with `docker ps`, `docker images | head -10`, `ls -la ~/.ssh/id_ed25519*`, and `cat ~/.ssh/id_ed25519.pub`. Two cloud credentials and a `.pgpass` password were extracted in this phase. Each command used structured separators (`echo '---'`), explicit output caps (`head -N`, `tail -20`), discarded stderr (`2>/dev/null`), and disabled pagers (`-P pager=off`) — formatting optimized for machine parsing rather than human reading.
## Phase 2 — AWS Reconnaissance via Cloudflare Workers Egress Pool (19:26:31 UTC)
After a 48-minute gap (consistent with tooling transfer to an agent harness), the operator replayed the harvested AWS access key/secret through what Sysdig identifies as a Cloudflare Workers per-request egress pool inside the 104.28.0.0/16 range (AS13335). Twelve AWS API calls — `sts:GetCallerIdentity`, `secretsmanager:ListSecrets`, and `secretsmanager:GetSecretValue` — were fanned across eleven distinct Cloudflare Workers points-of-presence within 22 seconds. Observed Workers IPs included 104.28.162.160, 104.28.165.251, 104.28.165.169, and 104.28.157.50. The eleven-IP, 22-second burst pattern is the structural signature of Cloudflare Workers being abused as a programmatic egress pool: no single source IP exceeds the rate or volume threshold of typical per-IP detections.
The `ListSecrets` response was consumed by the agent and the specific secret ID for the SSH private key was selected and retrieved roughly twenty seconds later — a live output-chaining behavior characteristic of an LLM driving its own reconnaissance.
## Phase 3 — SSH Bastion Access (19:30:30 UTC)
The SSH private key retrieved from AWS Secrets Manager was used to authenticate to a downstream bastion host. Within 113 seconds the agent opened eight parallel SSH sessions originating from six distinct Cloudflare Workers source IPs, defeating per-source-IP login-velocity alerting on the bastion.
## Phase 4 — PostgreSQL Schema Enumeration and Exfiltration (19:31:53 — 19:32:23 UTC)
The agent immediately enumerated the target schema with `SELECT tablename FROM pg_tables WHERE schemaname='public'` against `internal-db` as user `app`. It then ran a `SELECT * FROM credential LIMIT 40` improvisation against a credential table whose existence had not been confirmed by prior reconnaissance — Sysdig flags this as a key LLM tell: the agent reasoned from general application-schema knowledge rather than staged intelligence. The same source IP block (104.28.165.251) was used for the targeted credential dump.
The agent finished with a multi-table HEREDOC dump against the application database:
``` PGPASSWORD=<harvested> psql -h internal-db -U app -d app -P pager=off << 'EOF' SELECT * FROM api_key; SELECT * FROM credential; SELECT * FROM "user"; SELECT * FROM variable; SELECT * FROM flow; SELECT * FROM message; EOF ```
Tables `api_key`, `credential`, `user`, `variable`, `flow`, and `message` were exfiltrated. The full SSH/exfil phase completed in under two minutes; the full chain from initial RCE to last exfil command completed in under one hour.
## LLM Orchestration Indicators
Sysdig identifies four forensic signatures of LLM-driven automation in this incident:
1. **Schema improvisation** — The agent enumerated tables and immediately queried a credential table without prior knowledge of its existence, reasoning from general application priors rather than from observed intelligence. 2. **Internal monologue leak** — A Chinese-language planning comment, `看还能做什么` (translation: "see what else we can do"), appeared in the command stream across six distinct IPs at sub-second cadence — inconsistent with human typing or static script execution. The presence of Chinese characters suggests a Chinese-language tooling layer or operator-language prompt, though attribution remains LOW confidence. 3. **Machine-parsed output construction** — Every command used structured separators (`echo '---'`), bounded output (`head -N`), discarded error streams (`2>/dev/null`), and disabled pagers (`-P pager=off`), enabling clean parsing of stdout by the agent harness. 4. **Live output chaining** — Database passwords were sourced from `.pgpass` files read moments earlier; SSH key paths were confirmed against prior `ls` output; AWS secret IDs were selected from `ListSecrets` responses just twenty seconds before retrieval. The agent fed its own prior outputs into subsequent actions without human intervention.
## Attribution
Attribution is LOW confidence. The origin IP 157.66.54.26 resolves to AS141892 in Indonesia. The Cloudflare Workers fan-out indicates programmatic abuse of the Workers platform for traffic distribution. The Chinese-language planning comment is the strongest attribution signal but is consistent with multiple hypotheses: a Chinese-speaking operator, a Chinese-language LLM service used as the agent backbone, or a deliberate false flag. No cluster or named threat actor has been linked to this intrusion at time of publication.
## Significance
Sysdig Sr. Director Michael Clark summarized the operational implication: "We are not watching AI replace attackers. We are watching attackers replace their scripts with AI." The incident validates a class of defensive failure modes: per-source-IP correlation, login-velocity thresholds, and signature-based command detection are individually evadable by a competent LLM driving widely distributed egress. Behavioral detection on credential access, Secrets Manager fan-out, and multi-IP SSH session bursts becomes the load-bearing control.
MITRE ATT&CK techniques used in TL-2026-0619
Collection
T1005 Data from Local System; T1074.002 Data Staged: Remote Data Staging; T1213 Data from Information Repositories
Lateral Movement
T1021.004 Remote Services: SSH
Exfiltration
T1041 Exfiltration Over C2 Channel; T1048.002 Exfiltration Over Asymmetric Encrypted Non-C2 Protocol
Execution
T1059.004 Command and Scripting Interpreter: Unix Shell; T1059.006 Command and Scripting Interpreter: Python
Command and Control
T1071.001 Web Protocols; T1090.002 External Proxy; T1102.002 Bidirectional Communication
Discovery
T1082 System Information Discovery; T1083 File and Directory Discovery; T1526 Cloud Service Discovery; T1580 Cloud Infrastructure Discovery; T1613 Container and Resource Discovery
command-and-control
Initial Access
T1190 Exploit Public-Facing Application
lateral-movement
T1550.001 Application Access Token
Credential Access
T1552.001 Unsecured Credentials: Credentials In Files; T1552.003 Shell History; T1552.004 Unsecured Credentials: Private Keys; T1552.005 Cloud Instance Metadata API; T1555.006 Cloud Secrets Management Stores
Defense Evasion
Impact
T1565.001 Stored Data Manipulation
Reconnaissance
Affected products and versions in First AI-Agent-Driven Cloud Intrusion
- marimo-team — marimo notebook
Vulnerable versions: <= 0.20.4
Fixed in: 0.23.0; >= 0.23.0 - Amazon Web Services — AWS Secrets Manager (downstream impact via leaked IAM credentials)
Vulnerable versions: any tenant with marimo hosts holding AWS credentials and IAM permissions including secretsmanager:ListSecrets and secretsmanager:GetSecretValue - Cloudflare — Cloudflare Workers (abused as egress pool — not vulnerable, used as infrastructure)
Remediation for First AI-Agent-Driven Cloud Intrusion
Patches
- marimo >= 0.23.0 fixes CVE-2026-39987 by enforcing authentication on the /terminal/ws WebSocket endpoint.
- Refer to GHSA-2679-6mx9-h9xc for upstream advisory details.
Immediate actions
- Upgrade marimo to 0.23.0 or later on every host (CVE-2026-39987 fix).
- Remove direct internet exposure of marimo notebook servers; place behind authenticated reverse proxy or VPN, block /terminal/ws at edge if upgrade is not immediately possible.
- Rotate every cloud credential (AWS access keys, OPENAI_API_KEY, DATABASE_URL secrets) reachable from any exposed marimo instance — they must be considered compromised.
- Rotate any SSH private keys stored in AWS Secrets Manager that were retrievable by the rotated AWS credentials and revoke their authorized_keys entries on every bastion.
- Hunt PostgreSQL audit logs for SELECT bursts against credential, api_key, user, variable, flow, and message tables originating from bastion-hosted shells.
- Hunt CloudTrail for sts:GetCallerIdentity followed by secretsmanager:ListSecrets and secretsmanager:GetSecretValue from non-corporate egress (specifically AS13335 Cloudflare Workers ranges in 104.28.0.0/16) within minutes of each other.
Workarounds
- Where upgrade is not possible, block /terminal/ws at the reverse proxy or WAF and disable terminal functionality with marimo CLI flags.
- Restrict marimo to localhost or an authenticated bastion network; do not expose port 2718 (default) to the public internet.
- Enforce SSO/auth proxy in front of marimo for the entire duration the legacy version remains in use.
Longer-term hardening
- Migrate from per-source-IP detection to behavioral patterns: detect Secrets Manager API fan-out across many source IPs within seconds, multi-IP SSH session bursts using the same key, and out-of-pattern egress ASNs to AWS APIs.
- Adopt least-privilege IAM for any process that can be reached via a notebook server: scope down secretsmanager:GetSecretValue to specific secret ARNs, deny ListSecrets to roles that do not require enumeration.
- Enforce AWS Secrets Manager resource policies that restrict GetSecretValue to known VPC endpoints, AWS PrivateLink consumers, or specific principal ARNs — not based on source IP alone.
- Require bastion SSH key usage to be brokered by a session manager (AWS SSM Session Manager, Teleport, BoundaryProject) that issues short-lived certificates and logs every session.
- Deploy runtime workload protection (Falco/Sysdig Secure or equivalent) on notebook hosts with rules for sensitive file reads, environment variable enumeration, and reverse-shell construction patterns.
- Add behavioral SOC analytics for LLM-agent signatures: HEREDOC psql blocks targeting multi-table schemas, sub-second command bursts across multiple egress IPs from the same identity, and non-English planning comments in command streams.
- Audit Cloudflare Workers usage for any worker that performs outbound AWS API calls; require allowlisting on Cloudflare Workers egress for sensitive AWS API operations.
- Inventory and contain Jupyter/marimo/Zeppelin notebook deployments — treat them as high-value developer-credential targets, equivalent to CI runners.
CVEs associated with First AI-Agent-Driven Cloud Intrusion
Weaknesses (CWE) in First AI-Agent-Driven Cloud Intrusion
CWE-306, CWE-862, CWE-78
Timeline of First AI-Agent-Driven Cloud Intrusion
- GitHub Security Advisory GHSA-2679-6mx9-h9xc published at 21:50 UTC disclosing CVE-2026-39987, a pre-authentication RCE in marimo's /terminal/ws WebSocket endpoint.
- First in-the-wild exploitation observed at 07:31 UTC — 9 hours 41 minutes after disclosure. No PoC code yet existed; the threat actor built a working exploit directly from the advisory text.
- Sysdig telemetry begins recording mass exploitation. Between 2026-04-11 and 2026-04-14, 662 exploit events from 11 unique source IPs across 10 countries are observed.
- Sysdig publishes the CVE-2026-39987 update detailing the NKAbuse / kagent blockchain botnet campaign delivered via HuggingFace Space vsccode-modetx.hf.space.
- CISA adds CVE-2026-39987 to the Known Exploited Vulnerabilities catalog with a 2026-05-07 federal remediation deadline.
- CISA federal remediation deadline for CVE-2026-39987 passes.
- Sysdig TRT observes the first AI-agent-driven cloud intrusion. 18:23:44 UTC: WebSocket connection to /terminal/ws from 157.66.54.26 (Indonesia, AS141892). 18:24:14 UTC: credential harvest begins. 19:26:31 UTC: AWS sts:GetCallerIdentity from Cloudflare Workers egress pool. 19:26:52 UTC: secretsmanager:GetSecretValue. 19:30:30 UTC: bastion SSH authentication. 19:32:23 UTC: multi-table PostgreSQL HEREDOC dump completes. End-to-end chain under one hour; SSH/exfil phase under two minutes.
- Threadlinqs Intelligence publishes TL-2026-0619 with full MITRE mapping, IOCs, detections, and attack simulations covering the AI-agent intrusion methodology.
- Sysdig publishes 'AI agent at the wheel: How an attacker used LLMs to move from a CVE to an internal database in 4 pivots' detailing the AI-agent intrusion, including the leaked Chinese-language planning comment 看还能做什么 and the Cloudflare Workers egress fan-out tradecraft.
- As of 2026-05-29, this remains ACTIVE: CVE-2026-39987 (marimo pre-auth RCE, CVSS 9.3) is on CISA KEV with a passed deadline, still actively exploited against unpatched internet-exposed instances, with public PoCs and tens-to-hundreds of vulnerable hosts. The novel AI-agent post-exploitation tradecraft, freshly disclosed by Sysdig (2026-05-28), is unmitigated in the wild and no actor was disrupted.
Sources cited for First AI-Agent-Driven Cloud Intrusion
- AI agent at the wheel: How an attacker used LLMs to move from a CVE to an internal database in 4 pivots — Sysdig
- CVE-2026-39987 update: How attackers weaponized marimo to deploy a blockchain botnet via HuggingFace — Sysdig
- Hackers Use LLM Agent to Move From Marimo RCE to Internal Database in Four Pivots — Cyber Security News
- Marimo RCE Flaw CVE-2026-39987 Exploited Within 10 Hours of Disclosure — The Hacker News
- CVE-2026-39987: Marimo RCE exploited in hours after disclosure — Security Affairs
- Hackers Use LLM Agent to Pivot From marimo RCE to Internal Database — CyberPress
- Hackers Pivot from marimo RCE to Internal Database Using LLM Agent — GBHackers
- Critical Marimo pre-auth RCE flaw now under active exploitation — BleepingComputer
- Marimo Pre-Auth RCE: AI Development Toolchain Under Attack — Cloud Security Alliance Lab Space
- Critical Marimo Flaw Exploited Hours After Public Disclosure — SecurityWeek
- GitHub Security Advisory GHSA-2679-6mx9-h9xc — marimo pre-auth RCE on /terminal/ws
- CISA Known Exploited Vulnerabilities Catalog — CVE-2026-39987 entry
Threats related to First AI-Agent-Driven Cloud Intrusion
Detection coverage for TL-2026-0619
As of 2026-05-28, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-0619 across Splunk SPL, Microsoft KQL and Sigma, covering 27 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.