纵深话题:软件供应链安全风险解析

随着互联网的迅猛发展,软件供应链安全事件近年来频繁发生。软件供应链安全具有威胁对象种类多、极端隐蔽、涉及纬度广、攻击成本低回报高、检测困难等特性。软件供应链中的任意环节遭受攻击,都会引起连锁反应,甚至威胁到国家网络安全。软件供应链其安全问题应该上升到基础设施安全的高度来对待,应该得到更多的、更广泛的重视。本专题围绕软件供应链,分析其所面临的主要安全风险和挑战,从各环节、多层面提出安全保障建议。

■ 公安部网络安全保卫局 祝国邦;四川省公安厅网络安全保卫总队 陈洁

近年来,随着网络安全形势的不断发展变化,世界范围内网络安全事件频发,大量网络攻击行为也滋生了以经济利益为目的的灰色产业链,对国家关键信息基础设施、重要业务信息系统以及公民个人信息安全造成极大损害。

一、披着“合法”外衣的恶意软件引关注

在严峻的网络安全大环境下,公安机关作为网络安全监管部门,在全国范围内组织开展了网络违法犯罪打击整治工作,从源头上对黑、灰产违法犯罪团伙进行打击,有效保障了国家网络安全。

在对近年来的网络攻击行为进行深入分析发现,恶意代码的传播和扩散占了很大比例, 尤其是披着“合法”外衣的恶意软件,使恶意代码在传播速度与影响面方面有了大幅提升,而常规基于特征识别,例如信息摘要算法(MD5)、关键字等的安全防护措施往往失效,给恶意代码的发现与防护带来了难度。

此类披着“合法”外衣的恶意软件,已经引起各国政府机构、互联网企业的关注,并对其产生的原因与途径进行了识别与定义,美国微软公司首先定义了该网络安全风险,称之为软件供应链安全(Software Supply Chain Attack)。目前,通过公安机关网络安全监测平台及国内互联网安全企业监测发现,这类披着“合法外衣”的恶意代码仍在我国蔓延,威胁国家网络安全。本文结合公安机关工作实际与软件供应链安全特性与关键环节,进行分析探讨,并提出意见建议。

二、软件供应链概念与现状

1. 软件供应链具有极强互联网特性

传统的制造业、食药供应等领域的供应链流程与标准已日趋完善,如商务部、财政部等国家部委发布的《关于2018年流通业现代供应链体系建设的通知》和《GB/T 4754-2017 2017年国民经济行业分类》等,都对传统供应链进行了充分的定义与规范。软件供应链是互联网迅猛发展的产物,具有极强“互联网特性”,但是,通过研究分析发现,其业务流程和关键因素的基本属性与传统供应链并没有太大变化,为方便大家理解,我们对一些关键环节进行了比对(如表所示)。

2. 软件供应链的三个关键流程

根据软件供应链的特点,软件供应链的业务流程可以抽象成开发、交付以及应用三个环节。在开发环节,主要是指软件开发商的编程人员根据用户(含定制用户)的需求,进行编程并完成软件包提供的过程。该过程主要涉及用户需求、编程语言、开发环境、开发框架、测试和封包等;在交付环节,主要是指开发商或者推广商通过互联网网站、在线商城、社交工具、在线网盘或者通过存储介质,将开发或定制的软件交付给最终用户;在应用环节,主要是指最终用户使用该软件产品,包括下载、安装、注册、付费、使用、故障修复、升级、卸载等全部过程。

3. 应用环节是软件供应链流向的重要维度

应用环节是充分了解软件供应链流向的一个重要维度,根据调研数据,从软件安装量维度看,约有75%的终端安装了办公软件,排名最高,其次是休闲娱乐软件,占比60%;从软件覆盖率维度看,网络安全软件的覆盖率高达80%,其次是休闲娱乐软件;从软件付费与免费维度看,付费的软件寥寥无几,免费的互联网软件多为用户自行下载安装的,软件的质量参差不齐,软件的来源也不清晰。

三、软件供应链风险分析

从近年来网络攻击事件的特点看,软件供应链安全主要是指:“修改软件或开发阶段的源码库、编码环境,植入恶意代码,在各类官方/非官方应用下载网站、网盘、通信工具以及硬件刻录光盘进行散布,诱导或捆绑进行下载,最终成功植入恶意代码”,这一系列的操作已不同于以往通过邮件钓鱼、链路劫持等手段,是整个软件供应链需要共同面对的问题。在抽象出软件供应链的关键环节后,可以做出假设,非法攻击者一旦对软件供应链中的任意环节进行攻击、篡改,都会引起最终软件供应链的连锁反应,直接危害国家网络安全。供应链环节可能遭受的风险如下:

