一句话版本
被注入的 Agent 要偷数据,最后一步总是把数据发出去。控制它能连到哪里(出站 / 出口流量),就切断了这最后一步。 最稳妥的做法是默认拒绝、白名单放行,并且让所有流量经过一个代理统一检查。但要小心几个容易被忽略的出口:DNS 查询、白名单里本身就能"存储数据"的网站(代码托管、文档、粘贴板)、以及模型输出里自动加载的图片。
全文分三层:
- 通俗理解:大楼只开一个出口,门口有保安
- 实际用处:企业网络、云端执行环境、AI Agent 的实践
- 原理与工程要点:白名单 vs 黑名单、代理、DNS 外泄、"合法网站"的滥用
第一层:通俗理解
1.1 只开一个出口
一栋大楼如果有一百个出口,每个都要派人看着,迟早会漏。更好的办法是:只开一个出口,门口有保安检查,只有名单上的人和货物能出去。
网络也一样:
- 入站控制(谁能连进来)是大家熟悉的防火墙;
- 出站控制(里面的程序能连到哪里)常常被忽视,但对防止数据外泄至关重要。
1.2 "禁止联网"比"禁止访问某网站"简单得多
| 策略 | 难度 |
|---|---|
| 完全不能联网 | 最简单、最可靠 |
| 只能访问少数几个指定网站(白名单) | 可行,需要代理和维护名单 |
| 能访问除了"坏网站"以外的一切(黑名单) | 几乎不可能做好:攻击者随时可以注册一个新域名 |
第二层:实际用处
- 企业网络:高安全环境中,服务器只能通过出站代理访问互联网,而且只能访问业务需要的地址。这能阻止恶意软件连回控制服务器,也能阻止数据外泄。
- 云端代码执行环境:许多 AI 产品的代码执行功能默认完全不能联网,或者只能通过一个受控代理访问有限的软件包仓库。
- AI 编程 Agent:常见做法是允许访问代码托管、软件包仓库(npm、PyPI)、文档站点,其余一律拒绝,或每次新域名都要用户批准。
- 数据防泄漏(DLP)系统:企业在出口处检查流量内容,拦截含有敏感数据(身份证号、密钥格式)的请求。
第三层:原理与工程要点
3.1 实现方式
| 方式 | 说明 |
|---|---|
| 网络隔离 | 沙箱没有网卡或没有默认路由,彻底断网 |
| 防火墙规则 | 按 IP 和端口放行;问题是现代网站的 IP 经常变化、大量共享 CDN |
| 出站代理 | 所有流量必须经过代理,代理按域名白名单放行(HTTPS 可通过 SNI 或 CONNECT 请求里的域名判断),并记录日志 |
| TLS 检查代理 | 代理解密 HTTPS 检查内容(需要在沙箱里信任代理的根证书);能做内容级检查,但更复杂 |
代理方案还有一个好处:可以由代理注入凭证。沙箱里的 Agent 看不到真正的 API 密钥,代理在转发请求时自动加上(见《凭证泄露与上下文窗口》)。
3.2 DNS 外泄
即使所有 HTTP 流量都被拦住,如果沙箱还能做DNS 查询,数据仍能泄露:
把数据编码进子域名,查询:
6d7920736563726574.攻击者域名.com
攻击者控制这个域名的 DNS 服务器,从查询日志里就能读出数据。
DNS 查询通常会经过多层递归解析器,最终到达攻击者的服务器,防火墙未必拦截。
对策:沙箱只能使用受控的 DNS 解析器;解析器只解析白名单域名;或者只允许代理做 DNS 解析,沙箱本身不做。
3.3 白名单里的"合法网站"也能被滥用
白名单通常包含代码托管、文档、软件包仓库等网站。问题是这些网站本身允许用户上传内容:
| 白名单网站 | 可能的滥用 |
|---|---|
| 代码托管平台 | 把数据推送到攻击者的仓库、写进 Issue 或评论 |
| 软件包仓库 | 发布一个包含数据的包(需要凭证) |
| 粘贴板、云文档 | 创建公开文档 |
| 任何带搜索功能的网站 | 把数据放进搜索词,出现在对方的日志里 |
对策:
- 路径级而不只是域名级的规则,比如只允许下载(GET)软件包,不允许上传;
- 沙箱里的凭证只有只读权限,或者只能推送到指定的仓库;
- 对写操作(POST、PUT、推送)单独审查或要求人工确认。
3.4 别忘了"客户端出口"
Agent 的输出最终会显示在用户的浏览器或终端里。如果输出中包含会被自动加载的外部资源(图片、iframe),这些请求是从用户的浏览器发出的,完全绕过了沙箱的出口控制(见《Markdown图片数据外泄》)。所以出口控制要两头都管:沙箱的出口,和渲染端的 CSP。
3.5 默认拒绝
代理不可用、名单加载失败时,应该拒绝所有流量,而不是放行(见《Fail-closed》)。每一次被拒绝的请求都记录下来:被注入的 Agent 尝试连接陌生地址,本身就是很有价值的告警信号。
总结
| 层次 | 要点 |
|---|---|
| 原则 | 默认拒绝、白名单放行、统一经过代理 |
| 容易漏 | DNS 查询、白名单网站的写功能、客户端自动加载的资源 |
| 好处 | 切断外泄最后一步;代理还能代管凭证、记录日志 |
| 配套 | 只读凭证、路径级规则、渲染端 CSP、拒绝即告警 |