FlawOpen

flawopen.com/参考/Dependency Confusion

Dependency Confusion:软件包来源混淆如何发生

High Severity CWE-829: Inclusion of Functionality from Untrusted Control Sphere 软件供应链
通俗解释 — 名称相似的供应商

想象团队从供应商目录订购组件,但两家供应商使用相同的商品名。如果规则没有指定可信供应商,构建可能拿到非预期组件。Dependency Confusion 是软件包来源选择失败:构建从组织并未打算信任的 registry 或命名空间解析依赖。

Boundary: 包名、命名空间、registry 配置和锁文件来源
Failure: 解析器可能从非预期来源获取同名包
Impact: 未经审查的第三方代码可能进入构建;启用时安装脚本也可能运行
Remediation: 明确命名空间与 registry 策略、审查锁文件、使用最小权限构建

Dependency Confusion 如何发生

具体行为取决于包管理器及其配置。以 pip 为例:其文档警告,将私有 --index-url 与公共 --extra-index-url 组合,可能导致选择同名公共包。npm 根据包 scope 或默认配置选择 registry;它并非总会比较私有和公共版本并选更高者。共同根因是来源策略含糊。如果安装了该包且启用了脚本,脚本会以构建任务可用的权限运行。

pip.conf 与 requirements.txt(来源含糊)风险配置
[global]
index-url = https://packages.example.internal/simple
extra-index-url = https://pypi.org/simple

corp-auth-utils
.npmrc 与 package.json(显式 scope 路由)加固示例
@corp:registry=https://packages.example.internal/repository/npm/

{
  "dependencies": {
    "@corp/billing-engine": "1.2.0"
  }
}

Dependency Confusion 的一种故障路径

工程防护措施

浏览相关安全主题与事件分析:安全目录 →

参考资料

另请参阅 Docker 套接字暴露:风险与防护 GitHub Actions 脚本注入:安全处理工作流输入 Cosign GHSA-fx35-mq7g-6g98:旧版 Bundle 验证绕过