1. 软件开发环节供应链风险

在软件开发阶段, 尚未有统一的、经过安全检验的发布渠道,多数工具未经检测直接发布;工具及库通常由商业公司或个人开发,因代码复杂,编程人员往往依据将易用性作为选择开发配套的唯一标准,缺乏安全的意识。因此,在开发阶段存在被病毒污染的可能,导致开发出的功能模块默认感染病毒,同时,在进行源代码打包或开发过程中,对功能模块进行后门留存,给程序的开发环境以及后续的使用环境,都带来了安全隐患。此外,程序开发环境一般属于核心区域,一旦编程人员下载了不安全的工具,则可能直接导致整体编程环境出现重大安全隐患,所有从该环境出入的代码,都可能存在泄密、篡改等风险。

在软件开发阶段,如果是自主开发,编程人员更为关注功能实现,往往会引用成熟、高效的开发框架,缺乏对安全的考量,如引用不安全函数、编程逻辑漏洞。在开发过程中,由于使用了不安全的工具与第三方库,间接导致病毒污染,也可能会有未知的后门留存,带来安全隐患。如果是外采购买,其面临的安全问题至少包含自主开发面临的所有问题,同时,外部厂商也会在提供模块过程中,携带新的供应风险。

在软件测试环节,进行源代码测试的工具如果存在恶意代码感染,则可能感染整体测试环境;测试人员不具备安全意识,测试电脑在不安全的环境进行操作,则带来次生感染;此外,进行源代码封包的工具也可能存在恶意代码感染。

2. 软件交付环节供应链风险

在发布渠道方面,目前,主流的软件发布渠道缺乏有效的监管,各应用发布商缺乏对软件发布的安全审核,同时,在网上也充斥着大量的个人发布渠道;从应用在上传至渠道用于下载的传输途径、存储、发布等环节,易发生多维度的篡改行为,导致渠道风险的发生;非官方发布平台直接发布或被篡改并植入恶意代码,造成感染。

在发布下载方面,软件厂商出于推广需要,多数软件往往会对自有软件进行捆绑安装,已形成了完整的灰色产业链,常见如第三方下载点、云服务、破解软件等下载安装时出现,都缺乏对捆绑软件的审核机制。同时,常见如域名劫持(DNS)、内容分发系统(CDN)缓存节点篡改等,导致用户在不知情的情况下,下载存在恶意代码或后门的软件。

3. 软件用户应用环节供应链风险

在安装方面,安装源自身可能存在隐患,安装时往往会配套一个脚本安装工具代为执行,但是,安装工具的出现无疑会增加整体使用供应链的安全;因为盗版软件的猖獗,终端用户往往会下载激活工具、注册机等,该类工具由于其非法性,往往来源存在问题。

在升级方面,升级包是对原软件进行升级的代码包,未经认证的升级包存在一定的安全风险;官方厂商以及第三方非认证组织往往会通过自身渠道进行补丁包发布,终端用户多数不会进行分辨,下载即安装。

在卸载方面,官方应用往往会将卸载工具内嵌至应用中,但是,对于部分应用由于其卸载不便,且容易残留,提供的第三方卸载工具,也会存在安全隐患。 

四、国内外的相关应对举措

软件供应链安全是一个全球性问题,究其根本,是由于软件行业全球化、市场化、模块化的特点而生。2017年底,国家互联网应急中心(CNCERT)发布的《开源软件代码安全缺陷分析报告》,进一步印证了软件供应链—代码层面临的诸多问题。为应对软件供应链安全,国内外政府机关、企业已开始采取相关措施。

1.制定软件供应链标准、规范

美国政府颁布的《ICT供应链风险管理标准》(NIST SP800-161)、商用信息技术软件及固件审查项目(VET)等,清楚界定了软件供应链中涉及存储、检索、修改、传输以及服务的相关标准与要求,在一定程度上规避了软件供应链面临的诸多风险。

2.营造安全可靠的软件资源社区

