Claude Code 2.1.282 修的是权限绕过:仓库里的软链接曾能读到你的网络挂载
Claude Code 最近两个版本修的东西,比新功能值得看。
2.1.282:启动时读文件的路径可以被软链接带出去
Claude Code 启动时会读 CLAUDE.md 和 rules 文件。2.1.282 之前,仓库里放一个软链接,就能通过 .. 或 /.vol 这种内核路径绕到 macOS 的 /Network(网络挂载目录);指向 macOS /home 的 rules 软链接也会被原样列出并读取。现在这两条路径都被堵了。
这个漏洞的触发方式很日常:你 clone 一个别人的仓库,里面有个不起眼的软链接,然后让 Claude Code 在这个目录里工作——它启动时就把网络挂载上的文件读进了上下文。跑在别人仓库上的自动化流程,攻击面就在这儿。
2.1.281:权限规则里的 NUL 字节会被当通配符
上一版修的是另一类问题:一条权限规则里如果含 NUL 字节,之前会被展开成通配匹配,等于放行了一大片;现在这种规则什么都不匹配。另外,Read / Write / Edit / NotebookEdit 遇到含空字节的文件路径,现在会让那次工具调用明确报错,而不是把整轮对话搞崩。
顺带两个能直接用的设置
sandbox.network.allowLocalBinding 是 macOS 沙盒里最常见的卡点:开了沙盒之后 npm run dev 之类的本地服务绑不上端口,一直挂着。官方设置参考里这个键的说明就是”让沙盒内的命令绑定到 localhost 端口”,四种设置文件里都能写。团队里有人长期在沙盒下跑本地服务的,把它写进项目的 .claude/settings.json,比每次现场排查省事得多。
maxProseWidth 限制正文的行宽,表格和代码块仍然占满全屏。宽屏或宽 tmux 面板下正文被拉得很长、反而更难读的情况下,这个值单独收窄一下就好。
今天能做的三件事
- 升级到 2.1.282 或更高。这两个修复都只在安全层面生效,不会有新功能提示你该升了。
- 写插件的话,跑一遍
claude plugin validate。它会检查 hook 里${CLAUDE_PLUGIN_ROOT}有没有加引号——不加引号时,插件装在带空格的路径下(macOS 或 Windows 的用户目录很常见)会静默失效;它还会报出.mcp.json里会被静默丢弃的条目、未声明的${user_config.*}引用和不安全的 URL。 - 陌生仓库先隔离再让 agent 读。这次的修复说明”读文件”这个动作本身有攻击面,让人放心的是目录边界,不是模型。
泼冷水
修了软链接不代表万事大吉。让 agent 读你不了解的代码仓库,本质上是把启动时的文件读取交给了仓库内容决定。真正稳妥的做法还是给一次性任务开独立目录或容器,而不是指望厂商把每一种路径绕过都提前修完——这个补丁已经是今年的第 N 个了。
原文(设置参考):https://code.claude.com/docs/en/settings-reference 发布说明:https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md