Claude Code 2.1.214:七个权限绕过漏洞修复,operator 部署前必须核查的安全加固版本

2.1.214 关闭了 Bash 和 PowerShell 中七条权限检查绕过路径,为 Docker daemon-redirect 参数增加权限门控,向 agentic session 引入 EndConversation 工具,并新增用于网关级计费关联的 OTel 属性。

发布于 来源 Anthropic Claude Code

归档条目:由 AI 根据所引信源辅助生成,发布时未经逐篇审阅。责任编辑:Joe Werner。

深色技术背景上,带有 TheRouter 低调配色的多层权限门控与路由路径抽象示意图

当一次 Claude Code 更新只修复一个权限漏洞时,打补丁然后继续就好。但当同一条 changelog 修复了七个独立绕过向量——分布在 Bash、PowerShell 和远程 session 中——就需要在下一个部署窗口之前停下来做一次完整审查。

2.1.214 本周发布。这是一次安全与可观测性加固版本,并非功能性更新。修复内容对以下场景影响最大:通过自定义 AI gateway 运行 Claude Code 的团队、在 CI 中部署 Claude Code 的团队,以及依赖 managed-settings 策略来约束权限 allow-list 的 operator。

发生了什么

2.1.214 关闭了七条独立的权限检查绕过路径:

  1. dir/** allow 规则范围过宽 — 形如 Edit(src/**) 的单段 glob 会自动批准对工作目录树中任意 dir/ 路径的写操作,而不仅限于 <cwd>/dir。设置了路径范围策略的 operator 因此被静默地过度授权。
  2. PowerShell 5.1 绕过 — 在 Windows PowerShell 5.1 session 中执行的命令可绕过权限检查。在企业 Windows CI 流水线中运行 Claude Code 的团队是主要影响范围。
  3. 文件描述符重定向形式 — Bash 权限检查未能识别某些 fd 重定向形式——bash 对这些形式的解析方式与权限分析器不同。使用这些形式的命令在未弹出提示的情况下直接运行。
  4. 长命令误判 — 权限分析器对超过 10,000 个字符的命令产生误判。现在此类命令一律触发提示而非自动执行,关闭了精心构造的长命令可能绕过检查门的边界情况。
  5. zsh [[ ]] 中的变量下标 — [[ ]] 比较中的 zsh 变量下标和修饰符被当作惰性文本处理。受影响的命令现在会触发权限提示。
  6. help 和 man 命令白名单过宽 — 某些可执行危险选项、命令替换或反斜杠路径的 help/man 变体之前被自动批准,现已收紧。
  7. 远程 session 竞争条件 — 远程 session 上的权限提示可能在本地确认对话框显示之前就已执行,导致一个操作在没有用户可见确认的情况下完成。

除权限修复外,两项新增内容改变了 operator 可见的行为边界:

  • Docker daemon-redirect 参数现已纳入权限门控 — 携带 --url、--connection、--identity 及 Podman 远程模式参数的 docker 命令现在需要权限提示。此前,docker --url tcp://... run ... 因在语法层面看起来像只读调用而绕过了 Bash 权限门。
  • 引入 EndConversation 工具 — 与 claude.ai 上的功能一致,Claude 现在可以在遇到高度滥用用户或越狱尝试时主动终止 session。对于将 Claude Code 作为嵌入式 agent 运行的团队,这意味着模型发起的会话终止成为一个可能的结果,gateway 和 harness 代码必须能够处理这一情况。

对 AI 工程团队的影响

这些安全修复共同揭示了一个问题:operator 的 allow-list 所描述的策略,与实际执行的内容之间存在偏差。对于在生产环境中通过 ~/.claude/settings.json 或组织级 managed settings 文件部署 Claude Code 的团队,2.1.214 有两层含义:

第一,之前某些被自动批准的命令在策略范围之外运行了。针对 src/ 的 dir/** allow 规则实际上匹配了非预期目录;长命令绕过了分析器;zsh 下标对权限门不可见。

第二,升级到 2.1.214 后可能会出现之前静默通过的命令现在触发权限提示的情况。这是正确行为——但如果 CI 自动化假设无人值守运行,这可能表现为回归。团队应在大范围推广前先在 staging 环境中测试升级行为。

Router/operator 视角

对于 AI gateway operator 而言,2.1.214 中的 OTel 变更独立于安全修复,同样值得关注。

三个新属性被添加到 OpenTelemetry 日志事件中:

  • message.uuid — 每条消息的稳定标识符,支持跨 gateway 跳点的关联追踪
  • client_request_id — 用于在 gateway 层将日志事件关联回发起请求
  • tool_source — 标识生成该事件的工具,支持按工具粒度进行成本归因

这些属性填补了一个重要空白:此前难以将 Claude Code session 遥测数据与 gateway 层计费记录关联。如果你的 AI gateway 已按请求发送 OTel span,现在可以通过 client_request_id 和 message.uuid 将 Claude Code 的内部工具事件关联到计费记录,而无需依赖 session 级别的聚合。

此外,CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH 现在可配置——OTel 内容属性的默认 60 KB 截断上限可以调整。对日志聚合器有大小限制的团队可以降低此值;需要完整内容捕获的合规工作负载可以提高此值。

TheRouter 用户应关注的事项

权限门控变更和 OTel 关联属性直接适用于通过自定义 gateway 端点运行 Claude Code 的团队。本周的两个行动项:

升级后审查 allow-list。 如果你在 managed settings 中使用了范围限定的 Edit() 或 Bash() allow 规则,请在单段 dir/** 语义变更后验证预期范围是否仍然正确。之前匹配范围较宽的规则现在可能匹配更少;你认为范围较窄的规则在 2.1.214 之前可能匹配了更多内容。

将 client_request_id 和 message.uuid 接入 gateway 计费 span。 如果你的 AI gateway 已发送 OTel span,可添加一个关联步骤,将 Claude Code 的 client_request_id 与 gateway 的请求标识符关联起来。这对 gateway 层的按 agent 成本核算至关重要。

升级方式:npm install -g @anthropic-ai/claude-code@latest 或你所使用的管理分发机制。

帮助与联系