以下文章来源于《中国信息安全》杂志2021年10月刊(第143期)
随着“软件定义一切”时代的到来,以及容器、微服务、云原生等新兴技术在软件行业的普及应用,几乎所有的软件产品已使用或包含了开源组件/软件,相应的软件供应链攻击事件也日益增长。
近年来,一方面,西方国家限制我国关键软件进口,破坏我国软件供应链完整性。另一方面,我国核心工业软件行业在关键软件以及设计工具这两方面对进口商品依赖性较高,掌握主动权仍需时日。例如,我国80%以上的核心工业软件依赖进口,电子领域的研发设计软件对外依赖率高达90%;最常用的操作系统和应用软件大部分由国外掌握,如:Windows、iOS、Android等。
同时,当前软件产品开发过程中经常使用自带有安全漏洞和潜在风险的开源代码。根据中国信通院发布的《开源生态白皮书2021》,开源代码的安全漏洞风险显著。根据开源网安开源组件安全及合规管理平台SourceCheck对行业热门开源项目的扫描结果显示:53.8%的开源项目会含有至少一个或者一个以上的超危风险漏洞。如果高等级的潜在风险被恶意利用,势必产生极其恶劣的影响。
软件供应链管控体系需持续完善。《网络产品和服务安全审查办法》已于2021年6月1日起正式实施,我国逐步将软件产品研发、测试、交付、技术支持等过程中的安全风险作为重点审查方向,对软件供应链管控体系的构成起到了推动作用,但仍需持续、统筹构建国家层面的软件供应链安全体系。
Sonatype公司的《2021年软件供应链状况报告》(State of Software Supply Chain 2021)报告指出:前四名的开源生态系统共放出了6,302,733个新版本和723,570个全新开源项目,共包含了合计37,451,682个不同版本的开源组件数。2021年,全球研发者从这四个开源生态系统需求共2.2万亿个开源包,开源组件下载年增长率达到73%。如此高的需求增长率让安全隐患也逐渐显露。报告指出,最受欢迎的开源项目中有29%的项目含有至少一个已知安全漏洞。除此之外,供应链攻击现象更为频发。2021年,全球范围内对软件供应链上游的开源生态系统攻击的数目达到了650%的增长值。
开源软件安全事故频发,安全态势紧张。2020年4月,Rubygems开源软件包生态系统被恶意植入了数百个恶意软件包,下载量高达10万余次。同年5月,Github披露了针对Apache NetBeans IDE项目的开源软件供应链攻击源Octopus Scanner,据统计,共有26个开源项目被植入了Octopus Scanner后门。同年12月,网络安全管理软件供应商SolarWinds遭遇国家级APT组织的软件供应链攻击。导致包括美国关键基础设施、军队、政府等在内的超过1万8家客户可被攻击者任意操纵,危害巨大。2021年2月,微软、苹果、PayPal、特斯拉、优步等35家国际公司内网被安全研究人员通过一种名为依赖混淆攻击的方式(利用开源生态安全机制上的漏洞)对这些公司的软件供应链进行了侵入。同年4月,知名代码测试公司Codecov宣布其产品的bash uploader脚本被攻击者修改,导致攻击者可以获取Codecov产品用户的软件源代码等机密信息。
据Forrester统计,软件开发行业内高达80%-90%的代码来自开源软件。市面上所流通使用的开源软件大多为由自主研发的源代码和开源软件代码共同组成的混源代码,虽然混源代码的大规模应用可以有效提高软件开发的效率,以及大幅度降低研发成本,但是,也带来了极高的风险。开源代码作为信息时代的基础原材料,其本身的安全状况会直接影响客户所购买的产品软件的安全性。
目前,一种较为可行的软件供应链安全管控方法是在软件产品采购环节对软件源代码(软件的原材料)以及成品软件采购进行质量把关。同时,国家有关部门需构建软件供应链条管控机制,从软件供应源头做好软件产品及软件供应过程的安全管控,达到将“安全左移”的目的。
解决软件供应链安全需要考虑两个方面的问题,一是如何搭建软件供应链安全风险管理平台,二是如何合理利用安全风险管理平台以及其他资源来解决软件供应链安全风险和威胁。解决该问题可以从采购、运维、下线三个维度建立平台框架来构建软件供应链平台。采购阶段的安全防范以及合理措施,主要有三个关注点。
对软件供应商的企业资质进行考量。供应商企业资质是否合格,需要每位供应商能提供合法的资质审核和证明,同时签署安全责任协议。供应商资质审核涵盖内容可分为两部分:通用资质和行业资质。通用资质主要包含成立年限、组织架构、经营状况、认证等级、人员配置、资产和收益、成功案例等。行业资质主要包含国家网络安全相关管理部门颁发的行业资质。
对软件产品进行安全评估。评估内容可分为四个方面:对软件的后门和隐藏功能用源代码审计或编译后代码扫描;对软件自身安全缺陷使用灰盒(IAST)、白盒(SAST)、黑盒(DAST)、模糊测试(FUZZING)等方式扫描;对软件使用和依赖开源组件的漏洞、知识产权和许可合规性使用软件成分分析(SCA)扫描;对软件包含的病毒和恶意软件使用防病毒软件检测。评估结果可用于核对供应商产品所包含的内容。通常,供应商所提供的产品需要以及建议包括产品部署包、产品的组件物料清单(BOM)、知识产权合规说明、依赖和环境安全配置、产品说明书等;不应包含:病毒、后门、恶意代码、隐藏功能、已知代码漏洞、已知组件漏洞、知识产权违规、无许可信息和敏感信息暴露等。
对软件供应商的软件安全能力成熟度进行评估。软件供应商的软件产品安全能力成熟度评估,需要囊括软件供应商的安全开发能力和安全运营能力。通常,安全开发能力成熟度应包括对软件产品研发过程中各阶段及软件产品发布后各阶段的安全实践,并结合软件供应商的组织战略、人员能力、工具能力等多个维度对成熟度进行综合性评价,以判断软件供应商是否具有充足的能力为软件产品及其供应链安全提供必要的技术与管理支撑。
在软件产品采购阶段,采购人员以及使用人员、安全人员对软件供应链安全保障同样具有重要作用。
对采购人员的建议。采购前先对供应商进行企业资质审核,并对该供应商是否可持续且安全地提供服务进行评估。采购前邀请安全人员对软件产品进行安全测试选型,确认拟采购软件的安全态势符合使用人员需求。采购前要求软件供应商自行提供能够证明软件产品安全可信的证明材料及软件开发过程成熟度的评估结果,以确认软件供应链过程中可持续交付安全的软件产品。
对使用人员的建议。始终保持任何外来软件都不是完全可信的态度,优先选择知名度高、口碑好、安全意识高的软件供应商所提供的软件产品。坚持从合规合法渠道获取软件产品,并遵循软件供应商的官方指引正确安装。
对安全人员的建议。维护企业内部的可信软件清单,尽量减少企业人员从各种未知渠道下载软件。维护企业内部所用的依赖组件清单,明确哪些依赖组件可以使用、哪些依赖组件不能使用、哪些依赖组件正在使用。
目前,我国已逐渐启动软件供应链安全保障体系和机制的构建工作。随着《网络安全法》、《数据安全法》、《网络产品安全漏洞管理规定》、《关键信息基础设施安全保护条例》等一系列法律法规的颁布实施,软件供应链安全在整体网络安全保障中的作用愈加凸显。因此,建议在采购环节做好软件产品的安全评估,从源头做好软件供应链安全保障,才能有效应对软件供应链面临的安全问题。