文 / 北京国家金融科技认证中心 李振
恒丰银行金融科技部 翟海超
信息时代到来后,市场上陆续出现了各种软件产品,这些软件的功能多样,为生产生活带来了极大的便捷,但行业发展的过程中,计算机软件供应链安全风险也时有出现,严重影响了各大软件产品的研发与更新。软件开发到投入使用是一个漫长的过程,一旦供应链中某一环节出现问题,必将带来较大的损失。因此,当前软件产业、数字经济发展的过程中,各个国家都越发关注软件供应链安全,未来国家、企业均应立足软件供应链安全现状,采取各种有效措施应对各类安全风险。
国内外软件供应链安全现状
1.国际软件供应链安全发展现状
软件供应链是时代发展下衍生的新概念,从这一概念出现至今,国际社会一直在高度关注软件供应链的安全性。从国家层面来看,由于软件供应链存在安全性和脆弱性,许多国家在多年前就尝试制定了本国的软件供应链安全措施,陆续出台了各种法律法规与技术标准,也开辟了重点项目,力求从多个角度来保障软件供应链的安全性。从企业角度,行业内的大型企业都实施了软件供应链安全风险管理,取得了一定的工作成效。
2.国内软件供应链安全发展现状
互联网环境下网络安全形势日渐严峻,为此我国高度重视软件供应链安全,于2017年6月出台了《网络产品和服务安全审查办法》,该法规一经出台和执行,为软件产品测试、交付等供应链环节提供了法律保障。2020年4月底,为进一步提高软件供应链安全性,多部门联合出台了《网络安全审查办法》,强调运营商在购买、享受各种网络产品及服务时,如涉及国家安全,应从多个角度实施网络安全审查与监管,这一法规使更多人开始关注软件供应链安全。从企业角度来看,领先的互联网企业和安全制造商在软件供应链安全方面投入了巨大的资金,实施了各种安全措施,对保障软件供应链安全具有突出作用,特别是大企业的软硬件安全检测、攻击与反渗透、源代码安全审计、漏洞挖掘等,帮助企业建立了较为完善且有效的安全防护体系。总体来看,国内软件供应链安全现状表现在以下方面。
首先,软件供应链安全事件频发。近年来的互联网环境下,数据泄露、网络敲诈等事件频繁发生,这些事件多与软硬件漏洞有关。依据有关数据,Source Check平台对某软件的扫描结果显示,53.8%的该软件项目中包含至少一个高危风险漏洞,增大了软件使用风险,如不及时修复该漏洞,将无法为用户提供良好的体验。
其次,软件供应链攻击增长迅速。多年来我国的软件产业保持高速发展,虽出现了各种功能和类型的软件产品,但行业内针对软件供应链的安全攻击也始终存在,其呈现增长趋势。以某一软件为例,截至2021年底,针对该软件的攻击量高达1.2万次,攻击次数远远超过了2020年。
第三,软件供应链攻击左移带来安全左移。软件项目涉及交付、运行、维护、更新等环节,与交付与运行环节相比较,开发环节的安全防护较为缺失,且开发作为供应链条中的上游部分,一旦在此环节发生了安全事件,必将影响到下游环节,造成较大的损失。为此,考虑到软件供应链中各个环节的特点,攻击者常常在开发环节攻击软件,在持续攻击下,安全类产品也会不断更新,形成更为有效的安全模式。因此,当前的软件领域,供应链攻击左移也带动了安全左移,对促进软件安全较为有效。
软件供应链风险
1.开发阶段
软件开发阶段,由于并未形成统一且规范的发布渠道,导致一些工具往往会在未经专业安全检验的情况下发布;工具多由商业公司或者个人所开发,因为这些代码十分复杂,编程人员一般会遵循易用性原则来选择开发配套标准,安全意识缺失。因此,软件开发这一环节的工作决定了在此阶段被病毒污染的几率较高,如存在病毒污染,开发的功能模块就会受该病毒干扰。此外,源代码打包或者开发阶段,一般会对功能模块进行后门留存,这一工作对程序开发、使用都有安全风险。另外,程序开发环境中如编程人员未遵循相关标准来下载工具,同样也可能造成软件风险,从该编程环境中形成的全部代码,都可能被攻击和篡改。
如软件开发阶段为自主研发模式,编程人员往往会在软件功能方面投入更多精力,套用更为成熟的软件开发框架,但要实现有关功能,往往无法兼顾安全性,如没有采用安全函数,编程逻辑存在问题等。如软件开发中使用了不安全工具与第三方库,将增大病毒污染风险,甚至可能给未知的后门留存,带来难以预料的安全问题。如为外采购模式,不仅会面临自主研发中所存在的安全风险,还存在其他风险。
软件测试时要实现相关目标,测试人员一般会借助测试工具来开展工作,以实际工作经验为准,源代码测试中所使用的工具可能被恶意代码感染,也就难以构建良好的测试环境,无法正常开展测试任务。再有,测试人员的安全意识也关乎软件供应链的安全性,如这些人员缺乏安全意识,在测试过程中未严格执行操作规范,同样会引起次生感染。
2.交付环节
软件研发过程中,发布渠道也是需要关注的重点方面。当前的市场上,软件发布渠道相对较多,渠道多样且每种渠道各有其特殊性。从行业整体来看,有关部门对软件发布渠道的监管力度不够,相关应用发布商在发布软件时未做好全过程、全方位的安全审核;存在参差不齐的个人发布渠道;应用上传到渠道后,下载时的传输路径、存储与发布等流程可能会被不法分子恶意攻击和篡改;如未选择正规的发布平台,软件可能被植入恶意代码。
发布下载环节,软件厂商往往会从推广角度考虑问题,而在这一情形下,很多软件会捆绑安装自有软件,这一情况较为常见,如第三方下载点、云服务、破解软件等下载安装时出现,并未形成针对各类捆绑软件的审核体系。同时,域名劫持、内容分布系统缓存节点篡改等都使用户在未注意时下载了恶意代码或软件。
3.应用阶段
根据用户行为,软件应用阶段又可细分为安装、升级与卸载等阶段。在安装软件时,一旦安装源有安全风险,为应对这一风险,往往会配套一个脚本安装工具代为执行,虽这一方式下安装工具对安装工作有一定作用,但在使用时会出现额外风险,从而诱发供应链安全问题。此外,由于当下的软件市场还不成熟,存在很多盗版软件,终端用户会选择下载激活工具、注册机等,这类型工具实际上并不符合现有法律法规标准,同样是安全风险的来源。
软件升级过程中,升级包十分关键,从本质来看,升级包是对原软件升级的代码包,正常情况下,软件升级包必须由权威机构来认证通过,如采用未经认证的升级包,将引发安全问题。官方厂商、第三方认证组织在一些时候会直接利用其自有渠道发布补丁,而用户由于缺乏分辨能力,常常会下载和安装有漏洞的补丁或升级包。
软件卸载阶段,官方习惯于将下载工具内嵌在软件内,以方便用户卸载,但对于个别软件而言,这一方式却增大了卸载操作难度,用户卸载时的软件残留过多,同样有安全风险。
软件供应链安全对策
1.强化代码审查与缺陷检测
为有效应对软件供应链安全风险,相关部门必须从技术角度来采取各种预防措施,其中,代码审查和缺陷检测为重要手段,通过配备专业化工具、开辟个性化服务来发现潜在的代码漏洞、功能缺陷。当前的软件市场上,开源软件的应用范围较广,在此情况下,被调用开源代码的组件类型、重要程度、开源许可证类型、使用风险、未修复软件类型、数量等都需重点关注。权威机构或者企业可开发出某一类型的检测工具,用于检验软件产品的代码来源,使用户在下载软件时可借助该工具评估软件自有风险。
由于存在职能差异,部分机构或者企业并不具有软件工具开发能力,在此情形下为应对软件供应链安全风险,可考虑与专业公司或者企业合作,采购这些企业的专门产品或服务,通过查找源代码或者二进制代码来识别、分析和评估其中存在的安全风险、逻辑问题,从而确定软件代码的构成、所包含的开源软件,如存在安全漏洞或风险,及时采取修复措施,从源头上为用户降低软件使用风险,保障用户体验。现阶段较为有代表性的软件供应链安全检测系统一般从以下几个方面来评估软件供应链安全性:软件供应链成分分析,就是要确定软件供应链的源代码种类、文件数量;软件源代码克隆分析,检测软件中的原创代码数量、分布特征、引用代码的文件级克隆情况;开源组件漏洞判定,用以判定软件开源组件内的安全漏洞情形,实施安全评估;组件许可证兼容风险分析,检测软件中引用开源组件所涉及的各类软件许可证情形,精准掌握每一种软件许可证的兼容性、限制性条件。
2.强化软件供应链攻击分析与预防
供应链软件安全风险中,攻击是比较常见的一类风险,由间谍分子或者黑客等来传播恶意软件,在攻击时一般选用以下两种方式:用户在下载、安装软件时直接攻击;用户在审计与维护软件时攻击。比如,在安装和使用有关软件时自动向用户推送广告,诱导用户下载已植入恶意代码的“合法软件”。目前,付费软件的质量更高、服务更全、安全性更好,但很多用户在下载和安装软件时,更倾向于使用免费软件。虽然许多免费软件的功能较全、性能较好,但其却存在较大的安全漏洞,用户在使用时易遭遇软件供应链攻击风险。为此,考虑免费软件与付费软件的这些差异,很多企业开始在内部自建限定官方来源和加密同步协议的软件源,以采用快速收敛源头来预防各类软件攻击。
3.建立统一安全管理机制
与直接购买商业公司的闭源软件相比较,企业直接采用开源软件对自身的软件开发、运维等都有更为严苛的标准。目前的软件市场上,很多企业虽然都使用的是开源软件,但对这些软件的监管不足,绝大多数企业的软件供应链安全管理还处于探索阶段。另外,分布式架构、云端部署等逐步成为行业趋势,系统呈现模块化和组件化发展趋势,不同开源软件之间存在紧密的联系,这种关联关系下开源治理方面需理清不同软件的关系,构建规范且科学的安全管理机制,以通过管理手段来降低软件供应链安全风险。在企业外部,由于包含的开源软件类型较多,且不同软件之间的依赖关系相对混乱,为此,企业、行业协会与产业联盟之间应强化合作,立足当下软件市场的情形,与有关部门合作共同制定软件供应链安全、风险防范等规范与文件,更为适用的安全管理机制,从跟踪开源软件依赖关系、保障许可证合法合规等角度,打破软件开发、法律法规、安全等各个环节的边界,指导软件管理、审计、维护等各项工作。在企业内部,相关部门需根据自身的业务特征与流程情况,构建软件管理组织架构,制定多种管理措施,实施统一规划,细分有关部门和岗位人员的职责,并在条件允许的情况下建立软件治理统一协调部门,与有关部门、行业协会或者产业联盟等对接工作,通过统筹与协调来促进软件供应链安全管理。
4.实施全生命周期风险审查评估
针对当下软件供应链安全现状,许多企业的开源代码中持续发现安全漏洞,由于项目没有查找、修复漏洞的响应机制,且未形成标准化安全记录方式,导致软件供应链安全风险问题无法及时发现与处理。面对这一情况,为提高软件供应链安全管理水平,各企业在采用开源软件时必须在安全审查机制的基础上,实施全生命周期风险审查评估,对每个环节与要素实施专业化的安全检测与分析。
经过许多企业的实践,开源软件的风险审查评估对预防软件供应链安全风险十分有效。为此,企业及其软件供应商在引入、使用、退出、维护软件等全生命周期阶段需联合实施软件风险审查评估及管理,执行行业内、企业中的全生命周期安全使用、风险防控规则,尽可能实现早发现、早处理。首先,在软件引入阶段,应做好以下几个工作:有企业实施软件组件分析,评估软件的漏洞响应、修复等能力,了解软件组件台账、风险点,构建持续性监控、审查机制;企业根据行业要求,评估所引入软件的技术情况,探索并构建恰当的评估模型;企业从合同义务等多个方面来保障软件供应商严格遵循相应的规范,细分其权利与义务。其次,软件使用阶段,采用专业化技术对软件开展全方位安全风险评估,如采取渗透测试、代码安全性分析、建设网络靶场等方式,评估软件自身的可靠性、可用性、安全性,同步制定有关的安全措施。第三,软件退出阶段,企业应立足实际情况来建立退出规划方案,细化软件退出时的迁移、替换等工作。最后,软件维护阶段,企业需安排专人定期对软件使用情形实施安全排查,了解软件的使用规模、复杂程度,主动处理摸查阶段发现的安全漏洞或者风险。
5.引入新代码防护手段与技术
近年来,我国进入了互联网发展的全新阶段,各种新理念与技术为软件供应链安全防护提供了可靠支持,但同样也带来了软件供应链安全新风险,这些风险对软件代码审查等带来了较大的挑战。随着恶意代码数量的增多,为应对软件供应链安全风险,有关部门与企业可引入人工智能技术提取与分析恶意代码及其变种,在此前提下,构建恶意代码指纹库,实施病毒变种、木马变种的检测。当然,在有条件的情况下,专业机构及企业也可针对软件供应链安全风险类型及危害程度,借鉴区块链中的智能合约隐私保护技术,如环签名、同态加密等来保护软件中的隐私数据,避免数据泄露或篡改。为此,为应对各种软件供应链安全风险,权威机构、相关企业需进一步强化新代码防护手段、技术等的探索,创新安全防护技术。
6.建立软件供应链组件资源平台
当前的软件市场上,造成软件供应链安全威胁的一大因素为软件资源共享下的风险扩散。为有效应对此类风险,在当前及未来的工作中,有关部门和企业、行业协会之间应强化合作,构建更为安全和可靠的软件供应链可信组件资源平台,借助开放平台来应对软件中引入恶意代码、后门软件、缺陷代码的现象。国家相关主管部门、权威检测和认证机构、大型企业之间应强化交流与合作,共同推动建立软件供应链组件资源平台,综合采用数字技术与网络技术强化软件供应链可信组件监管。
结束语
信息技术稳步发展的过程中,软件供应链安全问题时有出现,为有效应对各类安全风险,国家、机构、行业协会、企业之间要加强合作,共同针对软件供应链安全风险类型制定相应的管理措施,引进现代化技术。
声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。