软件供应链安全终极指南:风险、威胁与缓解策略
2025年7月,一个每周下载量超过2800万次的核心npm软件包遭到入侵,数百万个项目及开发环境面临风险。本文将指导您如何提升软件供应链安全态势,避免类似命运。
您的组织上一次从零开始构建应用程序是什么时候?想必已有一段时间了。为了保持竞争力,软件发行商必须快速部署代码,他们没有时间逐比特地编写代码。
于是,软件供应链应运而生。其中的构建模块、开源库和开发工具使企业能够快速完成原型设计、开发和代码发布。如果您使用AI,速度会更快。
这听起来是完美的解决方案,对吧?那么,为什么最新的SecurityScorecard报告称88%的网络安全领导者担忧软件供应链安全风险?因为软件供应链对企业而言是一把双刃剑。
软件供应链加速了应用程序交付。然而,日益增长的复杂性以及对开源组件、第三方服务和自动化构建系统的依赖引入了新的漏洞。因此,软件开发生命周期的每个阶段都成为一个潜在的攻击向量。
在本终极指南中,您将了解关于顶级软件供应链风险、威胁以及如何缓解它们所需的一切知识。
软件供应链安全:定义
软件供应链安全涵盖了企业在软件开发生命周期(SDLC)中,为识别、分析和最小化代码开发和部署所涉及的风险而采取的所有行动。
从设计阶段到原型制作,再到最终发布(以及其间的每个阶段),软件供应链安全帮助您保护用于构建应用程序的每一个元素。我们讨论的是从保护构建软件应用程序的开发环境到保护产品本身完整性的方方面面。
图片说明:该图展示了软件供应链安全的高层概览。
缺乏安全软件供应链的持久后果可能不仅影响您的组织,还会波及您的客户和合作伙伴。以下是其中几种影响方式……
您的组织必须避免的5个不良软件供应链安全后果
Codecov Bash Uploader、SolarWinds和3CX只是软件供应链安全失败可能带来灾难性后果的几个例子。供应链中最薄弱的环节可能使您的整个组织、合作伙伴和客户面临遭受一系列灾难性损害的风险。
- 数据泄露。 供应链中的单次违规可能产生巨大的连锁反应。根据身份盗窃资源中心(ITRC)的报告,2025年上半年,仅在美国就有690个实体成为供应链攻击的受害者,泄露了超过7800万个人的敏感数据。这相当于同比增长了11%,创下历史新高。
- 财务损失。 Gartner预测,到2031年,供应链攻击的成本将达到1380亿美元。好吧,虽然您的组织不一定会损失如此巨额的金钱,但您仍将通过罚款、业务运营中断和善后工作来承担后果。
- 声誉损害。 假设您非常不幸,公司成为了供应链攻击的受害者。您知道有多少客户可能会与您的品牌断绝关系吗?根据Vercara的《消费者信任与风险报告》,这个比例是70%。重建一个花费多年辛勤工作和大量投资建立的声誉,将需要投入大量的时间和精力。
- 法律责任。 猜猜看,如果由于您所做(或未做但本应做)的事情导致客户敏感数据泄露,谁将承担责任?是您。因此,您可能不得不处理愤怒客户带来的法律费用,或因违反欧盟《通用数据保护条例》(EU GDPR)等法规而面临巨额罚款。
- 运营中断和停机。 一次成功的供应链攻击会扰乱业务运营。它可能迫使您延迟产品发布、重建工件、撤销凭证,甚至让您的网站离线数天。例如,Kaseya攻击迫使该公司及其部分客户关闭服务器或服务数天。
其他可能的负面后果不胜枚举。但这引出了一个问题:导致这些后果的、笼罩在每个公司地平线上的风险有哪些?让我们一探究竟。
影响您软件供应链安全的10个常见风险与威胁
软件供应链是坏家伙们垂涎的目标。组件、库、插件、仓库和工具之间的这种互连性,使攻击者能够利用单一漏洞,引发感染和入侵的雪崩式蔓延。
把您的应用程序想象成我们儿时都玩过的积木塔:它们由不同的积木块堆叠而成,一个略微错位的脆弱组件可能在几秒钟内摧毁整个结构。同样的概念适用于软件供应链内的漏洞。软件应用程序通常包含开源元素和其他漏洞,为网络犯罪分子提供了可利用的潜在漏洞和供应链入口点。
这些风险和威胁的一些例子包括:
- 使用弱凭证和易受攻击的凭证。 Solarwinds123——正是这个弱密码让攻击者得以入侵SolarWinds不那么安全的软件供应链。简单、默认或容易猜测的密码可能被推断或暴力破解。一旦攻击者进入,他们就可以肆意破坏。
- 依赖不良编码实践。 恶意行为者喜欢人们忽视编码标准和最佳实践。这使得他们的产品和系统容易被利用。从不安全存储的API密钥到硬编码的凭证,代码仓库对于那些知道该寻找什么的坏家伙来说是名副其实的金矿。最近导致供应链攻击的GitHub CodeQL硬编码秘密事件只是最新的例子之一。
- 使用第三方依赖。 攻击者可以利用第三方软件更新,通过依赖混淆攻击注入恶意代码。这正是2022年12月PyTorch开源库被入侵并用于发起供应链攻击时发生的情况。威胁行为者诱使应用程序下载恶意的PyTorch代码,而不是合法的更新。攻击发生在冬季假期期间,此时安全团队不太可能注意到。
- 未被识别(或未解决)的内部威胁。 让我们暂时回到SolarWinds攻击。是谁暴露了弱密码?很可能是一名员工。是的,有时员工是公司最大的威胁。事实上,2024年83%的组织报告称至少遭受过一次内部攻击。
- 组织内部缺乏安全关注点。 一些组织不优先考虑安全,而是关注新功能和其他花哨的东西。例如,微软多年来忽视了一个关键漏洞,导致其在SolarWinds攻击中被利用。
- 缺乏可见性。 如果您对所有软件供应链组件没有清晰的视图,很容易忽视关键漏洞或不合规的依赖项。外部库也是如此。如果评估不当,它们可能会引入软件供应链安全风险和缺陷。
- 访问控制不足。 如果您不限制谁可以访问什么,或者没有验证只有合法用户才能访问账户的手段,那么如果有员工变节或其账户被入侵,您将面临巨大的麻烦。
- 使用不安全的第三方组件和库的漏洞。 ReversingLers最近的分析显示,Python包索引(PyPi)库平均每个包有超过149个漏洞,而npm每个包有43.3个此类漏洞。因此,如果您正在开发的代码包含PyPi包,请在为时已晚之前彻底检查它。
- 不安全的CI/CD管道。 持续集成/持续部署(CI/CD)管道是网络犯罪分子攻击不安全软件供应链的另一个最爱目标。他们可以利用它向软件中引入漏洞或恶意代码,一旦发布到生产环境,就会感染任何使用该应用程序的人。
- 依赖开源软件。 Black Duck的2025年开源安全与风险分析(OSSRA)报告显示,97%的代码库包含开源软件。是的,开源对开发者来说至关重要。然而,报告还指出,86%的受审计应用程序存在开源漏洞,其中81%是高危或严重风险漏洞。所以,请小心。如果您的代码也包含开源组件,意味着您安全的软件供应链可能面临风险。
图片说明:该图展示了脆弱的组件如何危及您整个软件供应链的安全。
7种方法保护您的软件供应链
既然您了解了您的敌人以及您面临的最常见威胁的复杂性,现在是时候采取行动了。您可以实施以下策略来增强软件供应链安全。
1. 遵循安全的软件开发最佳实践
快速的软件开发不应意味着不安全。虽然您无法预防一切,但可以做到:
- 使用受信任的证书颁发机构(CA)颁发的代码签名证书对您的代码进行签名。 这将确认您作为软件发行商的身份,并保护您的代码免受篡改。同时,要求对所有提交进行代码签名。这将验证贡献者的身份,并有助于保护您的软件供应链免受篡改和滥用。
- 签发并签署您的软件物料清单(SBOM)。 这份组件和软件依赖项的全面列表将帮助您快速识别和管理软件供应链漏洞与威胁。也不要忘记向您的软件供应商索取。
- 使用安全套接字层/传输层安全性(SSL/TLS)证书。 使用SSL/TLS证书保护您的Web应用程序、组件、电子邮件和文件传输过程中的数据,防止被盗和篡改。通过实施公钥基础设施(PKI)来利用它们的力量,用于代码库测试和开发。
图片说明:该图展示了SSL/TLS证书如何帮助保护Docker Daemon套接字,并最终保护您的软件供应链。
- 左移安全。 将安全嵌入软件开发生命周期的每一步,从设计阶段到发布和监控。在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列出了六个关键点,即使您是一家小型企业,也有助于降低软件供应链安全风险。
图片说明:该图展示了NIST网络安全框架2.0的关键要素。
ISO/IEC 27001
即使ISO/IEC 27001是信息安全管理系统的标准,它也包含了增强组织与供应商之间信息交换安全性的最佳实践,例如供应商审查、合同要求(例如SBOM、安全SDLC)和监控。
开放软件供应链攻击参考(OSC&R)
这个全面的开源框架基于著名的MITRE ATT&CK框架。它由曾在Google、GitLab和Check Point软件技术等公司工作的专家专门设计,用于检测、预防和缓解供应链攻击。
通过实施这个软件供应链安全框架,您将获得黑客中心的视角。它不会让您了解攻击者最深的秘密,但会帮助您理解他们如何看待和瞄准供应链。
6. 保持软件更新并实施漏洞和补丁管理
谁能忘记2017年的Equifax数据泄露事件?它影响了超过1.47亿客户,并给公司带来了巨大的直接和间接成本。根本原因是什么?一个未打补丁的漏洞。过时或未打补丁的软件是等待发生的灾难。
- 了解您的漏洞。 坏家伙们知道所有漏洞;您也应该知道。在构建过程中识别、优先处理和修补已知漏洞,以防止它们成为问题。不要忘记先进行测试。
- 监控和更新依赖项。 充分利用您的SBOM,将其转化为一种动态力量。例如,GitLab允许您将任何SBOM集成到SecDevOps工作流中,并将其与SAST和DAST工具连接起来。这样,依赖项会持续分析漏洞并提醒开发人员,从而使攻击者无法利用它们。
- 谨慎处理自动更新。 切勿完全自动化补丁管理和更新。虽然这很方便,但也可能带来严重后果。选择托管式自动更新流程(例如增量更新)。这样,如果出现问题,您仍然可以控制。
7. 培训并定期测试您的团队
最新的Verizon报告证实,数据泄露中最普遍的环节是:人为因素。没错。您可以拥有最好的流程和框架,但如果您的安全团队和普通员工不配合,攻击者仍然会得逞。
要有效保护您的软件供应链,每个人都必须知情,并了解他们在您的软件供应链安全(以及整体网络安全防御)中的角色。这意味着您必须:
- 培训您的员工。 教育您的员工如何识别、响应和报告内部及外部威胁。确保他们熟悉安全流程和最佳实践,最重要的是,他们将其付诸实践。这对您的安全人员和普通员工都适用(尽管不同员工群体需要不同类型和级别的培训)。
- 让他们参与其中。 鼓励他们定期查看常见漏洞与暴露(CVE)数据库和供应商网站安全公告等威胁情报和漏洞数据库。允许他们参与社区和论坛,以了解新兴威胁和最佳实践。对于技术性较低的岗位,请向这些员工通报常见威胁和漏洞,让他们知道需要注意什么。
- 确保他们理解并遵守隐私和安全法规。 教育他们了解可能影响您软件供应链安全的相关标准、隐私和安全法律法规(例如GDPR)。向他们展示不合规的严重后果(例如财务损失、声誉受损和运营中断)。
- 测试员工的知识。 培训员工只是迈向软件供应链安全的第一步。通过进行顶级行业专家建议的内部软件供应链攻击模拟,检查他们的理解情况。这将很有趣,同时也会强化您的安全文化并最大限度地降低风险。
有兴趣了解更多关于如何增强软件供应链安全的信息吗?请查看完整的NIST网络安全供应链管理出版物列表和OWASP的软件供应链安全备忘单。
关于软件供应链安全风险、威胁与缓解终极指南的最终思考
我们理解——一次消化这么多内容很困难。然而,风险是真实存在的,而且随着AI驱动的攻击,这些风险预计会增加。所以,从基础开始,签署您的代码和SBOM,使用SSL/TLS证书保护您的网络,培训您的团队,然后逐步深入。
保持主动,您很快会发现,在建立了强大的安全实践、培养了安全意识文化并利用了现代工具和框架之后,您已经显著降低了对软件供应链安全威胁的暴露,并保护了您的资产和客户。