终极指南:软件供应链安全的风险、威胁与缓解措施

本文深入探讨软件供应链安全的核心风险,包括第三方依赖漏洞、凭证管理和CI/CD管道攻击等,并提供了七项关键缓解策略,如采用代码签名、实施最小权限原则和遵循NIST等安全框架,以帮助企业构建安全防线。

软件供应链安全:定义

软件供应链安全涵盖了企业在软件开发生命周期(SDLC)中,为识别、分析和最小化代码开发与部署相关风险而采取的所有行动。

从设计阶段到原型构建,再到最终发布(以及期间的每个阶段),软件供应链安全有助于保护您用于构建应用程序的每一个元素。我们讨论的范围包括保护构建软件应用程序的开发环境,到保护产品本身的完整性。

图片说明:该图展示了软件供应链安全的高层概述。

缺乏安全的软件供应链所带来的持久影响,不仅会波及您的组织,还会影响您的客户和合作伙伴。以下是部分可能的后果……

您的组织必须避免的5种不良软件供应链安全后果

Codecov Bash Uploader、SolarWinds和3CX等事件,仅仅是软件供应链安全失败可能带来灾难性后果的几个例子。供应链中最薄弱的环节可能使您的整个组织、合作伙伴和客户面临一系列灾难性损害的风险。

  • 数据泄露。供应链中的单点漏洞可能产生巨大的连锁反应。根据身份盗窃资源中心(ITRC)的报告,2025年上半年,仅在美国就有690个实体成为供应链攻击的受害者,导致超过7800万个人的敏感数据泄露。这相当于同比增长了11%,创下了历史记录。
  • 财务损失。Gartner预测,到2031年,供应链攻击的成本将达到1380亿美元。当然,您的组织不一定损失如此巨额的金钱,但您仍将面临罚款、业务运营中断和清理工作的后果。
  • 声誉损害。假设您的公司不幸成为供应链攻击的受害者。您知道有多少客户可能会因此与您的品牌断绝关系吗?根据Vercara的《消费者信任与风险报告》,这一比例是70%。重建一个需要多年努力和大量投资才能建立的声誉,将需要投入大量的时间和精力。
  • 法律责任。如果由于您所做(或未做但应该做)的事情导致客户敏感数据泄露,猜猜谁将负责?是您。因此,您可能需要处理因愤怒客户而产生的法律费用,或因违反欧盟《通用数据保护条例》(EU GDPR)等法规而面临的巨额罚款。
  • 运营中断和停机。成功的供应链攻击会扰乱业务运营。它可能迫使您延迟产品发布、重建构件、撤销凭据,甚至使您的网站离线数天。例如,Kaseya攻击迫使该公司及其部分客户关闭服务器或服务数天。

其他可能的负面后果清单还可以继续列下去。但这引出了一个问题:导致这些后果的风险有哪些潜伏在每个公司的视野中?让我们来探究一下。

10种常见的软件供应链安全风险和威胁

软件供应链是攻击者眼中的诱人目标。组件、库、插件、仓库和工具之间的这种相互关联性,使攻击者能够利用单个漏洞,触发大规模的感染和破坏链式反应。

想想您的应用程序就像我们小时候都玩过的积木塔:它们由不同的堆叠积木构成,一个稍微错位的脆弱组件可能会在几秒钟内摧毁整个结构。同样的概念也适用于软件供应链内的漏洞。软件应用程序通常包含开源元素和其他漏洞,这些漏洞为网络犯罪分子提供了可利用的潜在漏洞和供应链入口点。

