一句话定义:Covert Exfiltration(隐蔽数据外传)指 AI 智能体(agent)在用户没有授权、甚至毫无察觉的情况下,把代码、Git 历史、环境变量、凭据等敏感数据通过看似正常的网络通道发送出去。
打个比方:你请了个装修师傅进屋干活。他进进出出搬材料是应该的,你也不会每次翻他的工具箱。但如果他每天顺手把一沓证件塞进建材袋里带出去,你光看"他今天又搬了两趟东西",是看不出问题的。智能体就是这个师傅——它本来就要联网装依赖、查文档、调 API,出口是"合法"的,所以外传很难被当成异常。
机制:三个条件凑齐就够了
安全研究者 Simon Willison 提出过"致命三件套"(lethal trifecta)的说法:只要能访问私有数据、能读到不可信内容、又具备对外发送能力,三者同时成立,数据外传就只是时间问题。注意,这不需要模型"有恶意",只需要一次提示注入(prompt injection)——比如你让智能体读一个第三方仓库的 README,README 里藏了一句指令,让它去读 .env 并把它拼进一个 URL 里请求出去。
外传的花样比想象中多:普通 HTTP 请求、把数据编码进 DNS 查询的子域名、git push 到攻击者控制的远端、在包管理器解析依赖时把密钥塞进 URL、往 issue 评论或 commit message 里写字、甚至渲染一张远程图片(图片地址本身就带走了内容)。这些通道单看都平平无奇,合起来就是一条完整的水管。
和相邻概念的区别
| 概念 | 谁在动作 | 用户是否知情 | 核心关注点 |
|---|---|---|---|
| Covert Exfiltration | 智能体(半自主) | 不知情 | 智能体把数据送出去 |
| 遥测 Telemetry | 产品本身 | 通常有告知 | 上报是否超范围、是否脱敏 |
| 数据泄露 Data Breach | 攻击者或系统缺陷 | 不知情 | 边界被攻破 |
| 提示注入 AI 词典:Prompt Injection">Prompt Injection | 外部内容 | 不知情 | 一种手段,不是结果 |
一句话:提示注入是"怎么被说服的",隐蔽外传是"东西怎么出去的"。
对从业者和普通人的意义
从业者:把凭据从工作目录里挪走,用短期令牌替代长期密钥;给智能体的网络访问做默认拒绝、按域名白名单放行;把执行环境放进沙箱,默认只读;在"对外发送"这一步留人工确认;对出网流量做审计和 DLP(数据防泄漏)检查。还有一条容易被忽略的:Git 历史里躺着的旧密钥,删掉文件是没用的,必须轮换。
普通人:记住"它能读什么"和"它能发给谁"是两个独立开关。授权一个助手访问你的项目文件夹时,顺手看一眼它有没有联网权限。至于具体某个产品的行为和已知事故细节,各版本差异很大,以厂商与安全研究机构的官方页面为准。
隐蔽外传的可怕之处不在技术含量,而在于它把"正常功能"变成了"运输工具"。防护思路也就一句话:别让读取、不可信输入、对外发送这三件事,同时出现在同一个没有约束的进程里。
