Docker socket 沙箱旁路:真正的边界包括被委托的宿主 daemon
Docker socket 沙箱旁路:真正的边界包括被委托的宿主 daemon
结论与知识点轴
sandbox-security / harness-runtime / benchmark-evaluation;关联 MCP Gateway 的旁路治理。 限制 agent 自身的文件写权限,不代表限制了它能联系的高权限 daemon。若 agent 可把操作交给边界外的 Docker daemon,后者可能执行 agent 本来不能完成的宿主操作。
这是 Harness-Engineering 的信任交接问题,不需要假设发生 kernel exploit。对用户的 macOS coding-agent 工作流,耐久问题是:哪些本地服务可以被 agent 借用,其权限是否被纳入执行策略? 本文没有检查用户的 Docker 安装、socket 权限或 sandbox 配置,不能判定本机受影响。
来源与验证边界
- Pillar 原始研究,2026-07-20。此前 09-08 原文读取失败,本轮直接 HTTPS 抓取成功并完整阅读。
- Cursor 官方 GHSA-v4xv-rqh3-w9mc,关联 CVE-2026-73218;API 返回 severity high、affected
<3.0.0。公告于 2026-07-14 发布、2026-08-11 更新。 - 已归档研究原文和官方 advisory JSON;未播放/验证 PoC 视频,未执行任何容器、挂载、宿主写入或逃逸测试。
- 公告
patched_versions字段为空;不要据 affected range 单独推导已验证的最小修复版本。研究者称 Cursor 已修复,实际采用仍需核对产品 release 和配置。
一阶原理:进程边界不等于权限闭包
沙箱拦截的是受约束进程能发出的操作;daemon 在自己的身份和权限下处理请求。若进程能访问 daemon API,后者的高权限能力就间接进入 agent 的可达范围。有效风险面不仅包含直接 syscalls,还包含可请求的代理执行、宿主共享及后续消费 agent 输出的进程。
研究描述的条件链是:受限 agent 能联系 Docker Desktop → daemon 可启动高权限工作负载 → Docker VM 的宿主文件共享通道可能提供边界外文件访问。这里即便最外层采用 deny-default,仍可能在跨进程、跨 VM 的信任交接处失效。
注意,socket 文件“存在/可读”并不自动等于可调用;真实权限还受连接规则、Unix socket 访问控制、daemon 配置及宿主共享范围影响。应验证连接和代理执行能力,不能凭文件路径就判定逃逸。
多方响应为什么不能混写
| 对象 | 已读证据 | 能说什么 / 不能说什么 |
| Cursor | 官方公告 + 研究报告 | 公告明确 macOS、Auto-Run Sandbox、Docker Desktop 和 Dev Containers CLI 前提;可以记录为有官方确认的条件性问题 |
| Codex | 研究者对厂商回应的转述 | 涉及 network/socket 显式允许与配置相关范围;未独立核对其当前实现,不能宣称今天所有 Codex 默认可逃逸 |
| Gemini CLI | 研究者转述厂商认定为文档已说明风险 | 是威胁模型边界之争,不等于官方确认同一 CVE,也不代表无风险 |
研究中的通用脚本、厂商公告的产品前提并非完全同一组条件。入库应保存各自作用域,不能用一个“通杀三个 agent”的标题覆盖具体配置差异。
对 Hermes / agentic coding 的可执行启发
以下为后续自有环境评估方案,不是今天已加固:
- 建立 daemon 清单:Docker、构建服务、浏览器控制、语言服务器和其他带宿主权限的本地 API;记录 caller、服务身份、入口和可写范围。
- 将网络策略拆开:互联网 egress、内网服务、loopback、Unix-domain socket 是不同权限类别;允许取依赖不等于允许任意宿主 daemon。
- 单独隔离构建:确需构建容器时,优先使用无宿主敏感凭据、无广泛 home 共享的专用 worker;不要假设“进了容器”就自动安全。
- 用安全 canary 验收:由操作者在隔离环境验证 policy 拒绝与结果状态,不在日常机器上运行论文 PoC,也不把恶意源码装进 agent 的常用 skill。
- 保存 trust handoff:不仅记录 agent 发出了什么命令,还记录哪个外部进程接手、最终动作落在哪里。
与既有知识的关系
- aisi-sandboxescape-bench-container-breakout:补充 kernel/container breakout 之外的代理执行路径;评测不能只覆盖直接突破隔离。
- MCP-Gateway-Runtime:即使 MCP gateway 有完善策略,shell 直连 daemon 仍可能绕过其控制面。
- grafana-mcp-session-identity-and-egress-boundaries:本地 daemon 权限与远程服务器网络位置都是“调用者没有、执行者却拥有”的隐式权限。
- redagentbench-state-grounded-safety-measurement:安全验收要读取 daemon/宿主 canary 的真实状态,不能只看工具层是否声称被拒绝。
边界与未解问题
- 换用 gVisor、容器或 microVM 不能无条件解决被允许的高权限 API;先界定可委托的能力再选择隔离技术。
- 不在本轮改动 Hermes 配置、不停止 Docker、不调整系统网络,也不把文中配置当当前产品命令指南。
- 后续应检查允许 daemon 的正常任务效用与最小权限成本,而不是以全面禁用工具换取安全表面分数。
写入记录
- 2026-09-10 09:06 CST:补回此前抓取失败的 Pillar 原文,交叉核对 Cursor 官方 advisory;提炼 daemon trust handoff、配置前提和厂商回应差异,未执行 PoC。