详解六种最常见的软件供应链攻击( 二 )


详解六种最常见的软件供应链攻击

文章插图
实际上 , Codecov 攻击者据称使用从受攻击的Bash Uploader收集的凭据闯入了数百个客户网络 。不久后 , HashiCorp披露Codecov事件导致其用于软件包签名和验证的GPG私钥被暴露 。Twilio也披露受到了这起攻击的一些影响,其他公司纷纷披露类似的情况 。
2. 中游受攻击,以传播恶意更新术语“中游”在这里主要指攻击者破坏中间软件升级功能或 CI/CD工具而非原始上游源代码库的情况 。近日,Click StudIOS通知客户遭到了供应链攻击,这家公司开发的Passwordstate企业密码管理器被许多《财富》500强公司所使用 。攻击者破坏了Passwordstate的“原地升级功能” , 将恶意更新分发到Passwordstate用户 。
非法更新含有一个经过篡改的DLL文件,文件名为Moserware.SecretSplitter.dll,其一小部分如下所示:
详解六种最常见的软件供应链攻击

文章插图
Click Studios在安全公告中表示:“攻击持续了大约28小时才被关闭 。只有在此时间段内执行原地升级的客户才受到影响 。手动升级Passwordstate 并不受到攻击 。受影响的客户密码记录可能已被收集 。”
不出所料,此后就发生了针对Click Studios 用户的网络钓鱼攻击 , 攻击者将指向更新后的恶意软件版本的非法链接放入到这些电子邮件中 。
除了涉及技术方面(比如升级过程被篡改)外,这起供应链攻击还涉及社会工程方面 。在一份大小超过300 MB的伪造的更新zip文件中 , 研究人员发现,攻击者设法更改了用户手册、帮助文件和PowerShell构建脚本,以指向其恶意内容分发网络(CDN)服务器:
详解六种最常见的软件供应链攻击

文章插图
图5. 阐明恶意CDN服务器为官方CDN服务器的帮助手册文档之一 。
 
详解六种最常见的软件供应链攻击

文章插图
图6. 含有恶意CDN服务器链接的PowerShell安装脚本 。
这起攻击的社会工程方面还表明了另一个弱点:人类(尤其是新手开发人员或软件消费者)可能并不总是怀疑内容分发网络(CDN)链接,无论这些链接是否真的可疑 。这是由于CDN被软件应用程序和网站合法用于提供更新、脚本及其他内容 。
Magecart等在线信用卡窃取攻击是这类供应链攻击的另一个例子 。在一些攻击中,Amazon CloudFront CDN存储桶受到攻击,将恶意JavaScript代码分发到数量更多的依赖这类CDN的网站 。
3. 依赖项混淆攻击2021年,说到供应链攻击免不了提及“依赖项混淆”,特别是由于这种攻击的简单化和自动化特性 。由于多个开源生态系统存在固有的设计缺陷 , 依赖项混淆攻击不需要攻击者花多大的力气,就能自动执行 。
简而言之,如果您的软件构建使用私有的、内部创建的依赖项,该依赖项在公共开源代码存储库中又不存在,依赖项混淆(或命名空间混淆)就会起作用 。攻击者能够在公共代码存储库上以相同的名称注册版本号更高的依赖项 。然后,攻击者创建的拥有更高版本号的公共依赖项(而不是您的内部依赖项)很有可能被拉入到软件构建中 。
详解六种最常见的软件供应链攻击

文章插图
图7. 困扰多个生态系统的依赖项混淆弱点 。
利用 PyPI、npm和RubyGems等常用生态系统中的这个简单弱点,道德黑客Alex Birsan 成功地入侵了35家大型科技公司,为此获得了超过130000美元的漏洞赏金 。
在Birsan的研究成果披露几天后,成千上万个依赖项混淆山寨软件包开始涌入PyPI、npm 及其他生态系统 。虽然其中大多数山寨软件包由其他志在必得的漏洞赏金猎人创建 , 但其中一些甚至恶意攻击知名公司 。
有多种方法可以解决依赖项混淆,包括在攻击者之前抢先在公共代码存储库上注册(预留)你的所有私有依赖项的名称,并使用自动化解决方案,比如软件开发生命周期(SDLC)防火墙,以防止冲突的依赖项名称进入到供应链中 。
此外,开源代码存储库的所有者可以采用更严格的验证过程,并实施命名空间/范围界定 。比如说,如果想要在“CSO”命名空间或范围下注册依赖项,开源代码存储库可以验证上传软件包的开发人员是否有权以“CSO”之名来上传 。
Java 组件代码存储库Maven Central采用了一种简单的基于域的验证方式来验证命名空间所有权——这种做法很容易被其他生态系统所仿效 。


推荐阅读