AI 代理读过敏感文件后,还能继续联网吗?从 ContractWarden 看运行时信息流约束
一、研究事实与时间边界
论文摘要和正文均标明2026-09-29的 v1,属于预印本。其核心是人确认 allow、deny、no_egress 三类资产决策,在任务执行前绑定策略,由 eBPF LSM 执行,并沿支持的进程、文件与 IPC 路径传播出站限制。作者报告 19 类安全测试共 570 次运行满足预设标准;这不是“所有攻击都能防住”的证明。
论文明确限制在声明资产、已实现内核路径及受控对象生命周期内,不覆盖任意设备、隐式流或被攻陷的内核。本文将其作为近期研究补充,而非十月新事件。它不是某个已发布产品的 CVE 公告,因此不存在需要填写的漏洞编号、受影响产品版本或最低修复版本。
二、背景:权限会随处理过程改变
设想代理先建立一个合法连接,再读取本地敏感报表。如果只检查“能否建立连接”,后面的发送动作可能没有重新决策。另一个进程即使没有直接读过报表,也可能通过临时文件接收到其内容。
这些是通用工程场景,不代表论文已覆盖所有实现。它们说明:访问控制回答“此刻能否做这个动作”,信息流控制还要回答“这个动作携带了什么来源的约束”。限制必须与数据传播一起延续,不能仅附着于最初的工具调用。
对于编程代理,任务身份同样重要。新建子进程不应获得比父任务更宽的权限;主任务结束后,后台进程和持久化文件也不一定立即消失。清理逻辑若只盯父进程退出码,就可能早于实际资源生命周期结束。
三、三个设计决策
1. 先安装策略,再放行执行
“进程启动后再登记”存在一个时间窗口。工程上应将准备态和执行态分开:任务在准备态只能等待;策略、身份和审计上下文完整后才进入执行态。失败时保持阻断,而不是为了成功启动而取消约束。
2. 限制传播应避免隐式降级
如果一个对象同时接收公开数据与受限数据,合并后的限制至少保留受限一侧。业务确需对外发送时,应设计独立的审核或脱敏出口,而不是让代理通过改名、复制或重新启动自行解除限制。
3. 策略对象比路径字符串更复杂
重命名、硬链接、文件替换和标识复用都会影响追踪。路径可以帮助人理解对象,却不必然是稳定身份。本文不把任何一种字符串规则当作完整内核隔离实现。Linux BPF LSM 文档说明了在安全钩子执行 BPF 程序的机制,但该机制本身并不自动提供正确的业务策略。
四、无害模型:限制沿数据关系传播
下面的模型没有系统调用拦截,只用布尔状态演示单调传播。它不能用作真实沙箱。
fromdataclassesimportdataclass@dataclassclassCarrier:no_egress:bool=Falsedeftransfer(source,target):target.no_egress=target.no_egressorsource.no_egressdefmay_send(process):returnnotprocess.no_egress agent=Carrier()secret=Carrier(True)temporary=Carrier()helper=Carrier()assertmay_send(agent)transfer(secret,agent)assertnotmay_send(agent)transfer(agent,temporary)transfer(temporary,helper)assertnotmay_send(helper)transfer(Carrier(False),helper)assertnotmay_send(helper)print("4 checks passed")第四个检查很关键:后来接收公开数据,不能洗掉已有约束。真实系统还必须处理并发、对象销毁、跨任务共享和无法观测的传播路径,不能把这个模型的成功当作原型验证。
五、影响范围和部署前验收
本主题适用于允许代理访问本地资料、执行代码或调用外网的工具平台;只生成文本、没有这些权限的应用,不需要照搬内核方案。采用更强执行层,也会增加兼容性和运维成本。
| 测试场景 | 应观察的证据 | 常见误判 |
|---|---|---|
| 策略安装失败 | 工作负载尚未开始 | 进程退出即代表无副作用 |
| 先连接后读取 | 后续发送仍被检查 | 建连成功即永久授权 |
| 文件与 IPC 中转 | 约束持续传播 | 换进程即获得新身份 |
| 任务结束 | 后代与残留对象被处理 | 父进程结束即全清理 |
| 正常任务 | 业务效果与性能均可接受 | 安全拒绝越多越好 |
工程评估应同时记录误阻断。粗粒度标记可能把未含敏感内容的对象也限制住,影响正常流程。不能简单通过允许代理自行清除标记解决,应考虑隔离处理阶段和显式审批出口。
六、研发与安全团队行动清单
P0:画出能力范围。列出代理可读资产、可写位置、外联目标和后代进程。先收紧不需要的权限,不必等待研究原型产品化。
P1:引入执行门禁。将授权内容绑定到任务及资产清单,测试安装失败和任务取消。为未支持路径设置明确拒绝或隔离策略,避免静默放行。
P2:评估信息流追踪。在专用环境比较允许率、误阻断率、延迟与对象生命周期行为。使用合成数据,不把真实凭据投入试验。对内核版本、挂钩覆盖和特权控制面单独开展审查。
总结
AI 代理的安全边界需要落实到实际副作用,而不止模型承诺。可迁移的原则是:授权先于执行、约束随传播延续、解除约束需要独立决策,并清楚承认实现没有覆盖的路径。