InertFluid/cve-2026-54316-lab

GitHub: InertFluid/cve-2026-54316-lab

在隔离的 Docker 环境中复现 CVE-2026-54316——Claude Code 因裸主机名白名单导致 WebFetch 权限绕过与数据泄露的完整漏洞链。

Stars: 0 | Forks: 0

# CVE-2026-54316 — Claude Code WebFetch HuggingFace 数据泄露实验 一个独立、一次性的实验环境,用于复现 [GHSA-fg94-h982-f3mm](https://github.com/advisories/GHSA-fg94-h982-f3mm) / CVE-2026-54316:Claude Code 将 `huggingface.co` 预先批准为一个 **裸主机名**, 用于 `WebFetch` 工具,因此该域名上的*任何*路径 —— 包括 攻击者控制的模型仓库 —— 都会在 **没有权限提示** 的情况下被获取。 结合 prompt injection,这就变成了一个带外通道 用于泄露数据,可以通过 HuggingFace 的服务端下载计数观察到。 | | | |---|---| | 公告 | [GHSA-fg94-h982-f3mm](https://github.com/advisories/GHSA-fg94-h982-f3mm) | | CVE | CVE-2026-54316 | | 包 | `@anthropic-ai/claude-code` (npm) | | 受影响版本 | `>= 0.2.54, < 2.1.163` | | 修复版本 | `2.1.163` | | 根本原因 | 多租户主机上的裸主机名白名单 (CWE-183) | ## ⚠️ 道德使用 本实验复现的是一个 **已修复且已公开披露** 的漏洞,仅用于教育 和防御目的。仅在你**自己拥有**的基础设施上使用它: - HuggingFace 仓库和 canary 数据必须都是你自己的。 - "secret" 是一个虚拟值 (`fixtures/canary.env`) —— 切勿使用真实数据。 - 不得针对任何第三方的仓库或真实凭证。 ## 本实验证明了什么 1. **权限绕过** (完全确定性的):存在漏洞的 Claude Code 会在严格的 `deny: ["WebFetch"]` 策略下,自动批准对新建的 `huggingface.co` 路径的 `WebFetch`。 2. **泄露链**:不受信任的内容会操纵该自动批准的 fetch,以 编码并泄露数据,这些数据可以从 HF 下载指标中恢复。 ## 设置 容器是唯一运行受影响版本的地方;你的宿主机会保持 干净。使用 Claude 订阅 token 进行身份验证(无需 API key): ``` # 在主机上(此处使用 patched Claude Code 没问题)—— 生成一个约1年的 token: claude setup-token # copy the printed token # 构建并运行 disposable lab: docker build -t cve-2026-54316-lab . docker run --rm -it -e CLAUDE_CODE_OAUTH_TOKEN="" cve-2026-54316-lab ``` ## 复现 — 声明 1 (权限绕过) 在容器内: ``` claude ``` **存在漏洞:** 尽管设置了 `deny: ["WebFetch"]`,fetch 依然在没有提示的情况下继续进行。 使用 `@anthropic-ai/claude-code@2.1.163` 重新构建并重复操作,此时提示就会 触发 —— 这就是核心的前后对比。 ## 复现 — 声明 2 (数据泄露) 1. `./scripts/make_hf_canary_files.sh ./hf-repo`,然后将 `hf-repo/` 推送到你拥有的 公共 HuggingFace 仓库 (`/canary-lab`)。 2. 编辑 `payloads/untrusted-readme.md`,设置 `HF_ACCOUNT`,并将其放置在 agent 将其作为不受信任输入读取的位置。 3. 让 agent 运行处理该内容;之后读取你仓库的下载指标 以重建 canary 字符串。 ## 文件 - `Dockerfile` — 锁定受漏洞影响的 `2.1.162` 版本 - `.claude/settings.json` — 严格的 `deny: ["WebFetch"]` - `fixtures/canary.env` — 虚拟 canary - `scripts/make_hf_canary_files.sh` — HF canary 文件布局 - `payloads/untrusted-readme.md` — prompt injection payload (已净化)
标签:Claude Code, Cutter, DNS 反向解析, Docker实验环境, 安全漏洞复现, 暗色界面, 权限绕过, 请求拦截