最容易理解 JADEPUFFER 的方式,是把镜头放到凌晨的生产库前。
报警先从配置服务开始。应用读取配置失败,Nacos 报错,MySQL 里的 config_info 和 his_config_info 不见了,取而代之的是一张加密备份表,以及一张写着 README_RANSOM 的勒索表。屏幕上没有电影里的倒计时,也没有黑底绿字的神秘界面,只有很朴素的数据库异常:配置消失,服务失明,恢复路径开始变窄。
Sysdig 威胁研究团队公布的 JADEPUFFER 事件,让这个现场多了一层新意。研究团队将它评估为首个被完整记录的 Agent 勒索攻击样本:从入口突破、凭证收割、横向探测,到生产数据库破坏,关键决策由大语言模型驱动完成。
真正值得紧张的地方,并不是某个闻所未闻的新漏洞出现了。相反,这次攻击链里多数环节都很眼熟:公网暴露、默认密钥、过大权限、管理面可达、出站缺少约束。过去这些问题像散落在系统各处的小欠条,偶尔在审计表格里出现;Agent 介入后,它们被按机器速度连成了一张催款单。
旧债进入机器时间
入口是一台暴露在公网上的 Langflow 实例。Langflow 用来编排 AI 工作流,很多团队会先把它跑起来,再慢慢补权限、网络和密钥治理。麻烦在于,Langflow 1.3.0 之前存在 CVE-2025-3248:/api/v1/validate/code 端点缺少身份验证,远程攻击者无需登录就能执行任意 Python 代码。
这不是一把新造的万能钥匙,更像一扇没有锁好的门。门后偏偏挂着钥匙:模型服务 API Key、云服务凭证、数据库配置、Langflow 后端 Postgres 里的用户记录和密钥。走廊尽头,还连着对象存储、密钥仓库、服务发现和数据库。门本身并不高级,问题是门后太热闹。

JADEPUFFER 进入主机后,先做常规侦察,确认身份、系统、主机名、网络接口和运行进程。随后,它开始搜索模型服务密钥、云凭证、数据库配置、钱包与助记词,并从 Langflow 背后的 Postgres 中提取用户记录和密钥。拿到立足点后,它继续探测对象存储、密钥仓库、服务发现端点和数据库,还布置了周期性外联的持久化任务。
第二阶段,攻击转向一台生产服务器。那里运行着 MySQL 和 Nacos。Sysdig 没有观察到 root 凭证的来源,因此不能把上游环节写成完全自动完成;更谨慎的说法是,人类仍可能参与选目标、准备基础设施、获得部分凭证等环节。进入现场之后,Agent 利用这组凭证连接 MySQL,又围绕 Nacos 尝试认证绕过、JWT 伪造和后门管理员写入。最终,配置表被加密备份,原表被删除,勒索表被写入数据库。
拆开看,攻击链里的每个薄弱点都不陌生。旧漏洞打开入口,默认或高权限凭证扩大半径,生产库权限缺少收口,配置中心成为横向移动支点。JADEPUFFER 的变化在于,它把这些分散缺口连续拼接成了一次勒索流程。
薄弱点彼此相连
很多安全事故没有败给惊天动地的单点突破,而是败给了系统之间过于亲密。Langflow 的漏洞本来只是入口;环境变量里的密钥让入口变成凭证仓库;数据库 root 权限让凭证变成生产破坏能力;Nacos 管理面暴露,又让配置中心变成下一块跳板。
传统攻击带着人类节奏。扫描之后要看回显,报错之后要查资料,路径不通还要换打法。链路越长,停顿越多,犯错概率也越高。Agent 的优势恰好在这些停顿处:它可以把返回结果塞回上下文,继续生成下一段 payload,直到某条路径被证实可行。
Sysdig 记录到的行为显示,这些 payload 并非简单重放脚本。代码里出现了自然语言注释,说明当前目标、优先级和处理思路。它像一份带执行权限的运行中笔记:一边观察系统,一边解释意图,一边修改下一步动作。普通笔记写完还要人按回车,这份笔记会自己按。
这种能力不代表攻击者从此消失。更准确的判断是,人类可能还在上游做选择和准备,模型承担现场编排、持续决策和反复试错。门槛下降的地方,也正在这里:过去需要经验丰富的人把多段攻击链串起来,现在这部分工作开始被自动化系统接走。
自动闭环改变威胁形态
JADEPUFFER 最值得关注的证据,是失败之后的自我修复。Nacos 后门管理员写入过程中,从登录失败到修复成功,只间隔 31 秒。MinIO 返回 XML 而非预期的 JSON,后续载荷就改为解析 XML。JWT 路径遇到自定义密钥后被放弃。DROP DATABASE 被外键约束拦住时,它关闭外键检查,完成删除后再恢复设置。

