供应链攻击是一种面向软件开发人员和供应商的新兴威胁,目标是通过感染合法应用分发恶意软件来访问源代码、构建过程或更新机制。
供应链攻击是威胁行为者通过利用软件供应链中的漏洞进入组织网络的一种网络攻击,供应链攻击的目标可以是软件开发过程中的源代码、编译器、软件库、第三方组件等,也可以是硬件设备、网络设备、供应商提供的服务等。攻击者可以通过篡改软件代码或插入恶意代码来实现数据窃取、远程控制、拒绝服务等攻击行为。
供应链攻击的来源
供应链攻击源自各种来源,大致可分为三大类。
- 第三方软件
- 开源软件
- 国外软件
第三方软件
商业软件供应商和外部业务合作伙伴是无法渗透到具有安全意识的公司的对手的潜在目标,通过将恶意代码安装到第三方软件中,攻击者可以轻松访问客户的网络并访问内部数据。例如,组织依靠安全解决方案提供商的渗透测试工具进行安全测试,而这些工具本身可以用作恶意软件的载体来破坏组织的安全性。由于第三方软件在供应链攻击中占主导地位,这些攻击也被称为第三方攻击。
开源软件
并非所有软件都是从头开始编写的,大多数企业依靠开源软件来开发其专有代码,一些开源社区为所有用户(包括潜在的对手)提供免费访问。这为威胁行为者提供了在现有开源软件中引入恶意脚本和创建漏洞的轻松访问。当合法用户在其脚本中部署此类被篡改的源代码时,感染会传播到他们的软件并破坏其网络中易受攻击的资源。
国外软件
一些国家/地区批准将恶意组件部署到其他国家/地区购买的合法供应商软件中,这种类型的供应链攻击是一种手段网络恐怖主义,会造成巨大威胁。
供应链攻击的类型
- 跳岛攻击
- 恶意软件攻击
- 预安装恶意软件攻击
- 代码注入攻击
- Magecart 攻击
- 被盗代码签名证书攻击
- 水坑攻击
- 加密劫持
跳岛攻击
跳岛攻击是第三方攻击的一种形式,即对手通过迂回路线攻击具有复杂网络安全的高端目标。由于攻击者无法克服目标严密的安全防御,他们就会利用其软件供应链中的薄弱环节。他们伤害目标供应链中脆弱的供应商和第三方,以获得对目标网络的初始访问权限并破坏资源。在某种程度上,对手从一个组织跳到另一个组织,所以这种攻击被称为跳岛攻击。
恶意软件攻击
在这种类型的攻击中,威胁参与者通过利用其软件产品中的漏洞直接针对受害组织,通过在软件的构建周期中引入恶意软件,攻击者在下游供应链中打开后门,并且所有下载该产品的目标组织的客户都成为攻击者的牺牲品。
预安装恶意软件攻击
这也是一种第三方攻击,攻击者在第三方的网络设备或其他电子设备上安装恶意软件,对目标组织造成困扰,受害的第三方和目标都不知道这种渗透,直到恶意软件慢慢地悄悄地接管了目标的网络。
代码注入攻击
代码注入是一种针对开源代码存储库和库的开源攻击形式,通过将恶意代码注入代码库和存储库,攻击者将访问此类存储库的所有合法用户作为目标。在用户设备上自动执行代码的 JavaScript 库是攻击者的主要目标之一。
Magecart 攻击
Magecart攻击,也称为表单劫持,是一种代码注入攻击,主要针对处理支付方式的第三方。在这种攻击中,黑客将恶意代码注入 JavaScript 代码以接管网站并从用户填写的结帐表单中略过敏感的财务详细信息。
被盗代码签名证书攻击
代码签名证书用于评估软件产品的真实性和完整性,威胁行为者通过破坏合法所有者的私钥来窃取此类证书,然后,攻击者分发带有恶意软件的软件以及被盗的代码签名证书,以引诱用户下载恶意软件。
水坑攻击
流量大的网站是这类供应链攻击的主要目标,网站是供应链的最后一个窗口,是安装和下载软件产品的媒介。通过识别网站架构中的漏洞并嵌入恶意链接,攻击者引诱最终用户打开后门进行恶意执行。这种攻击的命名参考了隐藏在水坑(网站漏洞)附近的捕食者(攻击者),以便在适当的时候扑向猎物(受害者)。
加密劫持
加密劫持是另一种形式的供应链攻击,攻击者利用用户的计算资源来挖掘加密货币,大多数加密劫持攻击都是使用受感染的网站进行的,攻击者通过在网站架构的HTML代码中注入恶意命令来破坏网站。每当用户打开这样的网站,挖矿程序就会自动执行,用户的资源就会在用户不知情的情况下耗尽。
如何检测和预防供应链攻击
精心规划的产品开发流程,也可以称为软件开发生命周期(SDLC),是保护供应链的首要步骤。让我们深入了解 SDLC 的不同阶段,并揭示在每个阶段检测和防止供应链攻击的不同技术。
- 规划阶段防御
- 设计阶段防御
- 实施阶段防御
- 测试阶段防御
- 部署阶段防御
- 维护阶段防御
规划阶段防御
这是 SDLC 的第一阶段,是建立用于开发软件的基础设施的阶段。在这个阶段,组织主要关注资源的可用性、采购和分配。在此阶段防御供应链攻击的一些最佳实践包括:
- 创建一个软件物料清单,这是 SDLC 中涉及的所有资源和流程的记录,用于跟踪流程中的所有活动。
- 实现零信任模型验证 SDLC 中涉及的所有依赖项和第三方。
- 使用全面的威胁建模识别基础结构所有组件中可能阻碍 SDLC 的威胁和漏洞。
- 对 SDLC 中的已知威胁和漏洞进行分类,以制定适当的计划事件响应来抵消它们。
设计阶段防御
设计是产品开始成形的阶段,它涉及开发原型的一套单独的程序。阶段产品所需的软件依赖关系也在此阶段确定。简单地说,这是挑选和集成能够满足最终产品目的的合适第三方解决方案的阶段。一些值得注意的实践可以捍卫这一阶段的SDLC:
- 建立一个验证过程来评估供应商组织的安全状态。
- 评估供应商产品的风险水平和可信度。
- 执行网络分段,以限制第三方访问内部资源的半径。
- 对所有第三方实施最小特权原则,使其只能执行允许的操作。
实施阶段防御
实施阶段是执行阶段,DevOps团队由软件开发人员和IT操作员组成,在此过程中发挥着至关重要的作用。在此阶段,软件使用代码进行编程,此代码可以是专有的,也可以是开源的。此外,此过程还可以依赖于第三方编码平台来运行和执行代码。因此,这个阶段涉及大量的内部和外部合作。在 SDLC 的这一阶段,防御供应链攻击的最佳实践包括:
- 部署强代码完整性策略限制未经授权执行代码依赖项。
- 评估开源代码内联沙盒过滤掉未知威胁和漏洞的工具。
- 用客户端保护工具,同时利用第三方服务提供商提供的服务。
- 审计影子 IT 基础设施,这涉及 DevOps 团队在未经 IT 部门批准的情况下使用的未经授权的资源。
测试阶段防御
测试阶段确保了所开发软件的质量,在这里,代码被执行并检查是否存在错误、故障和漏洞,此阶段还涉及渗透测试和沙盒的第三方协作。在此阶段防止供应链攻击的一些最佳实践包括:
- 创建内部渗透测试避免依赖第三方工具的工具。
- 识别并缓解所有漏洞以防止零日漏洞和漏洞利用。
部署阶段防御
部署是使用代码签名证书对测试的软件进行验证和证明的阶段,并通过网站将其作为软件包或服务提供给最终用户。此阶段对于保护至关重要,因为攻击者可能会窃取代码签名证书以创建虚假身份并引诱用户下载恶意软件,或者他们可能会利用网站 JavaScript 中的漏洞嵌入恶意代码。在此阶段防御供应链攻击的一些值得注意的步骤是:
- 实施改善,这是软件部署管道中的持续开发和改进。
- 整合安全团队与开发团队一起保护代码签名证书和 JavaScript 存储库。
- 实现服务器端保护检查所有下载请求和网站流量的解决方案。
维护阶段防御
这是 SDLC 的最后阶段,其重点是产品在部署后的无缝和高效运行,这是产品不断改进以满足最终用户要求的阶段。它涉及频繁的错误修复、软件更新和漏洞补丁。虽然此阶段标志着 SDLC 的结束,但如果不定期使用更新和修复,它也可能标志着重大安全漏洞的开始。在 SDLC 的这一阶段,保护供应链的一些做法包括:
- 建立一个有效的软件资产清单跟踪软件的所有更新和升级。
- 实现安全的工作流程定期应用安全补丁和软件更新。
- 使用多因素身份验证限制对软件内部版本、代码存储库和库的未经授权的访问。
Log360 是统一 SIEM 解决方案,由不同的模块组成,可帮助您保护网络。尽管网络安全很复杂,但供应链攻击仍能够对您的网络造成有害影响,它残酷地利用了各种依赖关系之间的相互信任,而这些依赖关系在 SDLC 中是必不可少的。因此,通过在 SDLC 的每个阶段实施上述最佳实践来防范供应链攻击。