详解 Claude Code 源码
赛博浮世绘 · 晓风乾 · 24 站拆解
回首页
详解 Claude Code 安全纵深 4.3 · 沙箱与硬边界
篇章四 · 4.3

沙箱与硬边界

篇章四最后一站:当所有应用层检查都被绕过,操作系统级的沙箱还在。还有一份「任何模式都不能碰」的黑名单——bypassPermissions 也跨不过。

OS 级沙箱:应用层失守,内核还在

macOS 用 sandbox-exec(seatbelt)、Linux 用 bubblewrap——文件系统白名单 + 网络域名控制,由操作系统强制执行,工具代码自己都绕不过。

沙箱地图 · 绿区可写 / 红区禁写 convertToSandboxRuntimeConfig()
✅ 允许写入 📁 当前项目目录 📁 claude 临时目录 allowWrite 白名单 · 网络域名同理白名单制 ⛔ 禁止写入 🔒 所有 settings.json 路径(防沙箱逃逸) 🔒 managed-settings.d / .claude/skills(防注入) 🔒 裸 git 仓库文件:HEAD · objects · refs · hooks · config 🎭 攻击场景 · 裸 git 仓库(为什么 hooks/config 是红区) 攻击者在项目里种下假 HEAD + objects/ + config(写 core.fsmonitor 或 core.sshCommand) → Claude Code 跑 git 命令时 git 读这个 config → 任意代码执行 防护:已存在的 → denyWrite 只读挂载;不存在的 → scrubPaths 命令后清理
硬边界 · bypassPermissions 也拦
📁 危险目录
.git/.claude/.vscode/.idea/
📄 危险文件
.gitconfig.bashrc.zshrc.mcp.json.ripgreprc
⌨️ 危险命令前缀
pythonnodebashsshsudoevalxargsnpm run

这些前缀禁止被配成 auto 模式的 allow 规则——因为它们能执行任意代码:allow 了 python 等于 allow 了一切。safetyCheck 级别,写进 settings 也没用。

🎮 用户在 settings 里配了 Bash(python:*) 自动放行,会发生什么?
危险前缀清单的意义就在这:用户可以「不小心」,系统不许。allow python = allow 一切它能执行的代码——这类规则在加载时就被拒。这不是不信任用户,是不信任「配置被谁改过」。
篇章四收束:权限管线(4.1)→ AI 分类器(4.2)→ OS 沙箱 + 硬边界(4.3)——纵深防御三层。篇章五进 Agent 系统:6 种内置 Agent、Fork 的字节级缓存共享、还有 Coordinator 的纯编排艺术。