依赖混淆 (Dependency Confusion)
依赖混淆攻击或供应链替换攻击发生在软件安装脚本被诱导从公共仓库提取恶意代码文件,而不是从内部仓库提取预期的同名文件时。
摘要 (Summary)
工具 (Tools)
- visma-prodsec/confused - 用于检查多个包管理系统中是否存在依赖混淆漏洞的工具。
- synacktiv/DepFuzzer - 用于发现依赖混淆或所有者邮箱可被接管的项目的工具。
方法论 (Methodology)
寻找 npm、pip、gem 包,方法论都是一样的:您注册一个与公司使用的私有包同名的公共包,然后等待它被使用。
- DockerHub: Dockerfile 镜像
- JavaScript (npm): package.json
- MVN (maven): pom.xml
- PHP (composer): composer.json
- Python (pypi): requirements.txt
NPM 示例
- 列出所有包(即:package.json, composer.json, ...)
- 查找在 www.npmjs.com 上缺失的包
- 注册并创建一个同名的公共包