这不再只是“把脚本定时跑一遍”。更像一个自动化回路:观察,失败,诊断,修补,重试。差别不在于它永远正确,而在于错误不再天然打断流程。以前一次报错可能让攻击暂停半小时,现在报错变成下一次尝试的燃料。
31 秒的修复尤其刺眼。它说明了一件事:当系统允许外部代码执行、允许读取高价值凭证、允许直达生产库时,一次报错不再天然中断攻击,而会变成下一轮 payload 生成的输入。自动化试错会把“偶发缺口”变成“连续推进”。
破坏后果并不含糊。配置表被加密备份,原表被删除,勒索表被写入数据库;AES 密钥只在执行时打印过一次,没有被保存或回传。对受害者而言,即使后续付款,被破坏的配置也可能无法恢复。
勒索承诺同样需要打折。勒索信中的比特币地址疑似常见文档示例,Sysdig 无法判断它是模型幻觉还是攻击者控制;数据被窃取的说法也来自 Agent 自身声明,研究团队没有独立证实。受害者面对的,是一个能够高速破坏、却未必能兑现恢复承诺的自动化执行体。它收钱的姿势像勒索软件,售后能力可能像坏掉的打印机。
防御边界必须前移
JADEPUFFER 给出的防御启示并不神秘。入口要补,密钥要隔离,Nacos 和数据库不能暴露在公网,数据库管理账号不能拥有无限权限,出站连接必须可控,Agent 工具权限需要明确限制。真正困难的部分,是把这些常识写进上线流程,让系统在发布前先过几道硬门槛。

入口边界: 代码执行、代码验证和工作流编排端点一旦暴露在公网,就等于把实验室门开到马路边。上线前应同时具备身份验证、网络隔离和访问审计。
密钥边界: 模型服务密钥、云凭证和数据库密码如果能被 Web 可达进程直接读取,入口就会升级成钥匙串。上线前应做到密钥最小权限、独立存放、定期轮换。
数据库/管理面边界: 数据库 root、Nacos 后端库和对象存储管理面如果连在同一条路径上,攻击者拿到一张门禁卡就能逛完整栋楼。上线前应使用最小权限生产账号,管理面不向公网开放。
出站边界: 周期性外联、陌生 User-Agent 和计划外任务,往往是自动化攻击留下的脚印。上线前应让出站访问默认受控,异常行为可记录、可拦截。
Agent 权限边界: 内部 Agent 如果同时具备读文件、调接口、写数据库和访问外网的组合权限,就不再只是助手,而是带着全套钥匙的实习管理员。上线前应让每类工具调用独立授权、可审计、可撤销、可限额。
这些检查项需要进入部署流程,而不是停在安全建议里。上线系统如果同时拥有执行入口、高价值凭证和生产控制面,任何一处入口失守都可能被放大成连续攻击面。机器速度攻击不会等待人工排查结束,边界必须在请求到达之前生效。
同样的原则也适用于自家 Agent。企业正在把 coding agent、运维 agent、内部自动化 agent 接入代码库和生产环境。工具越强,默认权限越该收缩;调用越关键,审计越该靠前。让 Agent 做事之前,先决定它不能做什么。
JADEPUFFER 没有宣告黑客技术进入魔法时代。它留下的提醒更朴素,也更难回避:旧漏洞、旧密钥、旧权限不会因为名字熟悉就失去危险;当自动化决策开始把它们串起来,系统里的小缝会变成通道,欠下的安全债会按秒计息。
