“依赖混淆”供应链攻击现身 微软苹果特斯拉优步等超35家企业内网失陷
编译:奇安信代码卫士团队
这种新型攻击被称为 “依赖混淆 (dependency confusion)“ 或 ”替代攻击 (substitution attack)”,它利用的是软件中可能包含多种私有和公开来源组件的事实。
这些外部的软件包依赖关系源自build进程中的公开仓库,当攻击者将私有模块的更高版本上传到公开仓库中时会造成攻击机会,从而导致客户端自动下载恶意“最新“版本,而无需开发人员做出任何操作。
Birsan 指出,“开发人员在自己的机器上犯下的一次性错误、配置不当的内部或基于云的 build 服务器、从系统上看易受攻击的开发管道等都清楚地表明:非法占用 (squatting) 有效的内部软件包名称是进入其中某些规模最大的企业网络的几乎稳操胜券的方法,结果造成远程代码执行后果,很可能导致攻击者在 build 进程中添加后门。“
为执行攻击,Birsan 受限从 GitHub 上、多种互联网论坛帖子上和列出项目依赖关系的 JavaScript 文件中收集了主流企业使用的私有内部软件包名称,然后将使用这些相同名称的恶意库上传到托管着 npm、PyPI 和 RubyGems 等服务的开源软件包中。
Birsan 指出,”我上传了名为 ‘shopify-cloud’ 的 Ruby gem 几小时后,就被 Shopify 公司的 build 系统自动安装,之后尝试运行其中的代码。“他表示,自己在2020年8月上传到 npm 的 Node 软件包在苹果网络中的多个机器上执行,影响和该公司 Apple ID 认证系统相关的项目。
Birsan 最终使用这个伪造的数据包获得了安装该软件包的所有机器的记录,并通过 DNS 提取了详情,因为“流量很少会被拦截或检测到”。
版本更高的数据包会被 app-building 进程拉取而不管该数据包身处何处的问题并未逃脱微软的注意。微软在本周二发布白皮书,说明了使用私有数据包所带来的风险及其缓解措施,其中主要的建议如下:
引用一个而非多个私有数据包;
通过受控制的范围、命名空间或前缀保护私有数据库;以及
使用客户端验证特征如版本锁定和完整性验证等。
具体的write-up 请见:
https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
微软白皮书请见:
https://azure.microsoft.com/en-us/resources/3-ways-to-mitigate-risk-using-private-package-feeds/
OpenWRT开源项目论坛遭未授权访问,可被用于供应链攻击
奇安信开源卫士率先通过可信开源治理工具评估
奇安信开源卫士免费提供开源组件安全检测服务
https://thehackernews.com/2021/02/dependency-confusion-supply-chain.html
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。