根据一个 Gartner报告预计,到 45 年,全球多达 2025% 的组织的软件供应链将遭遇过攻击。由于当今软件产品构建方式的变化,这种类型的攻击变得越来越频繁且难以处理。
如今,软件工程师不必从头开始构建应用程序。尽可能 应用程序的 90% 可以使用第三方代码、离散库和开源软件构建。虽然这种软件开发方法有助于简化构建应用程序的过程并节省大量时间,但它也增加了威胁和安全漏洞,因为恶意软件包可以通过第三方代码和软件传递。
归根结底,它是 变得越来越困难 维护软件供应链的完整性。近期软件供应链风险的增加以及由此引发的违规事件频发,足见供应链漏洞问题的严重性。
根据这一趋势,组织必须采取行动确保其软件的完整性和安全性。在这篇文章中,我们将探讨常见的软件供应链风险以及组织可以减轻这些漏洞并保护其软件免受攻击的各种方法。
软件供应链中的已知漏洞
第三方软件可能会对软件供应链构成多种威胁。攻击者可能会利用各种方法来利用依赖于该第三方软件的系统中的漏洞。其中一些攻击方法包括将恶意代码引入软件、依赖关系混淆、误植等等。
然而,由于软件开发的复杂性以及在当今竞争激烈的数字市场中需要交付新应用程序的速度,软件工程师别无选择,只能依靠第三方工具和外部库来尽快创建应用程序。
由于以下原因,漏洞可能会被引入到应用程序中:
- 您编写的代码:您自己编写的自定义代码中的不良安全实践
- 您构建的内容:用于构建应用程序的软件开发工具可能会受到损害,从而使您的软件面临安全漏洞
- 您购买的产品:一些用于应用程序开发的现成软件即服务 (SaaS) 应用程序可能包含漏洞
- 您使用的内容:许多应用程序依赖于第三方开源库,这些库可能是您供应链中的薄弱环节。
考虑到每个软件供应链中存在众多潜在的薄弱环节,组织必须积极主动地预防和补救 软件供应链漏洞。为此,软件工程师必须了解其软件项目可能面临的这些潜在风险或威胁。其中一些威胁包括:
嵌入恶意代码包
攻击者在软件供应链攻击中所做的事情之一就是用恶意软件感染受影响的端点。该恶意软件可能是病毒、勒索软件、特洛伊木马或间谍软件,可能对受影响的软件和计算机系统造成严重破坏。
攻击者通常会选择系统在用户设备上拥有高级授权的目标。此类攻击的一个著名例子是 2021 年遭受的网络攻击 加濑屋,一家 IT 解决方案开发商,其客户包括托管服务提供商和企业客户。
Kaseya 提供的关键 IT 解决方案之一是 VSA,这是一种统一的远程监控和管理工具。 VSA 服务器在客户设备上高度受信任,通过渗透该服务器,攻击者能够绕过所连接客户端的身份验证控制。这样,他们就可以毫无阻碍地上传恶意负载。 Kaseya 攻击类似于 SolarWinds 安全惨败,攻击者能够向数千名客户推送恶意更新,使他们面临更多安全漏洞。
敏感数据的泄露
每次以数据盗窃为目的的攻击都可以归类为数据泄露攻击。当恶意行为者未经授权将敏感数据从目标系统传输到其他位置时,就会发生数据泄露。因供应链攻击而发生的数据泄露攻击的一个著名示例是 2013 年 XNUMX 月 Target 遭受攻击,美国最大的零售公司之一。
攻击者使用从第三方供应商窃取的凭据进入 Target 的系统。这次攻击使他们能够未经授权访问 Target 的客户服务数据库,从而捕获客户的姓名、电话号码、电子邮件地址、支付卡信息和其他敏感数据。 41万目标客户的支付卡信息被泄露到攻击者的服务器,超过60万客户的联系信息被泄露。
远程执行代码
远程代码执行(也称为任意代码执行)是一种网络攻击,攻击者获得远程命令设备或计算机操作的权限。通常,攻击者会将恶意代码注入受害者打算在其系统上运行的文件、字符串或整个包中。这使得攻击者能够发起全面攻击,从而危及整个 Web 应用程序或 Web 服务器。软件供应链攻击中发生远程代码执行攻击的两种常见方式是通过域名抢注和依赖混淆:
注册近似域名
为了执行此类攻击,恶意行为者通常会创建一个与您打算安装的依赖项相同的受损软件包。通常,恶意软件包的拼写略有不同。目的是利用可能的安装命令输入错误。恶意包的功能通常与工程师打算安装的依赖项一样,但它同时也会执行嵌入其中的恶意代码。
依赖混乱
依赖关系混淆是攻击者在软件供应链攻击中发起远程代码执行的另一种方法。通过这种类型的攻击,恶意行为者会在外部库上创建一个与内部依赖包同名的包。由于两个依赖项具有相同的名称,因此包管理器可能会安装恶意代码。这使得攻击者能够渗透正在开发的软件应用程序的持续集成/持续部署(CI/CD)环境。
如何降低软件供应链风险?
在过去几年中,软件供应链攻击已成为世界各地组织面临的最大网络威胁之一。降低此类攻击的风险已成为每个组织(尤其是依赖第三方软件的组织)网络安全和风险管理的重要组成部分。与其盲目信任第三方平台和公共存储库,不如采取预防措施并对导入系统的内容进行必要的检查。在制定软件供应链风险管理计划时,您可以使用以下方法来降低软件供应链攻击的风险:
审核您的软件
供应链攻击之所以难以应对,是因为风险超出了您自己的系统范围。为了降低这些攻击的风险,您必须做的不仅仅是保护自己的边界。相反,您的策略必须更加注重确保连接到您的外部软件系统同样安全。
但是,这通常很难实现,特别是当您甚至没有有关所连接的外部系统或应用程序中使用的代码依赖项的足够信息时。降低供应链攻击风险的第一步是对软件供应链进行全面审核。
就在最近,继影响多个美国政府机构的 2020 SolarWinds 攻击之后, 美国联邦政府将软件审计作为一项法律要求 适用于向美国政府机构销售软件的每家公司。您也应该对所有系统执行相同的操作。清晰记录所有软件依赖项是了解您的系统是否面临供应链攻击风险的唯一方法。
除了立即审核您的软件依赖项之外,您还需要在软件的每个新版本发布时再次审核您的系统。您可能还需要超越手动审核的范围,进行更彻底的审核,以识别所有类型的依赖项,包括瞬态依赖项。
自动审核
除了手动审核系统之外,您可能还需要将审核设置为自动驾驶。自动化在找出软件任何部分的漏洞方面发挥着关键作用。自动扫描有助于快速发现软件代码中的漏洞,以便在代码投入生产之前解决这些漏洞。软件开发中第三方代码的使用将继续增长,恶意行为者将不断将这些系统作为薄弱环节,对价值链上的软件发起攻击。阻止它们的唯一方法是通过不断审核来持续掌握系统的安全性。
准备软件物料清单
软件物料清单 (SBOM) 已成为确保软件安全和降低供应链风险的关键方法之一。该文档是一种正式的、机器可读的元数据,旨在识别软件包的所有内容。它还详细介绍了其他重要信息,例如构建软件产品中使用的所有组件的许可证数据和版权。
准备物料清单的概念并不是一个全新的概念。从历史上看,它起源于制造业。在这里,每个制造的产品都会获得一份物料清单,作为该产品制造过程中包含的所有物品的库存。
同样的原则也适用于软件供应链风险管理。 SBOM 详细介绍了您从头开始构建的应用程序部分,同时还列出了您从第三方供应商获得的所有部件。这样,当发现漏洞时,您可以轻松追踪其来源。
SBOM 旨在在使用软件组件的各个组织之间共享。这提供了软件供应链中每个人正在使用的所有组件的透明度。作为关心软件安全的组织,您需要优先考虑 SBOM。在向软件产品添加组件之前,从供应商处获取物料清单会有所帮助。这将使应对挑战和安全漏洞变得更加容易。
制定风险管理框架
在降低软件供应链攻击的风险时,采取主动的方法总是比等到攻击发生才更好。通过事先概述可能的攻击场景,您可以了解未来应对这些攻击的准备情况。
作为软件供应链风险管理工作的一部分,您需要开发一种方法来评估攻击者破坏您的系统的可能性。这样,您就可以确定需要采取的预防策略来限制这些风险,以及为解决风险而必须制定的应急计划。
培训组织中的每个人如何应对供应链攻击是风险管理框架的另一个重要部分。这将使每个人都能保持警惕,预测此类攻击,并在发生时做出适当反应。
结语
软件供应链攻击将继续使组织面临各种形式的风险。因此,工程师不能再假设他们用于构建、部署和维护软件应用程序的第三方软件包是安全且得到正确维护的。事实上,软件供应链攻击变得比以前更加普遍的主要原因是在构建软件应用程序时对第三方代码的依赖性增加。为了减轻这些风险,您需要盘点您的软件供应链,并采取措施尽量减少这些威胁对您系统的影响,以防止重大违规行为和随之而来的后果。