gyubin02/cve-2026-59891-control-lab

GitHub: gyubin02/cve-2026-59891-control-lab

隔离型安全实验室,用于安全地复现并对比 @sigstore/oci CVE-2026-59891 漏洞版本与修复版本在 Registry 认证选择上的行为差异。

Stars: 0 | Forks: 0

# CVE-2026-59891 回归与控制实验室 这是一个隔离型实验项目,旨在使用相同的输入对 `@sigstore/oci` 的实际漏洞版本和修复版本进行比较, 并检查不同环境下的暴露条件。 ## 验证内容 CVE-2026-59891 的核心在于选择 Registry 认证信息时发生的 hostname 混淆问题。 - `0.7.0`:仅因为 `cr.io` 存在于 `ghcr.io` 字符串中, 就可能错误选择 `ghcr.io` 的认证信息。 - `0.7.1`:在规范化 hostname 后,仅选择完全匹配的 认证信息。 本仓库会自动验证两种场景: 1. **collision**:仅有 `ghcr.io` 的认证信息,但目标却是 `cr.io` 2. **exact**:存在与目标完全匹配的 `cr.io` 认证信息 漏洞版本在第一种场景中会错误选择认证信息,而修复版本 应当拒绝选择。同时,两个版本都必须在第二种正常场景中 取得成功。 ## 安全机制 - 不会读取或修改实际的 `~/.docker/config.json`。 - 仅使用本仓库内专用的 `HOME` 和无实际价值的虚假认证信息。 - 只有当 `HOME`、实验标记和虚假值全部正确时才会调用包。 - 本测试调用的 API 仅从本地文件中选择认证信息, 不会向 Registry 发送网络请求。 - 在 probe 子进程中,通过 tripwire 阻断 HTTP(S)、TCP、TLS、DNS 和 `fetch` 调用。 - 不会将当前会话的 token 和 Docker 环境变量继承给子进程。 - 测试 stdout/stderr 和审计结果中是否不会出现即使是虚假的 token。 由于本项目故意安装了包含漏洞的包,因此这是一个设置为 `"private": true` 的 教育用实验室。请勿将其作为产品代码的依赖项使用。 因此,`npm audit` 报告 0.7.0 是预期内的结果, 例外范围及其原因已记录在 [`SECURITY.md`](SECURITY.md) 中。 ## 运行 环境要求:Node.js 22.22.2+、24.15.0+ 或 26 及以上版本。推荐版本 已固定在 `.nvmrc` 中。 ``` npm install --ignore-scripts npm test npm run demo npm run audit:fixture npm run evidence ``` `npm run demo` 的核心预期结果: ``` 0.7.0 collision credential-selected 0.7.1 collision credential-rejected 0.7.0 exact credential-selected 0.7.1 exact credential-selected Regression result: PASS ``` ## 本项目展示的能力 - 在代码层面解释实际 CVE 的触发条件并安全地进行复现 - 设计回归测试,在同等条件下对比漏洞版本与修复版本 - 除了公开的 CVSS 之外,评估真实环境中的攻击前提条件 - 涵盖 发现 → 影响分析 → 修复验证 → 控制 的漏洞管理流程 - 不触碰实际认证信息的故障安全型(fail-safe)安全测试 ## 来源与范围 - [GitHub Security Advisory GHSA-pf56-329r-95rw](https://github.com/sigstore/sigstore-js/security/advisories/GHSA-pf56-329r-95rw) - [NVD CVE-2026-59891](https://nvd.nist.gov/vuln/detail/CVE-2026-59891) 本项目是一项受限的教育性控制评估。不代表通过 CISA 资质认证、ISMS-P 认证或任何特定组织的合规性。 详细的范围、测试、风险及控制文档位于 [`docs/`](docs/) 目录中, `npm run evidence` 可生成可重复运行的证据和 SHA-256 manifest。
标签:GNU通用公共许可证, MITM代理, Node.js, 安全控制, 暗色界面, 漏洞分析, 自定义脚本, 路径探测