不同于原软件资源共享平台Github仅负责资源的共享,而较少考虑源码的安全,国外互联网巨头,如杰蛙科技(JForg)、黑鸭软件(Black Duck)、Twistlock、容器安全(Aqua Security)等联合建设的开源项目Grafeas,清晰地将作者身份、代码记录、安全扫描结果等进行全过程展现。微软一直以来推崇的安全开发流程(SDL)等,都是将软件开发的整体流程,赋予其“链条化”,并对每个环节施加安全保障措施。

3.组织软件供应链攻防演练、竞赛

针对生产环境、开发环境、发布环境以及终端用户环境的“软件供应链”各阶段,开展攻防演练、竞赛,充分吸收容纳国内外科研院所、安全企业以及安全从业者的技术力量,逐步摸索出一套完整可行的软件供应链安全解决方案,如国内互联网企业阿里巴巴组织的“功守道”软件供应链安全大赛等,均取得了较好的效果与借鉴价值。

五、意见与建议

随着软件供应链给网络安全带来的安全风险,国家相关部门应切实采取有效措施,社会各界应广泛参与,共同营造网络清朗空间。有关意见建议如下:

1.国家网络安全监管部门

一是制定符合我国软件产业链的法律规范、标准体系。在《网络安全法》出台的背景下,在国家关键信息基础设施保护、网络安全等级保护等法规和行业主管部门规章的制定过程中,充分考虑软件供应链安全涉及的各方面,增加相应规范条款,在对软件供应链的各环节加以指导、约束。同时,出台或修订相关技术标准,规范软件供应链涉及的各环节。

二是加强软件供应链安全监管。网信、公安、工信等部门,应加强对软件供应链涉及的各个流程和关键环节的监管,建立体系化的监管机制和技术手段,加强软件安全审核和软件安全性检测,有效防范软件供应链安全威胁。

三是严厉打击软件供应链违法犯罪活动。公安机关进一步加强对网络攻击篡改、传播病毒木马、设置软件后门、窃取用户信息等软件供应链领域违法犯罪的打击力度,顺着软件供应链涉及的问题源码、传播途径(发布渠道)、感染目标等体系,全面摸排,依法打击查处。

四是协同国内各方力量“共治”。针对软件供应链风险这一社会广泛关注的问题,国内政府机关、科研院所、信息安全企业共同协同参与,从软件的开发、交付、应用等各环节加强安全防范。组织开展针对软件供应链的攻防演练,逐步固化、积累经验,培养信息安全的中坚力量。

2.国内科研院所和互联网企业

一是推动构建安全可靠的软件资源渠道。国内科研院所、大型互联网企业可依托自己的业界影响与技术实力,充分利用安全加密、数字签名等安全技术手段,加强审核、检测和防篡改等安全保护,为社会或行业构建安全可靠的软件资源共享渠道。

二是加强软件安全检测。国内科研院所、有关检测机构应加强软件安全检测,既包含软件自身缺陷、性能等方面的检测,也包括是否存在后门、漏洞等方面的检测。重点行业部门应加强对行业通用软件、定制软件的安全检测。加强检测技术和工具的研究和开发,提升我国软件安全检测能力和水平。

三是加强软件供应链风险共享和通报。加强软件供应链威胁情报信息共享与通报。国内科研院所、大型互联网企业等应将软件威胁和问题及时上报国家网络与信息安全信息通报机构或公安机关,以便相关部门准确评估相关风险的社会影响,从国家、社会等层面,全面解决问题。

3.软件用户

一是应选择安全可靠的软件资源下载渠道。虽然官方/高声誉的资源下载渠道同样面临严峻的软件供应链风险,但是,安全度相较自媒体的渠道明显更为可靠,出现问题也能够进行源头溯源。对于政府部门和企事业单位的业务区,应避免安装非必要的软件,确保软件源头安全。

二是严格把控资源升级、卸载等过程。资源的下载与安装的确是软件供应链突破的主要入口,但是,对于深度隐藏的“合法资源”来说,其往往会在后续发布的补丁、卸载脚本中,内嵌危险代码,用户更难以察觉,建议使用正版软件,避免使用盗版软件的注册机、激活工具。

三是提升安全防护能力。软件供应链风险是一个广泛的概念,在没有充分自主可控的情况下,应该提升攻击者的攻击成本与难度,及时有效发现资源、软件的异常活动行为,加强系统层面的安全防护。

(本文刊登于《中国信息安全》杂志2018年第11期)

声明:本文来自中国信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。