■ 中国科学院信息工程研究所网络测评技术中科院重点实验室  邹维 霍玮 刘奇旭

近年来,软件供应链(Software Supply Chain, SSC)安全事件数量明显上升,围绕软件供应链的安全缺陷、攻击威胁及应对策略等问题,成为业界关注的热点。本文介绍软件供应链攻击的特点、其安全问题的根源,并探索供应链安全的应对策略。

一、软件供应链安全事件频发危害不容小觑

一个软件产品或信息系统的生命周期包括规划设计、开发集成、分发部署、运行维护、停用退出等环节,面向其生命周期的目标策划、市场营销、人员分工、技术活动、质量保障、平台支撑、工作文化、地域环境等构成了软件供应链的主要内容。而软件生产环境由开发者/开发工具、开发过程、软件分发系统、软件更新网站等部分组成。

软件供应链攻击(SSC attack)是针对软件供应链的各个环节,采用网络攻击手段,利用人或系统的漏洞乘虚而入,并沿着供应链向后渗透,在最终产品或信息系统中植入后门或木马,实现对群体目标或定向目标的网络渗透及攻击。攻击者围绕软件生产环境,主要采用内部攻击/开发工具攻击、源代码攻击、下载网站攻击和补丁网站攻击等4大类攻击途径,即所谓攻击向量(Attack vector),对供应链发起进攻(如下图所示)。

最早的软件供应链“攻击”可追溯到30多年前。1983年,图灵奖获得者肯·汤普森(Ken Thompson)在颁奖大会上做了题为对轻信的反思(Reflections on Trusting Trust)的报告,自曝当时所有UNIX系统中均存在木马(Trojan horse)。原来,他作为UNIX和C语言的发明人之一,在C语言编译器中“做了手脚”。当对一个UNIX程序包进行编译时,会自动修改其中的登录(login)命令模块,植入后门。这是最早的针对软件开发工具的攻击“实验”,被称为肯·汤普森攻击法(Ken Thompson Hack,KTH)。

2015年9月,幽灵(XcodeGhost)事件曝光。Xcode 是苹果公司提供的开发工具,黑客篡改了其附带的框架库文件,再将其放到网上供移动应用软件(App)开发者下载。用它编译生成的App被自动植入木马,受感染的App达4000多个,在骗过苹果应用软件商店(App Store )审核后上架,被大量用户下载使用,导致用户隐私泄露。据外媒报道,该事件是第一起针对苹果应用软件商店的大规模攻击,也是一个现实简化版的KTH。

同年,爱德华·斯诺登(Edward Snowden)通过网络媒体披露美国中情局的STRAWHORSE项目。研究人员正是受肯·汤普森的启发,通过改造Xcode ,让它编译生成App时自动植入木马,从而突破苹果手机的加密系统,实现对目标对象的监控。这是一个网络武器版的KTH。该项目的曝光,揭示了软件供应链攻击已成为网络战的重要手段。

以上是针对开发工具的攻击案例,此外,围绕软件供应链其他环节的攻击也时有发生。近年来,披露的软件供应链安全事件呈显著上升趋势,代表性事件如下表所示。

其中,针对常用系统优化工具CCleaner的Floxif攻击事件导致220万用户电脑受到入侵,针对反病毒软件源代码的攻击致使韩国军事计划泄露。

从上表可以看出,软件供应链攻击仍属于网络攻击范畴,但是,与传统网络攻击又有所不同。一是攻击面不同,SSC攻击重点针对软件生产环境进行渗透攻击,特别是开发工具攻击,其木马研制及操控复杂度更高;二是发挥的效能不同,SSC攻击能够轻易规避常规的网络安全防护,并可同时感染一批目标软件。

二、软件供应链安全问题与软件特性及生产过程管理相关

软件供应链安全问题首先与软件本身的三个特性有关。第一,复杂性。软件规模越来越大,程序逻辑越来越复杂,对软件完整语义的理解及操作逻辑的把握越来越困难,设计缺陷、深层次漏洞更难以发现,后门更易于隐藏。第二,复用性。对软件算法或代码的复用符合人类正常的工程化思维模式,无可厚非。客观上,这也导致缺陷、漏洞被复制、传播。第三,劣币驱逐良币效应。总体来讲,软件是一种“不负责任”的产品。当因为软件的缺陷或漏洞给用户带来损害或损失时,软件商不会“照价赔偿”,而是告知用户,等待软件更新和升级。大多数软件开发商更多从产品投入产出效益上考虑,注重产品功能而轻视其安全性,一些不重视软件质量和安全的企业,却因为研发成本较低,而在商业竞争中胜出,形成劣币驱逐良币的现象。