这些风险和威胁的一些例子包括:

  1. 使用弱凭据和易受攻击的凭据。Solarwinds123——正是这个弱密码使得攻击者能够渗透到SolarWinds不那么安全的软件供应链中。简单、默认或易于猜测的密码可以被推断或暴力破解。一旦攻击者进入,他们就可以造成严重破坏。
  2. 依赖不良的编码实践。恶意行为者喜欢人们忽视编码标准和最佳实践。这使得他们的产品和系统容易被利用。从不安全存储的API密钥到硬编码的凭据,代码仓库对于知道寻找什么的人来说是名副其实的金矿。最近导致供应链攻击的GitHub CodeQL硬编码密钥事件只是最新的例子之一。
  3. 使用第三方依赖项。攻击者可以利用第三方软件更新,通过依赖混淆攻击注入恶意代码。这正是2022年12月PyTorch开源库被入侵并用于发起供应链攻击时发生的情况。威胁行为者诱骗应用程序下载恶意的PyTorch代码,而不是合法的更新。攻击发生在冬季假期期间,此时安全团队不太可能注意到。
  4. 未识别(未解决)的内部威胁。让我们暂时回到SolarWinds攻击。是谁暴露了弱密码?很可能是一名员工。是的。有时员工是公司最大的威胁。事实上,83%的组织报告在2024年至少遭受过一次内部攻击。
  5. 组织内部缺乏安全重点。一些组织不优先考虑安全,而更注重新功能和其它引人注目的焦点。例如,微软多年来忽视了一个关键漏洞,导致其在SolarWinds攻击中被利用。
  6. 缺乏可见性。当您无法清楚了解所有软件供应链组件时,很容易忽略关键漏洞或不合规的依赖项。外部库也是如此。如果您没有正确评估它们,它们可能会引入软件供应链安全风险和缺陷。
  7. 访问控制不足。如果您不限制谁可以访问什么,或者没有方法验证只有合法用户才能访问账户,那么如果员工行为不端或其账户被盗用,您将陷入困境。
  8. 使用不安全的第三方组件和库的漏洞。ReversingLers最近的分析显示,Python包索引(PyPi)库平均每个包有超过149个漏洞,而npm每个包有43.3个此类漏洞。因此,如果您当前正在开发的代码包含PyPi包,请彻底检查它,以免为时已晚。
  9. 不安全的CI/CD流水线。持续集成/持续部署(CI/CD)流水线是网络犯罪分子针对不安全软件供应链的另一个首选目标。他们可以利用它在软件中引入漏洞或恶意代码,一旦在生产环境中发布,就会感染任何使用该应用程序的人。
  10. 依赖开源软件。Black Duck的2025年《开源安全与风险分析》(OSSRA)报告显示,97%的代码库包含开源软件。是的,开源对开发者来说至关重要。然而,报告还指出,86%的受审计应用程序存在开源漏洞,其中81%是高危或严重风险漏洞。所以,请注意。如果您的代码也包含开源组件,这意味着您的安全软件供应链可能面临风险。

图片说明:该图显示了一个易受攻击的组件如何使您整个软件供应链的安全面临风险。

7种保护软件供应链的方法

既然您了解了面临的敌人和最常见威胁的复杂性,是时候采取行动了。您可以实施以下策略,通过有效的风险和威胁缓解措施来增强您的软件供应链安全性。

1. 遵循安全软件开发最佳实践

快速的软件开发不应意味着不安全。因此,虽然您无法阻止一切:

  • 使用由受信任证书颁发机构(CA)颁发的代码签名证书对您的代码进行签名。这将确认您作为软件发布者的身份,并保护您的代码免受篡改。同时要求对所有提交进行代码签名。这将验证贡献者的身份,并有助于保护您的软件供应链免受篡改和滥用。
  • 发布并签署您的软件物料清单(SBOMs)。这份全面的组件和软件依赖项清单将帮助您快速识别和管理软件供应链漏洞和威胁。也不要忘记向您的软件供应商索取SBOM。
  • 使用安全套接字层/传输层安全性(SSL/TLS)证书。使用SSL/TLS证书保护您的Web应用程序、组件、电子邮件和文件传输过程中的数据免受盗窃和篡改。通过实施公钥基础设施(PKI)进行代码库测试和开发,充分利用其功能。

图片说明:该图显示SSL/TLS证书如何为更安全的Docker守护进程套接字以及最终为您的软件供应链做出贡献。

  • 将安全左移。将安全嵌入软件开发生命周期的每一步,从设计阶段到发布和监控。在SDLC早期集成静态分析工具(SAST),以扫描新编写的源代码是否存在漏洞。将其与动态分析工具(DAST)配对,以在测试环境中运行的应用程序内寻找并修复漏洞。
  • 限制对证书和密钥的访问和权限。将您的加密密钥和证书的访问权限限制在仅那些需要此类访问来完成工作的人员(例如,用于代码签名目的)。Sectigo证书管理器允许您一键授予需要访问权限的实体适当的访问级别。
  • 保护您的后端代码。为后端实施访问控制策略。例如,您可以选择易于实施的角色基访问控制(RBAC)来限制谁可以合并和部署代码。或者,您可以通过属性基访问控制(ABAC)使用更精细的方法。

