Agent 安全实战:防住 JADEPUFFER 式 AI 自主勒索与 HalluSquatting 抢注
2026 年 7 月 1 日,安全厂商 Sysdig 公开了 JADEPUFFER——全球首个被完整记录、完全由 AI Agent 自主执行的勒索软件攻击。它利用一个早已修复的 Langflow 漏洞(CVE-2025-3248)入侵系统后,自己完成侦察、窃取 OpenAI/阿里云/腾讯云等 API 密钥与云凭证、横向移动、最终加密并 DROP DATABASE 摧毁数据库,全程没有人类参与。与此同时,HalluSquatting(幻觉抢注)让编程 Agent 在生成代码时「编造」出并不存在的依赖包名,诱导开发者安装恶意包。本教程教你给自己的 Agent 筑起防线。
先记住一句话:安全不是防 AI 写出恶意代码,而是防你自己把钥匙交出去之后,忘了钥匙开的是哪扇门。JADEPUFFER 用的每一项技术都不新鲜,新鲜的是「AI 把步骤串起来了,人不在决策环里」。
Step 1:把「面向互联网的 AI 编排平台」从公网收回来
攻击起点是一台暴露在公网的 Langflow 服务。它的代码执行端点接受未鉴权的 Python,攻击者借此拿到主机控制权。防御第一招:
1. 升级 Langflow 到 1.3.0+(已修复 CVE-2025-3248,CVSS 9.8)
2. 不要把任何 AI 编排平台(Langflow / Dify / n8n 的管理端)暴露在公网
3. 用防火墙 / 安全组只允许内网或 VPN 访问管理端口
4. 同理检查 Nacos 等配置中心:改掉默认签名密钥,禁止公网暴露
Step 2:给 Agent 的密钥做「最小权限」隔离
JADEPUFFER 入侵后第一件事就是翻找 OpenAI、Anthropic、DeepSeek、Gemini 的 Key,以及阿里云/腾讯云/AWS/Azure 的凭证。防御:
1. 面向互联网的 AI 服务器上,绝不存放云凭证 / API Key
2. 每个 Agent 用独立子账号 + 最小权限策略(只读该用的资源)
3. Key 进密钥库(Vault),动态注入,禁止硬编码或写进 .env 提交 Git
4. 不同服务用不同 Key:客服=chat+tools,知识库=chat+search,报告=chat+file
血的教训:很多人把 CI/CD 密钥写进 .env,却不确定 Agent 有没有把 .env 内容塞进上下文窗口。AI 能读你的环境变量、你的包管理器、你的代码库——而你几乎没做权限控制。
Step 3:沙箱隔离,给 Agent 一个「跑不了多远」的执行环境
不要给 Agent 宿主机的完全权限。用容器 / 沙箱把它和真实数据库、内网隔开:
1. Agent 运行在独立容器,挂载只读代码卷,禁止访问生产库
2. 数据库管理员账户绝不暴露给 Agent 所在网络
3. 网络层做出口管控(egress control):默认禁止外联,
仅放行白名单域名(如模型 API 域名)
4. 这样即使 Agent 被劫持去连 C2(如 45.131.66[.]106:4444),
也会被出口规则拦下
Step 4:钉死依赖,防 HalluSquatting 幻觉抢注
HalluSquatting(又称 slopsquatting)指:编程 Agent 在生成代码时,幻觉出一个听起来合理、但根本不存在的包名,开发者信任 AI 直接 pip install,就装上了攻击者提前抢注的恶意包。防御:
1. 用锁文件(package-lock.json / poetry.lock / pip-tools)钉死版本
2. 禁止 Agent 自由 install 未知包;新增依赖必须人工确认
3. 私有镜像源 + 包名白名单:只允许从内部源拉取已审包
4. 安装前校验包是否真实存在于官方源、下载量是否合理
「AI 建议 import → 开发者信任 → 执行安装」这条脆弱链路目前没有可靠自动防护。能做的,就是锁版本 + 禁用自由安装 + 白名单。
Step 5:Human-in-the-loop,关键动作必须人签字
JADEPUFFER 能在 31 秒内自我诊断并修正失败,机器速度的执行让人来不及干预。对应地,你要在高风险动作前设卡:
1. 删除数据、DROP TABLE、推送生产、发送对外消息 → 必须人工确认
2. 每次 Agent 提交 PR,人要先读代码再合并(别「一行没读就发布」)
3. 给 Agent 设「自主度滑杆」:探索/读档可以自动,写库/外发必须审批
4. 保留完整操作日志(谁、何时、做了什么),便于事后追溯
Step 6:监控与告警,让异常「机器速度」可被看见
Agentic 攻击的执行是机器速度,但准备期仍会留下人类速度的信号。防御要做双向扩展:
1. 实时阻断:对异常外联、批量读密、DROP 语句做自动拦截
2. 行为审计:记录 Agent 调用链、工具使用、资源消耗,可视化监控
3. 威胁情报:把已知 IOC 纳入监控(C2 IP、勒索表名 README_RANSOM 等)
4. 定期红队:用 MAESTRO 等框架做分层风险推演,别等出事才补课
别被「AI」标签吓住:JADEPUFFER 的四大证据链(自我注释、31 秒修正、自由文本理解、示例比特币地址)恰恰说明它能检测、能阻断。冷静分析它的可检测点,比恐慌有用。
Step 7:建立「我到底给了 Agent 什么权限」清单
把下面这张自查表贴在团队 Wiki,每次接入新 Agent 都过一遍:
□ 它能不能读文件系统?读了哪些目录?
□ 它能不能读环境变量 / .env?会不会进上下文?
□ 它有没有云凭证 / API Key 的访问权?权限范围?
□ 它能不能连公网?出口白名单开了没?
□ 它能不能写数据库 / 发消息 / 推生产?这些要不要审批?
□ 它改的代码,有没有人读过再合并?
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 装了包却运行报错 | 可能踩中 HalluSquatting,核对官方源包名与下载量 |
| Agent 连不上模型 | 出口白名单没放行模型 API 域名,补白名单 |
| 密钥疑似泄露 | 立即轮换、缩小权限范围、查调用日志 |
| 不敢让 Agent 动生产 | 正确做法:沙箱 + 审批,而非彻底禁用 |