其次,软件供应链安全问题与软件开发过程的质量保障能力不足有关,主要是缺乏提高软件产品安全性的有效措施和保障条件。保障能力越强,软件产品缺陷越少,健壮性越强,攻击者越难以发现和利用其漏洞。

最后,软件供应链环节多、分布广、种类杂,站在软件产品或信息系统的使用者位置,从供应链末端向后看各环节,信息的能见度和安全的可控程度逐步下降,对供应链前端的问题更是鞭长莫及。因此,需要从国家和行业层面加强对软件供应链的指导和监管。

三、确保软件供应链安全的三大核心工作

软件供应链安全问题是全球信息大国普遍面临的问题。欧美一直在寻求有效的应对办法。2011年5月,由美国时任总统奥巴马签署的《网络空间国际战略》(International Strategy For Cyberspace)指出,(网络空间)漏洞的消减需要健壮的技术标准和解决方案、有效的安全事件管理、可信的软硬件,以及安全的供应链(secure supply chains)作为支撑。围绕网络系统的防护,美国提出四项措施,其中包括加强与企业界合作,提升高技术供应链的安全水平。美国国家标准与技术研究院(NIST)相继出台供应链风险管理的指导文件,如2015年4月发布的《联邦信息系统和机构的供应链风险管理实践》(NIST.SP.800-161)。该文件提出了信息与通信技术供应链(ICT supply chain)概念,基本覆盖了软件供应链内容,并围绕其风险管理(Supply Chain Risk Management,SCRM)提供了相应的实施指南。

美国的IT公司巨头从自身长远商业利益出发,十分重视软件供应链安全并付诸实践。微软公司创始人比尔·盖茨(Bill Gates)于 2002年1月发起了微软可信计算计划(Trustworthy Computing Initiative),推出微软安全开发生命周期(Security Development Lifecycle,SDL),使安全成为设计、编码、测试软件产品的关键因素,并自主研制安全测试及分析自动化工具,明显提升了微软核心产品的安全性。谷歌公司作为全球领先的互联网企业,业务营收完全依仗其大数据、智能化信息系统的可靠、安全运行。因此,高度重视供应链的安全,组建多支安全审计小组,研发了分布式模糊测试系统Google OSS-Fuzz等分析检测工具,对自研软件和所采用的第三方构件,特别是开源构件进行严格的安全审计,曾成功发现安全通信开源软件包OpenSSL中的高危漏洞,包括GoToFail及心脏出血漏洞等。国内的大型互联网服务及设备制造企业也高度重视供应链安全,组建了多支安全攻防团队,为其庞大的信息平台保驾护航。

除IT公司巨头外,一些专业的安全公司和组织在供应链安全事件的发现与防护方面也功不可没,如国外的反病毒公司、以新思科技(Synopsys)、SAFECode,以及国内的360企业安全、安天、开源网安(SecZone)等。其中,新思科技公司拥有著名的软件静态分析工具Coverity,还并购了安全公司科诺康(Codenomicon),该公司曾因与谷歌公司先后独立发现心脏出血漏洞并率先为其命名而闻名。

当前,我国正在从网络大国向网络强国迈进。国家重要信息基础设施及重要信息系统数字化、信息化水平越高,对软件供应链依赖越大。因此,确保供应链安全是一个系统工程,核心工作包括以下三个方面。

第一,建立软件供应链安全生态体系。需要在国家主管部门领导下,发挥用户单位、科研单位及企业优势,四类角色分工明确:国家主管部门、软件用户单位、软件开发集成商和软件安全专业团队。他们相互关联、协同互动,形成确保软件供应链安全的有效防线(如下图所示)。

第二,推进基础理论及核心技术创新突破。研究程序语义理解、供应链安全模型,软智能化件代码安全分析等理论及技术,形成中、大型规模软件代码的快速理解与安全分析技术支持能力。

第三,软件安全专业人才培养。软件供应链安全需要大量的代码审计、网络攻防专业人员。应加强软件安全学科建设,着力培养软件逆向分析、安全审计、攻防对抗的多层次专业人才。

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

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