供应链攻击:保护软件供应链的 6 个步骤 | IDCF
共 5129字,需浏览 11分钟
·
2022-02-22 15:30
来源:云原生技术爱好者社区 作者:MACKENZIE
本文着眼于软件供应链攻击,它们究竟是什么,以及您可以遵循的 6 个步骤来保护您的软件供应链并限制供应链攻击的影响。
在过去几年中,我们看到软件供应链攻击大幅增加。什么是供应链攻击?这是一种网络安全攻击,攻击者将恶意代码或组件放入受信任的软件或硬件中。这种攻击的目标是能够渗透到受影响组件链下游的组织。
在最近的历史中,供应链攻击的重点一直是受损的硬件,但随着一些引人注目的事件发生,我们已经看到话题转向了软件。本文将专门研究与软件相关的供应链攻击,并使用最近的示例来展示公司可以采取哪些措施来保护自己免受此类攻击。
一、软件供应链
要理解这种类型的攻击,我们需要熟悉当今应用程序不是单一软件的概念。它们由数百个构建块、开源库和包、SaaS 工具、DevOps 系统、云基础设施等组成。这变得更加复杂,因为这些构建块中的每一个也是由许多不同的构建块构建而成的。如果您分层考虑这一点,一个软件可能有数百层深,每个组件都有依赖关系,直到您一直深入到 CPU 指令集。您经常会听到开发人员使用的一句话,“全都是乌龟”。这是一个描述无限回归问题的表达,指的是海龟无限地站在对方的背上。转化为软件,我们在软件供应链中面临的一些问题和对与软件供应链相关的无限范围问题的看法。
“世界每天都在变得越来越互联,但在安全方面,我们的行为不像它的互联”
使供应链攻击如此令人担忧的是,受其影响的组织往往无力阻止它。您可以控制源代码,可以控制您选择使用的组件和工具,但几乎无法控制他们依赖的组件和工具。如果您承认 100% 安全或“不可破解”是不可能的,那么即使您非常小心地处理软件供应链中的元素,您也永远无法消除供应链攻击的风险。但是,您可以降低风险,在本文中,我们将介绍您可以采取的 6 个步骤来限制此类攻击的风险和损害。
以下是供应链中多个攻击面的示例:
(供应链中多个攻击面的示例)
我们想要一个完全免疫的供应链,但实际上它是不存在的。
二、供应链攻击的最新例子
有许多不同类型的软件供应链攻击针对不同的组件以在组织中立足。为了更好的理解,我们将查看最近三个不同类型的此类攻击的示例。
2.1 SolarWinds - 通过具有特权访问权限的受信任系统进行攻击
(SolarWinds 供应链攻击)
如果不提及 SolarWinds 攻击,那么就无法撰写关于供应链攻击的文章。它已成为它们所代表的危险的典型代表。在 SolarWinds 的案例中,攻击使用了具有提升权限的 IT 基础设施监控. 这种攻击是最糟糕的情况之一,受感染的系统不仅被数以万计的高端客户端所使用。
例如在军队和政府内的其他领域,名为 SolarWinds Orion 的目标早在 2019 年 9 月就遭到入侵,因为该软件在网络上具有管理员级别的访问权限,所以可以随意进行软件安装。攻击者用于测试漏洞的第一批代码痕迹于 2019 年 10 月被注入。直到 2020 年 2 月,被称为 Sunburst 的恶意代码才被注入, 被注入到 Orion 软件中,并于 3 月开始部署到其 18,000 名用户。
Orion 代码中的 Sunburst 攻击为攻击者提供了进入 SolarWinds 客户的后门,其中一些受影响的客户包括国土安全部、国家商务和财政部、FireEye、微软、英特尔、思科和德勤等。
通过以 SolarWinds 软件为目标并利用安全漏洞(仍在争论中),攻击者能够访问世界上一些最受保护的组织。其中许多组织被认为是“不可入侵的”(尽管任何称职的安全专家都会告诉您这是不可能的),或者至少拥有最先进的安全保护措施。但是,通过利用他们拥有特权访问权限的部分供应链,他们能够渗透到这些不可攻击的组织中,并在很长一段时间内不被发现,从而绕过防御点。
2.2 Codecov - 通过软件部署和测试工具进行攻击
(CodeCov 供应链攻击)
接下来,我们将研究软件部署工具中的攻击,特别是 CI/CD 环境。如果您不熟悉 CI/CD(持续集成/持续部署)流程,我可以进一步进行解释,它是一个可以在软件自动部署之前进行自动测试的过程。这已成为软件供应链的基本组成部分,组织利用许多不同的工具来测试他们的软件,这通常发生在每次将新代码推送到代码存储库的生产分支(以及其他分支)时。
Codecov 再次被成千上万的客户使用,这是一种代码覆盖工具,可让用户了解在 CI 环境中测试了多少应用程序。由于此工具位于 CI 环境中,因此它可以访问应用程序在测试时使用的机密(或凭据)。例如,它需要访问数据库、第三方服务和代码存储库,以便测试应用程序。
在 Codecov 的例子中,攻击者首先能够访问 Codecov 的私有代码库,并将恶意代码注入到他们的源代码中。这个恶意代码只有一行,做了一些非常简单的事情:它获取 CI 环境中的机密(例如 git 令牌)并将它们发送到攻击者的远程服务器。或者更简单地说,它将用于构建和测试应用程序的凭据提供给攻击者。这允许攻击者访问许多 Codecov 客户的私有代码存储库,包括 Twilio Rapid7、HashiCorp 和 Monday.com 等。私有代码存储库已成为攻击者的高价值目标,因为它们通常包含包括机密在内的敏感信息。在某些情况下,通过正确的访问,攻击者甚至可以使用这些令牌注入恶意代码。
2.3 EventStream - 通过软件依赖进行攻击
(开源依赖供应链攻击)
在最近一次供应链攻击的最后一个示例中,我们将研究开源依赖项。几乎所有现代软件应用程序都使用开源依赖项。Synopsys 的一项研究表明,91% 的现代应用程序实际上是开源代码。能够使用这个开源代码非常有帮助,因为这意味着工程师不需要为他们构建的每个应用程序重新设计组件,而是可以专注于它们的独特价值。如果攻击者可以破坏下游依赖项,那么他们就可以实现初始访问的关键步骤。
EventStream 就是一个很好的例子。这个包是一个工具包,可以让流在 Node.js 中更容易实现,它非常受欢迎,被数以百万计的应用程序使用。但是,这个 EventStream 本身有依赖项,包括一个名为 Flatmap 的模块。在这种情况下,攻击者伪装成 FlatMap 的维护者并最终获得了开源模块的所有权。攻击者随后将恶意代码注入模块,将其变成攻击下游用户的武器。它还为他们提供了进入 EventStream 并最终进入 EventStream 用户的后门。因此,攻击者能够通过破坏依赖项的依赖项来访问目标用户。
三、如何防止供应链攻击
现在我们了解了供应链攻击可能发生的一些不同方式,让我们看看我们如何加强我们的供应链并保护自己免受攻击。这些类型的攻击的困难在于,虽然您可以采取措施保护自己,但很多时候您仅仅是一名乘客而已。
3.1 仅在您的应用程序中使用受信任的依赖项
在选择在您的应用程序中使用哪些依赖项和模块时,您必须确保您使用的软件:
维护良好,持续跟踪更新记录,这可确保对发现的任何漏洞进行研究并更新补丁。它还降低了恶意维护者注入恶意代码的风险。 拼写错误!有一种称为类型占用的攻击,其中恶意行为者会拼错流行的开源依赖项,通常,该模块将执行与原始模块相同的工作,因此不会引起怀疑,但具有额外的好处恶意代码也是如此。
来自 Snyk 的开发者倡导者 Liran Tal 表示,发现、报告和修补漏洞大约需要 60 天的时间。
VLAN 网络分段:这涉及在具有 VLAN 或子网的网络中创建分段,使用 IP 地址进行分区。 防火墙分段:网段内的防火墙限制攻击面并防止威胁传播。由于这种方法需要数千条防火墙规则,因此给系统带来了相当大的复杂性和成本。 使用软件定义网络进行分段:基于 SDN 的网络分段支持更高的自动化和可编程性。但是,它较少关注安全可见性,而更多地关注网络策略实施。 微分段:该技术使用主机工作负载来实施分段网络,并使用白名单模型来阻止除允许之外的所有流量。
四、总结
#规模化敏捷联合作战沙盘之「乌托邦计划」,玩乐高,学敏捷,将“多团队敏捷协同”基因内化在研发流程中,为规模化提升研发效能保驾护航!!🏰
2022年社区开年赋能计划,#DevOps黑客马拉松 和 #规模化敏捷联合作战沙盘之「乌托邦计划」两大公开课,将在北京、上海、深圳、大连、成都等多个城市开启
企业组队参赛&个人参赛均可,赶紧上车~👇