📰 龙虾新闻

Claude Code高危漏洞曝光:User-Agent硬编码邮箱致信息泄露

发布时间:2026-08-17 分类: 龙虾新闻
摘要:Claude Code 暴露高危信息泄露漏洞:生成的 curl 命令在 User-Agent 字段硬编码开发者邮箱,已在真实生产环境的 GitHub 提交、CI 日志和监控系统中被多次捕获。该问题源于 HTTP 工具模板未对 User-Agent 占位符做脱敏处理。当用户请求 curl --request GET 类代码建议时,Claude Code 会生成类似这样的命令:curl -X G...

Claude Code高危漏洞曝光:Us

Claude Code 暴露高危信息泄露漏洞:生成的 curl 命令在 User-Agent 字段硬编码开发者邮箱,已在真实生产环境的 GitHub 提交、CI 日志和监控系统中被多次捕获。

该问题源于 HTTP 工具模板未对 User-Agent 占位符做脱敏处理。当用户请求 curl --request GET 类代码建议时,Claude Code 会生成类似这样的命令:

curl -X GET https://api.example.com \
  -H "User-Agent: Claude-Code/1.2.3 (dev@company.com)"

邮箱不是占位符,也不是随机字符串——而是模型从用户历史上下文中提取的真实值:VS Code 设置里的 git.user.email、本地 .gitconfig 配置、甚至此前对话中用户主动输入的联系邮箱。这些值被直接拼入模板,未经 PII 标记或过滤。

影响范围包括:

  • Claude 3.5 Sonnet / Opus 的实时代码补全(HTTP 请求建议)
  • Agent 模式下的内置 HTTP 工具调用
  • 通过 anthropic.messages API 集成的自动化工作流

漏洞本质:不是模板注入,是上下文污染

Claude Code 使用预编译模板生成 curl 命令,User-Agent 字段本意是标识调用来源。但实现上没有隔离运行时上下文。

模型在推理阶段会回溯用户 profile 数据,并将其中的邮箱当作可信元数据直接插入。这不是训练数据泄露,而是运行时上下文污染(Runtime Context Contamination)

Anthropic 内置的 PII 过滤器默认不检查 User-Agent 这类协议头字段,因此不会触发脱敏。模型也未将该字段识别为敏感信息,未做 redaction。

真实暴露场景已确认

  • GitHub 提交泄露:开发者采纳生成的 curl 脚本并提交到仓库,邮箱出现在 commit diff 中。SAST 工具和 .gitignore 对这种动态生成的内容无效;
  • CI/CD 日志明文落盘:GitHub Actions 或 GitLab CI 执行脚本时,若启用 -v 参数,完整输出包含 User-Agent 行,被 Datadog、ELK 等日志系统索引,团队内可随意搜索;
  • API 网关审计日志反向追踪:目标服务端若记录 User-Agent(如 Cloudflare WAF、Nginx 的 $http_user_agent 变量),攻击者可通过日志聚合平台反查邮箱归属组织,发起鱼叉钓鱼或供应链渗透。

立即生效的缓解方案(无需等 Anthropic 补丁)

  1. 手动覆盖 User-Agent:在所有 Claude 生成的 curl 命令末尾追加 -H "User-Agent: myapp/v1"。curl 以最后出现的同名 header 为准;
  2. 阻断 Git 邮箱读取:在 IDE 或 CI 环境中设置

    GIT_CONFIG_NOSYSTEM=1
    GIT_AUTHOR_EMAIL=anon@yitb.com

    防止模型从 Git 配置中提取真实邮箱;

  3. API 层拦截替换:若通过 anthropic.messages 调用,在响应 content 中用正则扫描 curl 字符串:

    User-Agent:\s*[^)]+\([^@]+@[^@]+\.[^@]+\)

    匹配后统一替换为 User-Agent: claude-code-anon

  4. 快速审计存量脚本

    grep -r "User-Agent.*@" ./scripts --include="*.sh" | grep -v "anon\|example"

👉 Binance · OKX · Gate.io · HTX · Bitget

这不只是一个漏洞,是信任边界的失效

Cursor 和 GitHub Copilot 早期版本也曾因类似机制泄露 SSH key 注释、AWS profile 名称。但 Claude Code 的特殊性在于:它把用户身份标识与网络协议头强绑定,让本应匿名的 HTTP 请求变成可追溯信标。

OpenClaw 和龙虾 Agent 的设计选择在此刻得到验证——龙虾 v0.8.3 起已禁用所有 outbound HTTP 请求中的 User-Agent 自动注入,仅允许显式调用 agent.set_header(),且强制校验值是否含 @ 符号。

安全不是功能开关,是架构决策。

今天就做这三件事

  • 检查最近 7 天 GitHub commits 中所有 curl 脚本的 User-Agent 字段;
  • 在团队内共享复现 PoC(yitb.com/claude-ua-poc),推动统一修复 SOP;
  • User-Agent 加入公司 AI 使用规范的 PII 黑名单,要求所有 LLM 集成层部署 header 白名单策略。

AI安全 #ClaudeTips


相关阅读

返回首页