2. 定期进行安全风险评估并更新应对计划

风险评估有助于保护您的软件供应链免受威胁和基于漏洞的攻击。定期进行风险评估,以识别风险并确定处理优先级。因此,采取主动方法并制定全面的策略:

  • 使用软件组成分析(SCA)工具。像OWASP的Dependency-Check和Dependency-Track这样的工具不会花费您一分钱。然而,它们可以通过映射代码依赖关系、标记漏洞和促进许可证合规性来帮助您缓解软件供应链安全风险。
  • 听取专家建议。遵循SAFECOM和国家全州互操作性协调委员会(NCSWIC)的指导。他们的快速指南充满了宝贵的建议和其他有用资源的链接。
  • 抱最好的希望,做最坏的准备。为应对软件供应链安全攻击,准备事件响应、业务连续性和灾难恢复计划。您可以参考多个框架来获取灵感。例如,美国国家标准与技术研究院(NIST)SP 800-61为各种规模的组织提供了详细的指导和推荐。

3. 保护您的凭据、系统和网络

2025年6月,Cybernews研究人员发现了一个包含惊人的160亿被盗凭据的集合,这些凭据可能导致了一次或多次大规模的软件供应链安全事件。因此,请保护您的用户名和密码:

  • 超越传统的用户ID和密码。尽可能实施多因素认证(MFA)或使用从受信任来源(如SectigoStore.com)购买的客户端个人认证证书(即基于证书的身份验证)实现无密码登录。
  • 严格控制对网络和系统的访问。您的人力资源人员通常不需要访问您的SDLC或特定于开发的应用程序和数据库。在大多数情况下,您的合作伙伴和供应商也不需要。始终实施最小权限原则。这样,每个人只能访问他们工作所需的工具和系统。
  • 安全存储您的密码。切勿保存密码。无论是明文还是加密形式。养成在数据库中仅存储加盐密码哈希值的习惯。这样,如果攻击者侵入数据库,他们将得到一串无法使用的乱码,而不是您的敏感数据。

4. 在整个SDLC中实施持续监控和日志记录

即使在部署之后,也要通过持续监控和日志记录为您的软件供应链安全增加另一层保护。

  • 使用供应链风险管理软件(SCRMS)。这些工具提供多项功能,如风险评估和分析、威胁情报、合规性管理和供应商风险管理。它使您能够持续监控供应链安全状况,提醒您注意异常和可疑活动。
  • 通过单一平台监控您的证书和密钥。我们理解——并非所有组织都有技能、时间和资源来管理一切。像Sectigo证书管理器这样的软件通过自动化证书管理、监控和日志记录,一次性减轻您员工的负担。
  • 尽可能跟踪和记录所有内容。记录哪些用户和系统拥有对什么的访问权限、他们的活动以及所做的更改。(这包括代码仓库的修改。)这将使您能够快速识别异常、锁定可疑账户并设置自动警报。
  • 自动化日志分析。在软件开发生命周期早期集成应用检测与响应(ADR)解决方案。这些多层检测工具使用先进的威胁情报技术分析日志,实时识别异常并自动化缓解响应。
  • 监控代码仓库。像GitHub Audit Log和GitLab Activity Feed这样的工具可以帮助您快速检测突然的权限提升或未经授权的访问尝试。
  • 部署入侵检测系统工具(IDS)。除了监控和分析网络流量外,像Suricata和Snort这样的开源工具还利用蜜标(即在您的合法系统中放置虚假秘密)来诱捕威胁行为者。(这与蜜罐不同,蜜罐是诱饵系统。)因此,当攻击者使用蜜标访问您的SDLC或CI/CD流水线时,安全团队会自动收到警报。这不是很好吗?现在他们可以在潜在弱点被利用之前进行修补。

图片说明:该图显示蜜标如何帮助您保护软件供应链。

5. 利用风险管理框架

