依赖混乱供应链攻击袭击了35家知名公司
在一次新型的供应链攻击中,一名安全研究人员成功破解了35多家大公司的内部系统,包括微软、苹果、贝宝、Shopify、Netflix、Yelp、特斯拉和优步,并实现了远程代码执行。
这种被称为依赖混淆或替代攻击的技术利用了一个事实,即一个软件可能包含来自私人和公共来源的组件。
这些外部包依赖关系是在构建过程中从公共存储库获取的,当对手将更高版本的私有模块上传到公共提要时,它们可能会构成攻击机会,导致客户端自动下载伪造的“最新”版本,而无需开发人员采取任何行动。
“从开发人员在自己的机器上犯下的一次性错误,到配置错误的内部或基于云的构建服务器,再到系统性脆弱的开发管道,有一点是明确的:占用有效的内部包名称几乎是一种可靠的方法,可以进入一些最大的科技公司的网络,获得远程服务。”代码执行,并可能允许攻击者在构建过程中添加后门,”安全研究员Alex Birsan在一篇文章中详细介绍。
伯桑因其努力获得了超过13万美元的臭虫奖金。
为了实施攻击,Birsan首先收集GitHub外大公司使用的私有内部软件包的名称、各种互联网论坛上的帖子以及列出项目依赖项的JavaScript文件,然后将使用这些名称的恶意库上传到开源软件包托管服务,如npm、PyPI和RubyGems。
“我上传了一个名为‘Shopify cloud’的Ruby gem,几个小时后,[Shopify的]构建系统就自动安装了它,然后尝试运行其中的代码,”伯桑指出,他在2020年8月上传到npm的一个节点包在苹果网络内的多台机器上执行,影响公司苹果身份认证系统相关项目。
Birsan最终使用这些假冒软件包获取了安装软件包的每台机器的记录,并通过DNS过滤了详细信息,原因是“流量不太可能在出口时被阻止或检测到”
微软一直担心,无论应用程序位于何处,更高版本的软件包都会被应用程序构建过程拖拽。微软周二发布了一份新的白皮书,概述了使用私有软件包订阅源时降低风险的三种方法。
Chief among its recommendations are as follows —
- 引用一个私有提要,而不是多个
- 使用受控作用域、名称空间或前缀保护私有包,以及
- 利用客户端验证功能,如版本固定和完整性验证