导航菜单
首页 >  沐鸣开户测速 >  » 正文

新型供应链攻击袭击了苹果、微软和其他33家公司


上周,一名研究人员展示了一种新的供应链攻击,该攻击在包括苹果、微软和特斯拉在内的一些全球最大公司的网络上执行了假冒代码。现在,其他研究人员正在互联网上散布模仿包,到目前为止已经发现了150多个。

上周二,安全研究员亚历克斯•比尔桑公布了这项技术。他所谓的依赖关系混淆或名称空间混淆攻击始于将恶意代码放到官方的公共存储库中,比如NPM、PyPI或RubyGems。通过给提交的程序包赋予与苹果、微软、特斯拉和其他33家公司使用的依赖程序包相同的名称,Birsan能够让这些公司自动下载和安装假冒代码。

自动pwnage

依赖关系是公共代码库或包,开发人员使用它们向编写的软件添加通用类型的功能。通过利用数以千计的开源同行的工作,开发人员可以省去自己创建代码的麻烦和费用。开发人员的代码自动从开发人员的本地计算机或公共存储库下载并合并依赖项,或对其进行任何更新。

Birsan搜索了互联网论坛、JavaScript代码、偶然发布的内部包和其他来源,找到了35家公司软件中使用的代码依赖项的名称。然后,他使用相同的依赖名称将自己的代码上传到NPM、PyPI或Ruby Gems。换句话说,研究人员是在霸占属于公司的真实包装名称。这位研究人员最终获得了13万美元的昆虫赏金。

通过给软件包提供比正版更高的版本号,目标公司自动下载并执行Birsan的假冒软件包。

“成功率简直是惊人的,”比尔桑写道。他补充道:

从一次性的错误由开发人员在他们自己的机器上,配置错误的内部或基于云计算构建服务器,系统脆弱发展管道,有一件事是明确的:蹲有效的内部包名几乎是一个万无一失的方法进入网络的一些最大的科技公司,获得远程代码执行,并可能允许攻击者在构建添加后门。

上周五,安全公司Sonatype表示,在Birsan发布研究结果的两天之内,其他开发人员或研究人员也进行了类似的攻击,并在NPM中添加了150个类似的域名包。

它是如何工作的

包管理器通常接受作为名称列出的依赖项,沐鸣开户测速并尝试解析开发人员的意图。管理器在存储项目的本地计算机和属于包管理器的可上网目录上寻找依赖项。

“依赖混淆问题是本地安装工具和DevOps工作流程固有的设计缺陷,它们将依赖关系拖入软件供应链,”Sonatype研究人员在较早的一篇关于Birsan攻击的文章中写道。“在这种情况下,依赖关系混淆指的是开发环境无法区分软件构建中私有的、内部创建的当前包,以及公共软件存储库中可用的同名包。”

Sonatype研究人员继续这样解释这项技术:

例如,我们假设您的应用程序使用一个名为foobar(版本1)的内部私有PyPI组件作为依赖项。以后,如果将同名但版本号更高的不相关组件foobar(版本9999)发布到PyPI downloads公共存储库,则PyPI开发环境的默认配置规定将具有更高版本的foobar作为依赖项下载。

在这种情况下,这将意味着,攻击者的更高版本号的伪造foobar包将静默并自动进入您的软件构建。

所谓的“打字错误”攻击已经存在多年了。他们将代码上传到公共存储库中,并使用与合法软件包名称类似的名称,希望开发人员出现拼写错误或点击恶意链接,从而导致虚假代码被下载。Birsan依赖混淆技术的优势在于它不依赖于人为错误来工作。

虽然受影响的公司没有发现假货,Sonatype却发现了。在与比尔桑核实后,该公司了解到这些虚假依赖关系是一项良性实验的一部分。

概念验证

Birsan发现,35家受影响的公司使用了在公共目录中不可用的本地存储依赖项。当他将自己的概念验证恶意代码上传到一个公共存储库时,使用了与合法依赖项相同的名称和更高的版本号,该公司的软件自动安装并运行这些代码。


为了避免与公司的漏洞报告政策相冲突,Birsan的代码将其活动限制在向研究人员发送用户名、主机名和每个独立安装的当前补丁。他还获准通过公开的漏洞悬赏计划或私下协议,测试所有35家公司的安全性。

为了确保安全防御不会阻止信息离开目标公司的网络,Birsan的PoC代码对数据进行十六进制编码,并通过DNS查询将其发送出去。在恶意软件使用DNS ex过滤引起研究人员注意至少四年之后,两家公司就未能阻止网络流量。

加拿大电子商务公司Shopify自动安装了一个名为Shopify -cloud的红宝石宝石,沐鸣开户测速在Birsan的几个小时内,使其在红宝石宝石库中可用。同时,苹果网络中的多台机器执行Birsan上传到NPM的代码。比尔桑说,受影响的苹果项目似乎与该公司的认证系统Apple ID有关。Shopify和苹果分别向比尔桑提供了3万美元的奖金。

Sonatype在这里列出了一些步骤,开发者可以采取这些步骤来防止依赖混淆攻击。主要的防御措施是存储库强制强制名称空间和范围验证。一种验证技术是完全合格域名的反向使用,它允许品牌或名称空间的合法所有者在该名称空间中发布组件,同时将对手排除在外。