软件供应链安全框架是帮助您评估风险和确定缓解优先级的基本工具。熟悉关键的供应链安全框架,并选择最适合您需求的框架。

  • NIST网络安全框架:NIST网络安全框架2.0列出了六个关键点,即使对于小型企业,也有助于减少软件供应链安全风险。
  • ISO/IEC 27001:即使ISO/IEC 27001是信息安全管理体系的标准,它也包含了增强组织与供应商之间交换信息安全性的最佳实践,例如供应商审查、合同要求(如SBOM、安全SDLC)和监控。
  • 开放式软件供应链攻击参考(OSC&R):这个全面的开源框架基于著名的MITRE ATT&CK框架。它由曾在Google、GitLab和Check Point软件技术等公司工作的专家专门设计,用于检测、预防和缓解供应链攻击。

图片说明:该图显示了NIST网络安全框架2.0的关键要素。

通过实施这个软件供应链安全框架,您将获得一个以攻击者为中心的视角。它不会让您了解攻击者最深的秘密,但它将帮助您理解他们如何看待和攻击供应链。

6. 保持软件更新并实施漏洞和补丁管理

谁能忘记2017年的Equifax数据泄露事件?它影响了超过1.47亿客户,并给该公司造成了巨大的直接和间接成本。根本原因是什么?一个未修补的漏洞。过时或未打补丁的软件是一场等待发生的灾难。

  • 了解您的漏洞。攻击者知道所有的漏洞;您也应该知道。在整个构建过程中识别、确定优先级并修补已知漏洞,以防止它们成为问题。别忘了首先对补丁进行测试。
  • 监控和更新依赖项。充分利用您的SBOM,并将其转变为动态力量。例如,GitLab允许您将任何SBOM集成到您的SecDevOps工作流程中,并将其与SAST和DAST工具连接。这样,可以持续分析依赖项的漏洞并向开发人员发出警报,从而使攻击者无法利用它们。
  • 谨慎处理自动更新。切勿完全自动化补丁管理和更新。虽然这可能很方便,但也可能带来可怕的后果。选择托管式自动更新过程(例如增量更新)。这样,如果出现问题,您仍然可以控制。

7. 培训并定期测试您的团队

最新的Verizon报告证实,数据泄露中最普遍的环节是我们:人为因素。没错。您可以拥有最好的流程和框架,但如果您的安全团队和普通员工不参与,那么攻击者仍然会得逞。

为了有效保护您的软件供应链,每个人都必须了解情况,并知道自己在软件供应链安全(以及整体网络安全防御)中的角色。这意味着您必须:

  • 培训您的员工。教育您的员工如何识别、响应和报告内部和外部威胁。确保他们熟悉安全流程和最佳实践,最重要的是,确保他们将这些付诸实践。这对您的安全员工和普通员工都适用(尽管不同的员工群体需要不同类型和水平的培训)。
  • 让他们参与进来。鼓励他们定期查看威胁情报和漏洞数据库,例如通用漏洞披露(CVE)数据库和供应商的网站安全公告。允许他们参与社区和论坛,以了解新兴威胁和最佳实践。对于技术性较弱的职位,让这些员工了解常见威胁和漏洞,并提供需要注意的信息。
  • 确保他们理解并遵守隐私和安全法规。教育他们了解可能影响软件供应链安全的相关标准、隐私和安全法律法规(例如GDPR)。向他们展示不合规的严重后果(例如财务损失、声誉受损和运营中断)。
  • 测试员工的知识。教育员工只是迈向软件供应链安全的第一步。通过按照顶级行业专家的建议进行内部软件供应链攻击模拟,来检查他们的理解情况。这将既有意义,又能强化您的安全文化并最小化风险。

有兴趣了解更多关于如何增强软件供应链安全的信息吗?请查阅NIST网络安全供应链管理出版物和OWASP软件供应链安全速查表的完整列表。

关于软件供应链安全风险、威胁与缓解措施的最终思考

我们理解——一次性消化这么多内容确实很多。然而,风险是真实存在的,而且随着人工智能驱动的攻击,风险预计会增加。所以,从基础开始,签署您的代码和SBOM,使用SSL/TLS证书保护您的网络,培训您的团队,然后逐步推进。

采取主动措施,您很快就会发现,在建立强大的安全实践、培养安全意识和利用现代工具和框架之后,您将显著降低暴露于软件供应链安全威胁的风险,并保护您的资产和客户。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计