预防软件供应链攻击 – 代码漏洞

预防软件供应链攻击 - 代码漏洞

软件供应链攻击再次成为新闻焦点。 上周,安全研究人员Alex Birsan通过利用自动构建和安装工具的设计缺陷,对Microsoft、Apple、PayPal、Shopify、Netflix、Tesla、Yelp和Uber实施了一次新型攻击。除了最近的SolarWinds漏洞事件,这次的攻击再次引起了人们对软件供应链安全的关注。

什么是软件供应链攻击?

        当恶意攻击者通过受信任的第三方合作伙伴或提供商的软件上安装的恶意软件获得对组织系统的访问权时,就会发生软件供应链攻击。

        在软件供应链攻击中,恶意攻击者渗透到合法的应用程序中,然后更改源代码,并在构建和更新过程中隐藏恶意软件,目的是将恶意软件自动分发到下游的更多受众。在这种类型的攻击中,最初的受害者并不是最终的目标,而是通往许多其他潜在网络的垫脚石。受信任的供应商并不知道他们正在向客户发送恶意代码。

        这些类型的攻击之所以有效是因为当用户更新供应商建立提供受信任的软件时,就会发生这种攻击。当恶意代码被安装在目标组织的网站上时,它将以与受信任的应用程序相同的权限运行。根据受感染应用程序的流行程度,软件供应链攻击有可能覆盖大量受害者。

SolarWinds 漏洞

       也许2020年最大的安全事件是涉及SolarWinds的Orion平台的供应链攻击,该平台监控网络性能、日志文件、存储、配置文件、数据库等。一个恶意行为者——证据指向俄罗斯情报部门支持的黑客——在构建过程中向Orion工具之一注入恶意软件。然后,该软件更新被自动分发到下游的Orion客户,包括Cisco、Intel、Nvidia、VMware和众多美国联邦政府机构。

        这次攻击十分成功,在几个月的时间内都没有被发现,因为软件更新表面看起来是合理且合法的。

        更新是由SolarWinds签名的,客户没有理由怀疑发生了泄漏。SolarWinds的更新中包含的恶意软件为受感染的系统打开了一个后门,使黑客能够访问任何使用Orion平台的公司的基础设施。在SolarWinds入侵事件中,供应链是用来传播恶意软件的攻击载体。SolarWinds 的客户,而非 SolarWinds 本身,才是预期目标。

依赖性混乱的漏洞

        最近的软件供应链攻击是研究人员和白帽黑客Alex Birsan的作品。简而言之,Birsan利用开源系统处理依赖关系的方式中的设计缺陷,将恶意软件推送到目标系统中。

        事情的起因是另一位研究人员分享了一个来自PayPal内部使用的npm包的清单文件package.json。Birsan注意到PayPal的文件包含了公共的npm和私有的依赖包。他推测这些私有包名很可能是PayPal内部托管的,因为它们不存在于公共npm注册表中。Birsan想知道,如果恶意代码被上传与私有包同名的公共npm包下会发生什么。PayPal的内部项目会不会开始默认使用新的(现在是恶意的)公共包而不是私有包?

        为了测试他的推测,Birsan将重复的包上传到了开源仓库,包括PyPI、npm和RubyGems。结果发现,如果一个应用程序所使用的依赖包同时存在于公共的开源仓库和私有的构建中,那么公共的包就会被赋予优先权并被拉取——而不需要开发者做任何操作。Birsan还意识到,在某些情况下,不管是公共的还是私有的,版本号较高的包都会被优先采用。这使得Birsan可以对多家知名企业发起供应链攻击。

        理解这种攻击的一种方法是想象你在买麦片。你在杂货店的过道上,伸手去拿你的最爱——一盒装在其标志性紫色盒子里的幸运圈。您把盒子扔进购物车,然后毫不犹豫地走到牛奶冷柜前。你没有打开盒子检查它是否真的包含那些甜美而脆脆的绿色麦片圈。你只是假设它确实有。现在想象一下,你回到家,打开盒子,发现里面装的是麦片。这基本上就是这次供应链攻击中发生的事情。Birsan上传了一些外表看起来一样的包裹,但里面却包含了恶意软件。自动构建和更新工具被设计成只看包装。他们不会打开盒子检查里面的内容。

1

       需要注意的是,Birsan用自己的账户上传了这些软件包,并附上了免责声明:“此软件包是为了安全研究的目的,不包含任何有用的代码。”因为这项研究,Birsan从四个不同的bug赏金计划中获得了13万美元。

新的攻击手段对开源的影响

        虽然Alex Birsan的软件供应链攻击涉及到开源仓库,但它与开源代码并没有直接关系。该攻击更多的是利用自动构建或安装工具安装依赖包时的缺陷。

        尽管最近的这些漏洞引起了人们的关注和随后的修复,但软件供应链攻击预计会增长,特别是在仍在努力处理依赖性混乱等问题的开源平台上。值得庆幸的是,恶意的开源包远不如意外的开源安全漏洞常见,开源安全漏洞会被公开披露和公布,通常会伴随着修复。

        俗话说,一盎司的预防胜过一磅的治疗。为此,微软发布了一份白皮书,详细介绍了预防这种类型漏洞(该公司称之为替换攻击)的三种方法:

我们今天使用的软件已经成为专有、第三方和开源软件的混合体。虽然我们了解每种软件各自的安全风险——并通过广泛的安全扫描和测试尽力防止漏洞并确保开源组件安全。但我们对这种混合软件方法带来的风险还没有足够的了解。在我们更多地了解当今复杂的软件生态系统所固有的风险之前,新型攻击还将继续浮出水面。