郭雪,中国信通院云大所开源和软件安全部副主任
我从2015年开始做开源,到了2020年从开源往上追溯看到软件安全更多的内容,但当前的软件安全现状,大家更多关注渗透测试、代码审计的内容,而针对软件透明度跟踪比较少,所以我从开源入口开始关注到软件供应链安全当前存在的问题。
软件供应链安全研究背景
接下来我将以信通院的角度来说说什么是软件供应链安全,以及需要怎么做。由于近年来软件供应链安全事件频发,对于用户隐私、财产安全乃至国家安全造成了重大威胁。软件成为社会运转组件的同时,软件供应链安全也直接关系着关键基础设施和重要信息系统安全,使得保障软件供应链安全已然成为业界关注焦点。
目前企业软件供应链安全管理能力尚未完全建立,而软件供应链安全攻击事件在逐年飞速增长。据欧盟网络安全局(ENISA)2021 年 7 月发布的《供应链攻击威胁局势报告》显示,预计 2021 年的供应链攻击数量将增加至上一年的四倍之多。《2021 年软件供应链安全报告》显示,425 名大型企业的 IT、安全和 DevOps 主管中,64% 的人报告称去年受到了供应链攻击的影响。
根据 Cloudbees 2021 年发布的《全球首席级高管安全调查》数据显示,针对 500 名首席级高管进行的企业软件供应链状况调查,大约 45% 的受访者认为,在通过代码签名、工件管理和限制仅依赖可信注册机构等措施保护软件供应链方面,他们的工作只完成了一半,同时假设受访企业的软件供应链受到攻击,64% 的高管不知道应该先求助于谁。
以上可以看到问题的两个矛盾:
- 软件供应链安全事件频发;
- 大家不知道如何去做。
基于这个背景,信通院于 2020 年开展了相关的研究,参考美国国防部以及 Linux 基金会等给出的软件供应链安全的概念,软件供应链安全可以理解为:指软件供应链上软件设计与开发的各个阶段中来自本身的编码过程、工具、设备或供应链上游的代码、模块和服务的安全,以及软件交付渠道及使用过程安全的总和。
举个例子:牛奶,不知道奶源是哪,是哪个奶厂出厂,但经过实验发现,给小白兔喝没生病,给小老鼠喝没生病,从结果的角度上说软件安全。而软件供应链安全相当于这个牛奶标明了奶源是哪奶厂,是哪,生产日期等等,其本质就是软件的透明度。去做上游的可追溯,供应过程透明以及交付过程的安全。
可以看到软件供应链攻击有几个特性:
- 攻击门槛低;
- 隐蔽性强;
- 影响范围广。
导致软件供应链安全面临五大挑战:
- 设计开发复杂化导致漏洞产生;
- 开源引入存在安全风险;
- 快速交付致使安全验证周期缩短;
- 交付机制面临安全隐患;
- 使用阶段补丁安全存疑。
软件供应链安全标准体系
信通院围绕软件供应链安全标准体系在逐步完善。针对引入和交付过程研制了软件供应链安全管理成熟度模型的标准,其重点是在上游和下游交接过程中;针对安全生产产物,有研发运营安全的成熟度模型;针对下游交付的产品,有产品的标准。最后为了实现整个软件供应链的安全,需要有一整套工具链。
软件供应链安全生态建设
这部分将针对以上说到的三种标准进行解读。
1、软件供应链安全管理能力
软件供应链安全管理能力包含针对用户侧企业,考察软件供应链安全管理机制、供应链上游、开发链和供应链下游的全链路安全管理能力。第一个过程就是供应链上游,共有 4 部分组成:商业产品、开源、外包服务、云服务。其中大家对于商业采购、外包服务,包括银保监单独发的外包服务商的管理要求,都有相应成熟的管理规范,唯独开源这部分较弱。
在 2015 年时我自己做开源的时候,去跟某家金融机构交流,询问用了多少开源?回应零开源。当然我很震惊,这表现出大家对开源的使用并不了解、不掌握。近几年来变化很大,今年院里还做了一个调研,针对 60 多家金融机构,大概 40% 多的金融机构说自己开源软件组件的使用量过千,还有很多大的金融机构承认自己开源组件的使用量达到了上万,这说明已经开始使用检测工具进行开源的资产管理了。
针对软件供应链管理,其实大家都还在摸索,很多是安全部门尝试牵头,但是牵头起来有很大难度。因为其中涉及到采购、商业产品、外包服务商的管理,这就需要跟采购部门拉通,跟法务团队拉通,这种情况下有一些企业会专门建立虚拟团队。同时还有几方面很大的问题:一方面是物料清单,另一方面是老旧系统怎么去做软件供应链管理。
2、可信研发运营安全能力
研发运营安全主要针对安全开发,需要进行安全左移,需求、研发阶段便进行安全介入,从源头处降低安全风险,实现主动式安全防御,构建覆盖软件应用服务全生命周期的安全体系框架势在必行。这块标准主要是 SDL 以及 DevSecOps 内容的结合,从要求需求设计、开发、验证、发布运营下线全套过程的这个安全应该如何介入?列出了一些管理制度和这个组织架构的要求。
研发运营安全的标准在实现中也存在一些难点,例如 SDL 多年来难以落地有同样的问题,第一它很重,第二让开发同学都懂安全本身难度就很大。在落地过程中需要关注四个点:第一,要自上而下地推,在这个过程中要把研发、安全运维的同学都打通;第二,需要有相应的平台做支持;第三,整个运营过程中要形成数据的联动反馈;第四,形成闭环助力,协调机制的建立。
3、面向供应链的信息技术产品安全基线要求标准
面向供应链的信息技术产品安全基线要求标准,标准是通标线航标正在这个立项过程中,也欢迎大家参与。这部分总的分为两块,安全功能要求和安全保障要求。这个标准与上面讲到的安全开发体系标准是配套的。标准是体系的,是指怎么做好安全开发这套体系。而研发运营安全标准是结果的,是指最后依据这套安全开发体系,产品的实际要求是什么。
最后一个标准是 SBOM (软件物料清单),SBOM 很关键,在软件供应链处于一个非常核心的位置,是整个软件供应链里面一个很重要的抓手。参考国外有一些 SPDX 等相关的格式规范,列出了国内 SBOM 的标准,是通标的一个航标,主要包括三部分内容:
- 数据层:需要列出基本的数据要素,包括软件信息需要记录哪些组件信息、文件信息等等,对数据层规范了基本要求;
- 构建层:对生成方式、生成频率、生成深度提出了规范要求;
- 应用层:对应用于软件资产管理、漏洞管理、安全事件响应等提出了规范要求。
规划与展望
信通院也成立了一个软件供应安全的实验室,去做标准的讨论。大家如果感兴趣,欢迎加入我们去共同做一些讨论。
今年我们会持续完善相关标准,分别是SBOM、RASP、DevSecOps、产品安全基线标准。
最后我觉得软件供应链并不是一个企业的事情,也不是信通院自己可以研究完成的事情,它是一个生态的事情。因为开源的生态很大,包括整个软件的组成分析非常复杂,其实是需要大家共建共享的,所以也希望大家能够持续参与院里的标准和生态建设。