跳至正文

软件供应链安全若干优秀实践

软件供应链是指用于构建软件应用程序的组件、库和工具的列表。软件开发商通常通过组装开源和商业软件组件来创建产品。软件开发供应链与传统的实体工厂供应链管理的对象有着本质的区别,软件供应链管理的对象除了软件外包公司这种实体对象以外,还包括大量第三方组织或个人开发维护的开源组件、库和工具这种虚拟对象,其管理的难度和复杂度比传统的供应链管理要大的多。

典型的软件供应链场景

软件供应链面临的问题本文主要从管理对象、攻击者现状、法律合规三个方面进行分析

第三方软件公司的一大特点是作为被管理对象和软件使用组织之间存在着买卖合同。虽然在合同中软件使用组织处于有利地位,但由于合同不能转移安全责任,组织面临的法律风险会增大。

如果第三方软件公司进一步外包软件开发,则会导致整个软件的安全风险成几何倍数增长。软件使用公司对于安全风险的可见性降低,导致安全风险不可控。

典型的供应商关系

软件应用程序开发过程中,为了降本增效更快的满足市场的需求,在开发过程中会引入大量第三方开源组件、库、工具。

软件构成形态

开源产品由于免费的特性,产品缺少相应的安全预算,导致存在大量未知的安全漏洞,开源机构或个人往往不需要为此承担任何责任。软件开发组织作为提供产品服务的责任主体,则必须承担开源组件、库和工具引入的安全、法律合规风险。

主要安全风险

与此同时,近年来针对开源工具的网络攻击增加了650%。Sonatype在《2021年软件供应链的现状》报告中指出,传统软件供应链攻击集中在公开披露的漏洞。在过去3年里攻击者已经改变了攻击策略并且频繁向连接全球供应链的开源项目注入恶意代码。例如log4j2漏洞和solarwinds事件,不乏微软、Twitter、苹果、亚马逊、百度、网易、Cloudflare 等科技巨头中招,这些例子无不彰显着软件供应链安全的重要性。

我国也在重视软件供应链安全问题,不断建立健全法律法规、标准制度。为应对国内外软件供应链安全威胁,近年来我国先后颁布的《中华人民共和国网络安全法》《网络安全审查办法》《中华人民共和国国民经济和社会发展第十四个五年规划和 2035 年远景目标纲要》《关键信息基础设施安全保护条例》等政策法规强调加强软件供应链的安全保障。

近年软件供应链立法

NIST早在2008年就启动了供应链风险管理计划(C-SCRM),并针对不同行业的公司的供应链进行了观察报告,总结了一份供应链风险管理的关键实践的行业观察报告。本文依据NIST SP800-161、NIST网络安全供应链风险管理实践-行业观察、GB/T32926-2016《政府部门信息系统外部信息安全管理规范》、GB/T 36637-2018《信息安全技术 ICT供应链安全风险管理指南》等文档总结了一些软件供应链安全相关的优秀实践。

下面将简要介绍这些优秀实践。

软件开发组织应建立包括来自信息技术、网络安全、运营、法律、企业风险管理等职能领域的高管组成的软件供应链安全风险管理委员会,来积极审查软件供应链的安全风险并制定相应的风险缓解计划,确定优先级。同时还能形成非正式的领导网络,促进软件开发组织在复杂的软件供应链关系中各部门之间的信任、强化问责机制,帮助软件开发组织在供应链安全管理中建立快速响应机制。与此同时也可将软件供应链安全的思想嵌入到企业的整个文化中,有助于企业的不断改进。

建立正式的软件供应链安全管理制度可确保组织在处理软件供应链风险时的一致性,成熟的组织具有正式的计划、政策、程序、流程和工具。诸如:

  • 提供基于标准的程序,和不同业务部门的活动指导手册。
  • 软件开发生命周期中第三方组件、库、工具的使用申请记录。
  • 代码完整性保护。
  • 开发工具安全管理。

软件开发组织应该在内部建立自己的第三方组件、库和工具清单,供开发、测试、运维人员使用,防止软件开发人员、测试人员私自去外部拉取,减少人员安全意识薄弱带来的安全风险。同时也便于软件开发组织对第三方组件、库、工具进行统一管理,漏洞修复等。

SBOM(软件物料清单)是企业使用的所有软件组件的完整列表。SBOM通常由第三方开源库、供应商提供的软件包和企业自己编写的专有软件构成。针对每个应用程序建立SBOM清单主要好处有以下几点:

  • 提高识别易受攻击的软件组件的能力。
  • 减少因供应链复杂性而导致的计划外和低效的工作。
  • 使用通用的标准化格式以减少重复性工作。
  • 协助识别可疑的或假冒的软件组件。

同时SBOM清单可以帮助企业看到正在构建或使用的软件相关的许可证,减少因开源许可带来的知识产权风险。

发表回复