Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-59891-control-lab — 针对 @sigstore/oci 中 CVE-2026-59891 的隔离式回归与安全控制实验室 | Kitploit
工具/GitHubGitHub/gyubin02/cve-2026-59891-control-lab
容器安全漏洞分析云安全供应链安全错误配置学习与教育实验室与实践
GitHubgyubin02/cve-2026-59891-control-lab

cve-2026-59891-control-lab

针对 @sigstore/oci 中 CVE-2026-59891 的隔离式回归与安全控制实验室

查看仓库
363个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-59891 回归与控制实验室

以相同输入比较 @sigstore/oci 的实际易受攻击版本与修复版本, 并检查各环境下的暴露条件的隔离式实验与只读审计 项目。

本项目的 CVE Reporter 是 gyubin02。

招聘·面试用摘要: CVE-2026-59891 漏洞管理自动化案例

验证什么

CVE-2026-59891 的核心是在选择 Registry 认证信息时发生的 hostname 混淆。

  • 0.7.0:由于 cr.io 存在于 ghcr.io 字符串之中, 可能会选择 ghcr.io 认证信息。
  • 0.7.1:对 hostname 进行规范化后,仅选择完全匹配的 认证信息。

本仓库首先自动验证两种 credential 选择场景。

  1. collision:只有 ghcr.io 认证信息,而目标是 cr.io
  2. exact:存在与目标完全匹配的 cr.io 认证信息

易受攻击版本在第一个场景中会错误地选择认证信息,修复 版本则应当拒绝。两个版本在第二个正常场景中都应当 成功。

在此基础上,还添加了使用 127.0.0.1 上的一次性 mock Registry 而非真实外部 Registry 的动态比较。易受攻击版本 0.7.0 会向本地发起 2 次请求,并在认证 challenge 之后的第二次请求中观察到合成的 Authorization header。修复版本 0.7.1 在 credential 选择阶段即被拒绝,请求数为 0。结果中不保留 header 值,仅保留 是否观察到以及请求数。

项目暴露检查 CLI

cve-2026-59891-audit 仅读取目标项目的 package-lock.json 和 显式指定的 Docker config 的 metadata,以区分以下内容。

  • 受影响的 @sigstore/oci 安装位置与版本
  • 易受攻击版本是否存在以及是否满足实际暴露条件
  • Registry 子字符串冲突与 JSON key 顺序上实际选择的目标
  • 各环境优先级、处置事项与复测步骤
  • 已移除 Registry hostname 与绝对路径的 JSON·Markdown 证据

使用合成 fixture 直接运行:

npm run audit:demo

检查其他 Node.js 项目:

npm run audit:project -- \
  --project ../target-project \
  --docker-config ../review-copy/config.json \
  --image cr.io/example/demo \
  --destination-trust unknown \
  --format markdown \
  --output reports/cve-2026-59891.md

--destination-trust 必须明确指定以下之一。

  • trusted:已确认目标受代码和允许列表限制
  • untrusted:外部输入或工作流输入会影响目标
  • unknown:尚未确认

判定分为 exposure_conditions_met、potential_exposure、 affected_component_only、not_detected、indeterminate。 not_detected 也只是针对已记录输入范围的结果, 并不意味着“安全”或“合规”。

安全防护措施

  • 回归实验室不会读取或修改真实的 ~/.docker/config.json。
  • 仅使用隔离的专用 HOME 和无价值的 lab-user / LAB_ONLY_FAKE_TOKEN。
  • 仅当 HOME、实验室标记和假值全部准确时,才调用包。
  • 现有选择性回归 probe 会以 tripwire 拦截所有 HTTP(S)、TCP、TLS、DNS 和 fetch 调用。
  • 在动态 probe 使用的 Node 网络表面上,仅允许向操作系统分配的 精确 127.0.0.1 端口发起 HTTP 请求。外部及其他 端口的 HTTP、DNS resolver、TLS、UDP、全局 fetch·WebSocket 均 被拦截。
  • 不向子进程继承当前会话的令牌·Docker 环境变量。
  • 测试确认 stdout/stderr 和审计结果中连假 header 都不保存, 仅保留 boolean 和请求数。
  • 检查 CLI 不能省略 --docker-config,且不会从 HOME 或 DOCKER_CONFIG 推断文件。
  • CLI 不会 decode·hash·输出 credential 值,也不会执行目标项目的 包·Docker·credential helper,或连接网络。
  • 若发现 symlink、重复 JSON key、不支持的 lockfile、优先级更高的 npm-shrinkwrap.json,不会断言其安全,而是失败。

由于会故意安装存在漏洞的包,npm package 发布已通过 "private": true 阻止。不得将其用作产品代码的依赖。 因此,npm audit 报告 0.7.0 是预期结果, 例外的范围和原因已记录在 SECURITY.md 中。

执行

要求:Node.js 22.22.2+、24.15.0+ 或 26 以上。推荐版本已固定于 .nvmrc。

npm ci --ignore-scripts
npm test
npm run demo
npm run dynamic:demo
npm run audit:fixture
npm run audit:demo
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

npm run dynamic:demo 的核心预期结果:

{
  "vulnerable": {
    "packageVersion": "0.7.0",
    "credentialSelection": "credential-selected",
    "requestCount": 2,
    "authorizationObserved": true,
    "digestVerified": true,
    "networkPolicy": "exact-loopback-only"
  },
  "fixed": {
    "packageVersion": "0.7.1",
    "credentialSelection": "credential-rejected",
    "requestCount": 0,
    "authorizationObserved": false,
    "digestVerified": false,
    "networkPolicy": "exact-loopback-only"
  },
  "regressionResult": "PASS"
}

全自动化测试共 34 个。npm run evidence 会生成检查对象 6 个产物,加上用于验证其完整性的 SHA256SUMS,共 7 个 文件。

本项目展示的能力

  • 在代码层面解释真实 CVE 的发生条件并安全复现
  • 设计在相同条件下比较漏洞版本与修复版本的回归测试
  • 设计仅限 loopback 的试验,动态比较合成 credential 是否在本地传输
  • 独立于公开 CVSS,评估实际环境的攻击前提条件
  • 静态识别 package-lock v1、v2、v3、alias 与嵌套 dependency
  • 自动生成排除机密信息的 JSON、Markdown 审计证据
  • 从发现 → 影响分析 → 修复验证 → 控制的漏洞管理
  • 不触碰真实凭据的失败安全型安全测试

来源与范围

  • GitHub 安全公告 GHSA-pf56-329r-95rw
  • NVD CVE-2026-59891

本项目是受限的教育性控制评估。loopback 结果仅证明 合成环境中的行为差异,并不证明实际企业环境中的 credential 暴露、侵害或控制效果。不代表 CISA 资质、ISMS-P 认证或特定组织的合规。Node API guard 是针对已锁定 dependency 的已观察执行路径的防御层, 并非 OS 级 network namespace 或防火墙。

详细的范围、测试、风险与控制文档位于 docs/, npm run evidence 会生成可复现的执行证据与 SHA-256 manifest。

下载工具