用途:对目标组织进行外部供应链攻击面侦察,触发条件包括目标有公开 GitHub 组织、JS 包引用疑似内部包名(@target-internal/... 等)、构建日志/SBOM/package-lock.json 可公开访问、CI/CD 部分公开、公共镜像仓库中存在目标镜像等。不适用于内部网络制品仓库,或未经明确授权实际发布抢注包。
主要能力:GitHub 组织发现与公开仓库枚举;从 JS 包、package.json、requirements.txt 提取内部包名;检查 npm、PyPI、RubyGems、Go proxy 上名称是否未注册以评估依赖混淆;围绕外部依赖生成抢注候选名;扫描 .github/workflows 中 pull_request_target、不可信上下文插值、可变标签等风险;挖掘 Docker Hub/GHCR/Quay 镜像层密钥;从 SBOM/发布物推断精确依赖版本并关联已知漏洞;发现 .npmrc 等泄露的内部注册表 URL。
使用方式:先设置 TARGET 与 ORG 变量,用 curl 与 gh 命令探测;例如 curl --max-time 30 --connect-timeout 10 -sI "https://registry.npmjs.org/$NAME" 返回 404 表示名称可注册。工作时长命令包括 gh repo list、gh repo clone、trufflehog filesystem、gitleaks、docker history --no-trunc 等;可配合 actionlint、osv-scanner、semgrep 等工具。
限制:名称未被占用不等于可利用,需构建系统实际从公共注册表解析等证据;禁止未经书面授权发布抢注或依赖混淆包;不得提交未经许可的 PR 或触碰自托管 runner;避免盲目拉取大型镜像;内部注册表属范围外,只报告 URL 泄露。有效发现需包含确切名称/路径、漏洞机制、可利用性证据、严重性与修复建议。分类依据其开发/供应链安全用途确定为 security。