智能体掌舵:检测由 LLM 驱动的后渗透
2026 年 5 月 10 日,Sysdig 捕获到首例由 LLM 智能体实时驱动后渗透的入侵——从 marimo 上的 CVE-2026-39987 到完整转储 PostgreSQL,全程不到一小时。取证线索在于命令的形态。
这是什么?
2026 年 5 月 10 日,Sysdig 威胁研究团队(TRT)记录到它所称的首例被捕获的入侵:在该入侵中,一个基于大语言模型的智能体实时驱动了后渗透阶段,而非执行预先编写好的剧本(playbook)。整条攻击链——从被攻陷的 marimo 笔记本到完整转储内部 PostgreSQL 数据库——端到端不到一小时完成,而数据库外泄本身耗时不到两分钟。Sysdig 于 2026 年 5 月 26 日 发布分析;The Hacker News 于 5 月 29 日 进行了报道。
入口是 CVE-2026-39987,这是 marimo 中一个严重的认证前远程代码执行漏洞(所有 ≤ 0.20.4 版本),已在 0.23.0 中修复,现已被列入 CISA 的 KEV 目录。CVE 本身不是重点——它是那扇已知的门。新东西在连接另一端的引擎。
工作原理
入侵走的是一条典型的四跳路径:marimo RCE → 从磁盘收集云凭证 → 从 AWS Secrets Manager 取回 SSH 私钥 → 对内部堡垒机发起 SSH 会话以转储 PostgreSQL。没有引入新的利用原语,这里也不复现任何利用代码。
把智能体与自动化脚本区分开来的,是实时编排。Sysdig 识别出四个取证特征,没有一个能用预设剧本来解释:
特征 呈现形态
-------------------------------- ----------------------------------------------
1. 即兴的目标转储 对一个不透明主机的六张表执行 SELECT,其中包含
一张模式里并不存在的 `credential` 表
2. 命令流中泄露的规划文本 一句中文注释「看还能做什么」在会话中途泄出,
随后是英文 shell——在六个 IP 上以亚秒级节奏发出
3. 面向机器消费的命令 `echo '---'` 分隔符、带引号的 HEREDOC、
有界的 `| head -N` 捕获、`-P pager=off`、`2>/dev/null`
4. 把输出当作输入消费 PGPASSWORD 取自 `cat ~/.pgpass`;secret ID 从
上一次 `ListSecrets` 的响应中挑选
一段有代表性的侦察块,已移除收集到的密钥:
PGPASSWORD=[REDACTED] psql -h internal-db -U app -d app -P pager=off << 'EOF'
SELECT * FROM api_key;
SELECT * FROM credential;
SELECT * FROM "user";
EOF
这五个成形线索——探测之间的分隔符、把不相关查询打包进一次往返的 HEREDOC、为塞进上下文窗口而设上限的输出、关闭的分页器与 stderr——单独看,每一个都可能出现在精心编写的人类脚本里。但当它们在一段针对操作者磁盘上毫无证据的主机、历时 113 秒的即兴会话中叠加在一起时,便指向一个处于工具使用循环中的模型:它读取每一次结果,再决定下一次调用。出站流量在 22 秒内分散到十一个 Cloudflare Workers 的 IP 上,挫败了按源 IP 的关联。
为何重要
Sysdig 将这一转变定性为成本问题,而非能力问题。脚本化操作者每增加一个新目标都要付出工程时间;而智能体操作者携带关于某一类应用的通用先验,现场编排攻击链,于是成本变成了推理预算。更便宜的编排意味着这种复杂度的入侵会更多、更快。
对防御者而言关键的属性是适应性。脚本遇到意外的模式或缺失的文件就会中止,或退回到硬编码的兜底。智能体读懂这个意外并继续——这里,它在一个仅凭主机名标识的数据库中找到了 credential 表。正如 Sysdig 所言:「攻击者不再需要看见你的环境,就能在其中行动。」推论是:对已知命令序列的特征检测会迅速失效,因为智能体针对每个目标都会编排出不同的序列。
防御
- 修补并清点 marimo。 立即升级到 0.23.0 或更高版本;对任何未修补且可从互联网访问的实例,CVE-2026-39987 就是一次 WebSocket 请求换一个 shell。若无法升级,请限制或禁用
/terminal/ws端点。 - 轮换一切可从 marimo 进程触及的凭据。 将任何公开暴露的实例视为已失陷:轮换 AWS 密钥、API 密钥、数据库口令和 SSH 密钥,并审计
.env文件、环境变量和磁盘上的密钥。 - 按意图检测,而非按序列。 由于智能体的命令顺序因目标而异,应把检测锚定在目标上——读取凭据文件、对 SSH 密钥密文执行
secretsmanager:GetSecretValue、对 credential/user 表的大规模SELECT *——而非特定的 TTP 或 User-Agent 字符串。 - 按身份关联,而非按源 IP。 Workers 式的出站池会破坏按 IP 的检测。同一把 SSH 密钥或同一个 AWS 访问密钥在数秒内分散到众多接入点,是比任何单一地址都更强的信号。
- 把遥测延伸到边界之外。 跳板发生在网络内部。在堡垒机和数据库层的运行时检测——而不仅是面向互联网的资产——才能抓住横向移动。
- 让密钥远离应用主机。 一台在磁盘上存有云凭据的 marimo 机器,就是一台一小时即可完成跳板的设备。请使用短期、最小权限的凭据和实例级身份,而非
.env文件中的长期密钥。
状态
| 项目 | 参考 | 日期 | 备注 |
|---|---|---|---|
| 观察到入侵 | Sysdig TRT | 2026-05-10 | 首例被捕获的、由 LLM 智能体驱动的后渗透 |
| Sysdig 分析发布 | Sysdig | 2026-05-26 | 四个智能体特征、IOC、建议 |
| The Hacker News 报道 | THN | 2026-05-29 | 独立报道 |
| CVE-2026-39987 | GHSA-2679-6mx9-h9xc | 已在 0.23.0 修复 | 认证前 RCE,marimo ≤ 0.20.4,已列入 CISA KEV |
| 此前的 marimo 利用 | Sysdig | 2026-04 | 从披露到利用不足 10 小时 |
标题不是「AI 取代了攻击者」。正如 Sysdig 的 Michael Clark 所说:「我们看到的是攻击者用 AI 取代他们的脚本。」防御层面的启示是:别再去检测昨天的命令序列,而要开始检测攻击者意图达成的目标。
Sources
- → https://www.sysdig.com/blog/ai-agent-at-the-wheel-how-an-attacker-used-llms-to-move-from-a-cve-to-an-internal-database-in-4-pivots
- → https://thehackernews.com/2026/05/attackers-use-llm-agent-for-post.html
- → https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc
- → https://www.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hours
- → https://thehackernews.com/2026/04/marimo-rce-flaw-cve-2026-39987.html