电信运营商开源软件供应链安全治理探讨
2023-03-16余建利姜荣霞
余建利,姜荣霞,卢 蓉
(中国移动通信集团浙江有限公司,浙江 杭州 310000)
0 引言
开源软件是一种任何人都可以共享和修改编码的软件,开发者对成果共享和自由软件的追求促使开源软件迅猛发展。目前,开源软件已在电信运营商等企业中普遍使用,同时,针对开源软件供应链的攻击事件频频发生,因此亟需探讨电信运营商的开源软件供应链安全治理方法,降低电信运营商安全风险。
根据美国弗雷斯特研究公司的统计数据,全球80%以上的软件应用了开源软件,软件中80%~90%的代码来自于开源软件,而在通信行业中应用开源软件的应用软件比例高达95%[1]。
在我国,企业使用开源软件也非常普遍,根据奇安信代码安全实验室2021 年针对3 354 个国内企业软件的分析数据,无一例外,均使用了开源软件,平均每个软件使用的开源软件达127 个[2]。
1 开源软件供应链安全现状
1.1 开源软件供应链攻击事件频发
近年来,开源软件供应链造成的安全事件频发,2020 年8 月,开源Web 框架Apache Struts2 被曝出S2-059 Struts 漏洞,通过OGNL 表达式注入造成远程代码执行,该漏洞波及范围极大,据FOFA 系统显示,仅2019 年全球共3 000 多万个Struts2 服务存在被攻击风险[3];2021 年12 月,Apache Log4j2 开源软件被曝出Log4Shell 漏洞,攻击者通过jndi 注入攻击可远程执行任何代码,该漏洞对互联网影响巨大,超过35 863 个开源软件Java 组件受影响[4]。
1.2 国内外已展开的研究
目前,国内外行业已积极开展行动,软件开发平台GitHub 已将其咨询数据库在社区开放,允许任何人提供有关安全漏洞的见解和情报,来帮助提高软件供应链的安全性[5]。国内奇安信[6]、阿里云[7]、绿盟[8]等企业已开展研究实践工作。
在学术界,哈力木拉提·巴图尔[9]对软件开发中开源组件的应用及产生的安全问题进行了分析,探讨开源组件克隆带来的安全及版权问题;苏仟等[10]对开源软件面临的安全漏洞、知识产权、开源管制等风险进行分析,通过对开源软件供应链安全现状和风险进行分析,提出开源软件开发安全解决方案,并对开源软件供应链的发展提出建议;王晓冬[11]系统分析了全球开源模式发展趋势,对我国开源软件产业存在的开源断供、代码安全和知识产权、自主创新风险进行分析,提出推进开源自主、加强模式创新、优化发展环境的举措。目前,尚未有已发表的针对电信运营商开源软件供应链安全的治理实践研究。
2 电信运营商开源软件供应链面临的风险
近年来,国内主要电信运营不断加大了企业的数字化转型力度。在通信网络的数字化转型中,核心网元系统向云化、软件定义网络、网络自动驾驶等转变,通信网络对外开放程度日益增大,大量开源软件被引入通信网络系统中。在企业内部管理的数字化转型中,以云计算、大数据、人工智能等为代表的新一代IT 技术被广泛应用,软件供应商众多,开源软件经常是上层应用软件的基础。开源软件也被广泛应用于电信运营商的BOMDS(Business Supporting System,Operation Supporting System,Management Supporting System,Big Data System,Security System)五域系统中,已渗透到了各个生产和管理环节。因此,开源软件的重要性是不言而喻的。电信运营商面临着开源软件安全漏洞导致的网络安全和数据安全风险、开源软件断供造成的系统稳定运行风险和开源软件知识产权可能引发的合规经营风险。
2.1 安全漏洞导致的网络安全和数据安全风险
由于源码的开放和贡献者对安全性的疏忽,开源软件存在的安全漏洞非常普遍,根据国外一些公司的报告,近三分之一的项目软件中包含了第三方库安全漏洞。开源软件使用广、漏洞信息传播快、修补难,造成开源软件的安全漏洞管控比闭源软件难得多。因此,安全漏洞是开源软件供应链的主要风险。
攻击者利用开源软件供应链中的安全漏洞进入电信运营商的计算机系统,横向层层渗透,既可以控制通信网络运行,也可以植入恶意代码,窃取内部数据库的敏感数据,严重危害通信基础设施网络安全和数据安全。
2.2 开源软件断供造成的系统稳定运行风险
国内软件供应商使用的开源软件主要依托国外开源社区,很多开源项目和开源许可证起源于美国,容易受经济和政治等多种因素影响,存在较大的开源产业链断供风险[8]。例如,RedHat 旗下的开源操作系统CentOS 8 已停止了更新服务,电信运营商的大量公有云和私有云的服务器都需考虑使用更换操作系统,升级和替代成本昂贵。显然,开源软件的断供隐患对电信运营商追求的不间断运行、大容量、高稳定性和高可靠性电信级服务造成了较大的冲击。
2.3 知识产权引发的合规经营风险
尽管开源软件源代码开放共享并可自由使用,但使用者也必须遵循相关开源协议,注重知识产权保护,否则容易陷入许可协议条款冲突等引发的知识产权风险。电信运营商使用供应商提供的软件系统,不论是成品软件还是现场定制软件,作为使用者很难甄别供应商引入的开源软件类型、版本和许可,如果不在合同上有严格条款约定,容易引起电信运营商侵权风险,造成不必要的法律诉讼,给企业带来经济和名誉损失,影响企业的社会形象。
虽然电信运营商面临的上述三个风险差异性较大,对企业的危害有所不同,但是开源软件供应链的治理目标和手段是基本一致的。首先,需要全面了解开源软件的成分、版本、许可协议、存在的安全漏洞及加固方法,做到心中有数,避免在开源软件引用时带来安全风险;其次,要通过IT 技术对已知开源软件实施库存管理,提高后续使用的便捷性;最后,需要与已有的软件开发及运维体系无缝结合,纳入生产运营流程中。
3 电信运营商开源软件供应链安全治理
电信运营商使用开源软件数量多、影响广、安全治理难度大,因此,需要构建比较完善的安全治理框架(如图1 所示),围绕软件全生命周期开展安全治理。开源软件治理既需要制度体系和治理工具支持,更需要持续治理运营,抉择引入、加固或退出等措施,在加强顶层设计基础上有序开展开源软件检测,构建电信运营商开源软件供应链安全仓库,实践开发安全运维一体化(Development Security Operation,DevSecOps),在软件供应链引入源头或应用软件开发过程中消除安全漏洞,极大地降低后续安全漏洞的加固成本。
图1 开源软件安全治理框架
3.1 顶层设计
电信运营商内涉及IT(Information Technology)生产系统的部门众多,开源软件安全治理不仅是IT 部门的工作内容,而且是整个企业共同的目标,所以,加强顶层设计是非常有必要的。首先,要制定开源软件安全治理基本原则和规范标准,统一治理思想认识和行动规范;其次,开展开源软件安全治理管理制度建设,围绕开源软件安全检测、安全加固、开发安全等发布相应的管理办法,为安全治理活动的实施提供全方位的行动指引;再次,要成立开源软件安全治理办公室,组建安全治理团队,做好人力资源保障,统筹推进安全治理各项工作;最后,要设定治理目标,明确治理举措和奖惩措施,推动企业形成开源软件安全治理的文化氛围,促进安全治理成果的广泛应用。
3.2 开源软件检测
目前,国内外安全厂商提供的开源软件供应链安全检测方法或工具主要包括软件成分分析(Software Composition Analysis,SCA)、静态应用程序安全测试(Static Application Security Testing,SAST)和动态应用程序安全测试(Dynamic Application Security Testing,DAST)等。SCA 包含软件组成分析、依赖分析、特征分析、引用识别、合规分析等,通过SCA 可有效识别第三方开源软件资产,理顺依赖关系,摸清资产底数,发现漏洞风险和许可证合规风险。SAST 结合代码编码规范和代码审计,帮助开发人员发现并修复软件代码中的安全、质量和合规等缺陷。DAST 是一种黑盒安全测试技术,检测应用程序在生产环境中运行时的状态,并尝试对其进行安全攻击,以求发现运行时安全漏洞。
对电信运营商而言,SCA 是发现开源软件安全漏洞的基础,既能了解使用的开源软件类型及其隐藏的漏洞及修复方法,也能获知其许可证相关信息。SAST 消耗的时间较长,但相比渗透测试,对测试人员的要求不高,因此是经常被使用的测试方法。DAST 的优点是测试人员无需编程能力,无需了解应用程序内部架构,使用攻击特征库验证就可发现主要风险问题,但无法直接定位漏洞位置,需专业安全工程师协助定位风险代码。
3.3 开源软件供应链安全仓库构建
建立电信运营商私服开源软件安全仓库(如图2所示)是安全治理最重要的环节之一。进入开源软件安全仓库的开源软件必须经过专家团队安全检测,并打上安全标签。安全标签包含版本信息、来源渠道、安全漏洞信息、安全补丁信息、许可证信息、上下架时间和推荐使用意见等,确保方便后续开发人员下载使用。构建私服开源软件安全仓库时,为提高检测效率,也可参考maven、npm 等业界软件仓库提供的软件物料清单(Software Bill of Materials,SBOM)。
图2 开源软件供应链安全仓库
在软件开发过程中,项目编译需要的第三方依赖包和安全加固包只能从私有开源软件安全仓库中获取,从源头实施控制。同时,对于供应商交付的成品软件,也需要提交源代码,经过SCA 自动扫描检测,避免问题开源软件在电信运营商各生产系统中扩散。在发生安全事件时,依托开源软件安全仓库的安全标签,运维人员可快速升级加固,阻断风险。通过运维人员持续运营,开源软件的安全风险和合规问题将会慢慢减少,电信运营商使用的开源软件质量就能得到有效提升。
目前,常见开源软件许可证主要有 GPL、MIT、BSD 和Apache 等,这些许可证大致分为Copyleft 许可证和宽松许可证,对使用、修改和分发等场景作出了约束。电信运营商在选择使用仓库中的开源软件时,要关注源许可证的内容及相关条件,避免可能的法律风险。为减少开源软件断供风险,电信运营商在选择使用仓库中的开源软件时,应优先选择国内开源社区上的开源软件(如开源中国社区),同时也要积极参与开源公共服务平台构建,为丰富开源社区内容贡献力量。
3.4 DevSecOps 实践
开源软件安全治理可能会造成软件开发交付的时间拉长,效率降低,提高了交付成本。为平衡交付效率和软件安全的关系,在安全治理过程中,需大力推进开发、安全和运维一体化,核心理念是安全左移,在软件开发生命周期的较早阶段,解决各种安全问题,降低修复成本。具体是在设计、编码、构建、验证和发布运行等不同阶段实现多重安全检查,将SAST、SCA 和DAST 嵌入持续集成(Continuous Integration,CI) 和持续交付(Continuous Delivery,CD)中,实现与企业原有开发和运维工具的无缝结合,确保开发、安全和运维的流程闭环(如图3 所示)。
图3 开发、安全、运维一体化
在设计阶段,针对开源软件,开展软件成分、依赖关系、漏洞信息和许可信息等梳理工作,杜绝引入存在问题的开源软件;在编码阶段,应用SAST 对开发中的代码进行审查,审查结果及时反馈开发人员修复;在编译构建阶段,依托开源软件特征库,使用SCA 工具对构建代码包成分检测分析;在验证阶段,引入DAST 进行运营态下的安全漏洞测试,弥补静态检测的不足;在发布上线阶段,开展应用系统黑盒渗透,确保生产环境中没有可被利用的安全漏洞。
4 开源软件供应链安全治理效果
经过开源软件供应链安全治理,电信运营商获得最直接效果是遗留至生产系统上的安全漏洞明显减少,有效降低了安全漏洞加固成本。图4 是国内某电信运营商线上销售服务系统在开展开源软件供应链安全治理前、后遗留安全漏洞的情况,各种类型的安全漏洞都有大幅下降。
图4 安全治理前、后漏洞对比图
至此,电信运营商已完成现网生产系统的开源软件检测,联动并参考NVD(美国国家计算机通用漏洞数据库,National Vulnerability Database)、CNNVD(中国国家信息安全漏洞库)等漏洞情报,打造了开源软件供应链安全仓库,形成了常用开源软件的版本、漏洞、许可证等知识库,建立了开源软件与生产系统的关联关系及内部预警通告机制,从而有效降低了生产运营的安全风险。但是,开源软件因代码开源和使用广泛等特性,使得开源软件安全性成为一个全球性问题,仅靠电信运营商一家之力安全治理效果有限。所以,需要在国家行业主管部门指导下,电信运营商、软件供应商、安全厂商以及专业评测机构紧密协作形成生态圈,建立通信软件供应链安全社区,开放供应链安全仓库、安全漏洞情报库和安全治理经验,探索软件供应链安全标准,提升我国的开源软件安全治理水平,促进软件供应链安全生态良性循环。
5 结论
随着信息技术不断发展,应用系统的软件源代码将越来越多是混源模式,一部分由企业自主开发,一部分采用开源软件代码,开源软件的安全问题一直是个绕不过去的问题,对于涉及国计民生的电信、金融等企业而言,开展开源软件的安全治理越早综合风险越小,介入程度越深成本越低。开源软件安全治理要融入软件开发过程,实现业务应用安全内生,依托安全系统和业务应用系统的聚合,不断衍生出新的安全能力,提供开源软件安全服务,赋能内、外部各研发团队,降低企业整体安全风险。