随着软件技术的发展以及产业形势的变化,我们对软件产品关注的角度也在不断改变——从传统的软件产品质量(如功能、性能效率、兼容性、可靠性等)到软件产品的信息安全(如保密性、完整性、抗抵赖性等),再到目前备受关注的软件供应链安全。2024年7月份的微软“蓝屏”事件,再次引发了人们对软件供应链安全的高度关注。
那么,我们该如何理解软件供应链安全呢?
首先,要了解软件供应链的概念:软件供应链是“需方和供方基于供应关系,开展并完成软件采购、开发、交付、获取、运维和废止等供应活动而形成的网链结构”。
其次,要了解软件供应链常见安全风险:包括软件漏洞、恶意篡改、软件后门、供应链劫持、知识产权违规使用、供应中断、信息泄露等。
再次,要了解软件供应链安全的目标:在确保软件代码安全的基础上,使得用户能够安全、持续、稳定地使用软件产品及软件涉及的支持性服务。
最后,要了解保障软件供应链安全的4个要素(如下图所示):软件代码来源、软件代码安全、软件传播与使用安全、软件创新与演进。
下面将为您详细介绍这4个要素。
掌握软件代码来源
确定软件代码来源是分析软件供应链的基础,可以通过构建软件物料清单(SBOM)明确技术来源,使软件供应链清晰、透明。软件物料清单包含构建软件所使用的各种组件的详细信息及供应链上下游依赖关系。
保证软件代码安全
软件代码安全依赖于软件生产过程及成果物的安全。
一方面,保证软件生产过程(即软件开发)涉及的开发环境(包括各类开发工具、平台)、开发配置、安全功能设计、代码实现与托管、测试、开发人员等因素的安全;
另一方面,保证最终成果物(即软件)的代码质量符合安全要求,即对软件源代码、二进制代码等进行安全检测,查看是否存在病毒、安全漏洞、后门、恶意代码等。
保证软件传播与使用安全
软件的价值在于被广泛传播和使用。软件传播主要从知识产权合规、软件发布与交付2个方面考查其安全性。知识产权合规确保软件的传播不会引入知识产权相关的法律风险,软件发布与交付要确保用户获取的软件不被恶意篡改。软件使用主要从软件的运行环境、升级维护及安全保障3个方面考查其安全性。运行环境包括底层的服务器、虚拟机、容器等,升级维护包括技术支持、版本升级、补丁更新等,安全保障主要从漏洞的发现、影响范围排查、处置、上报、修复等方面进行考查。
增强软件创新与演进能力
软件供应链安全的关键在于对核心技术的掌控,不仅体现在能独立自主研发及实现软件的核心模块或组件,还包括对开源软件中核心代码、核心技术的吸收。因此,可从软件核心模块自主研发能力、核心模块替换方案、定制优化能力、对上游社区的代码维护贡献、社区及产业成熟度等方面衡量软件的创新演进能力。
(摘编自《保密科学技术》2024年2月刊《软件供应链安全能力模型研究》一文,作者: 翟艳芬、袁薇、王郁)