agent 相关讨论里“沙箱”这个词被高频使用,但含义参差。把隔离的层次拆清楚,再谈安全性才有意义。
第一层:进程隔离
最基础的形态,进程在自己的命名空间里运行,看不到宿主的其他进程。这一层成本最低,防的是误操作,不是攻击。
第二层:文件系统隔离
可读写的目录被限制在特定范围,通常通过挂载命名空间或 overlay 实现。常见漏洞是挂载了宿主的敏感路径——比如把 /var/run/docker.sock 挂进去,等于把宿主 Docker 交了出去。
第三层:网络隔离
这是最容易做漏的一层。很多实现只拦了 HTTP 出口,没拦 DNS。而 DNS 是解析入口——只要能解析,就能找到地址,剩下的只是用什么协议出去。前面 OpenAI 的事故就是这个层次的问题。
第四层:资源隔离
CPU、内存、磁盘、文件描述符数量的限制。没有这一层,一个死循环就能拖垮宿主。
第五层:能力(capability)限制
Linux capability 把 root 权限切成细粒度。容器默认保留的 capability 比想象中多,很多逃逸案例利用的是看起来无害的能力。
没隔离的:身份与数据
沙箱管住的是执行环境,管不住 agent 携带的凭证和数据。如果 agent 手里有生产数据库的连接串,沙箱再严也拦不住它把数据发出去——只要出口是允许的。
实践清单
网络限制下沉到 DNS 和出口网关双保险;文件系统只挂必要路径且默认只读;资源配额都要设;能力按最小集裁剪;凭证按最小权限发放且短时效;所有工具调用留痕。
最后一个判断
沙箱的目标不是“不可能逃逸”,而是“逃逸的代价高于收益,且逃逸行为可观测”。按这个标准设计,比追求理论上的完美隔离更实际。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。