中国信息安全测评中心 马金鑫
软件供应链攻击,一般是指在软件的设计、开发、集成、部署、升级、修复等过程中,植入恶意程序或代码(攻击者可能利用漏洞或管理上的安全缺失进行代码植入),对计算机系统造成损害。从在更新过程中替换相关补丁文件的简单攻击,到入侵代码库插入恶意代码的复杂攻击,软件供应链攻击在网络攻击中所表现的形式呈多样化。软件供应链攻击可轻易绕过传统的防御壁垒,并且可长期潜伏在目标系统中,对系统安全构成严重威胁。近几年,软件供应链安全问题越来越突显,对其进行研究并加以防范,对维护网络空间安全的意义重大。
一、软件供应链攻击事件数量持续增加
根据360威胁情报中心的《软件供应链来源攻击报告》,近几年发生的软件供应链攻击事件达30多起。从这些攻击事件可以看出,软件供应链攻击呈现出的特点包括隐蔽性较强、影响范围较广、攻击门槛相对较低等。
1.软件供应链攻击影响范围更大
从影响范围看,软件供应链攻击往往发生在软件生态环境的根源和传输环节,具有天然的扩散属性,一次攻击足以引发大规模的攻击事件。针对生产环节的软件供应链攻击所造成的影响比针对运营环节的攻击大得多,因为生产环节处于软件供应链的上游,一旦遭到攻击,即可波及更多下游环节。在2015年的XcodeGhost事件中,Xcode编译器被恶意篡改,导致苹果应用商店(AppStore)中下载量最高的5000个应用程序(App)中有76款被感染,其中包括多家大公司的知名App。安全漏洞攻击一般发生在单点上,通用软件的漏洞攻击无疑也会导致较大规模的影响,但是,由于其较弱的传播能力,在影响范围上不及软件供应链攻击。
2.软件供应链攻击的检测难度较高
软件供应链攻击的隐蔽性较强,多数软件供应链攻击发生在软件的生产、传输过程中,在传统观念中,这些环节被默认是安全的(尤其是生产环节,几乎所有人都认为编译器是可信的),终端防护也很少对这些环节进行检测。软件供应链的检测需要联动的合作机制,难以从单点上发现。2017年6月发生的NotPetya勒索病毒事件,攻击根源来自于M.E.Doc公司的更新服务器,而该公司安全能力较低,在这种情况下,要从根源上去检测并根除这种攻击的难度非常大。
3.软件供应链攻击的数量呈上升趋势
在越来越复杂的互联网环境下,软件供应链暴露给攻击者的攻击面也越来越多。攻击者利用软件供应链各个环节中的脆弱点实施攻击,攻击门槛相对较低,安全漏洞并不是必需条件,管理中的安全问题或相关人员的薄弱安全意识被利用,也足以导致遭受软件供应链攻击。近些年,越来越多的攻击者利用这种特点实施攻击,例如“Putty后门事件”,攻击者仅需向某个常用工具中注入恶意代码,并将其发布在网络上,便会不断有人下载使用。
二、软件供应链攻击主要体现在生产和运营两环节
软件供应链攻击的成因主要在于在软件生命周期内被植入恶意代码所导致,从被攻击环节的角度考虑,软件供应链攻击主要在生产和运营两大环节产生。
在生产环节,编译器是被攻击的重要目标。编译器的正确性要求编译前后的源码与目标代码须在语义上保持一致。在某些场景下,编译器厂商出于某种目的可能会插入与源码无关的代码,如为满足安全性和测试需求,微软的开发集成环境Visual Studio默认会在编译链接过程中加入栈保护(GS)、动态基址(DynamicBase)和遥测(Telemetry)等功能。一般情况下,这些额外的代码并不会产生恶意后果。若编译器是可信可靠的前提条件被推翻,编译器被植入恶意代码,那么,其编译生成的目标代码也将被感染。编译器的迭代编译又使新编译器被老旧编译器污染,最终导致恶意代码的繁衍和扩散。Unix系统的创始人之一肯·汤普森(Ken Thompson),曾提出在编译器自身编译的过程中加入后门代码,使其在编译任意源码时都可将后门插入到目标代码中。
软件集成过程同样容易遭受攻击。Github、SourceForge等源代码管理网站为开发人员代码共享提供了便利平台。据统计,Github上存储了9千多万个项目,用户量达到3100万;SourceForge的用户量达到3300万。在这些网站上,所有人都可参与源代码的开发与维护,提交自己的代码分支,这就使恶意代码的植入有机可乘。项目集成和代码复用带来额外的风险,未对第三方代码与软件进行安全检测与审查,是导致供应链问题出现的主要原因。系统中,任一组件被植入恶意代码,便可破坏整个系统的安全性。
在软件运营环节,尤其是在更新或升级过程中,多数软件并未对升级过程进行严格检查,从而使攻击者有机可乘。在用户升级或更新过程中,攻击者可能通过中间人攻击替换升级软件或补丁包,或诱骗用户从非官方渠道下载,以达到网络攻击的目的。攻击者还可通过捆绑攻击的形式,即在常用软件中捆绑额外的软件并发布,用户在下载安装该软件的同时,也将其他软件一并安装到本地。
三、软件供应链安全的研究与推进工作
软件供应链安全越来越受到关注,安全研究团队、安全公司,甚至在国家层面,都开展了软件供应链安全的研究与推进工作。
在软件供应链安全研究方面,国内外研究所、安全公司重点围绕软件供应链攻击事件进行跟踪分析,以寻求技术解决方案。例如,360威胁情报中心发布的《软件供应链来源攻击报告》,研究近几年发生的软件供应链攻击事件,从用户、生产厂商、安全厂商的角度分别提出相应的解决方案。在理论研究方面,吴世忠等人编著的《信息通信技术供应链安全》,主要探讨了软硬件供应链的安全风险,并提出了相应的对策建议。在实践活动方面,2018年3月,阿里安全正式启动“功守道”软件供应链安全大赛。该比赛通过模拟真实软件供应链攻击案例,利用攻守方的技术博弈,以期促使更多人关注软件供应链安全技术的发展,这是国内首次以软件供应链攻防技术为主题的比赛活动,也是产业界在软件供应链安全技术研究领域的一次有意义的探索。
在软件供应链安全标准制订方面,2018年10月,由中科院软件所、华为、联想、蚂蚁金服等公司起草的国家标准《信息安全技术 ICT供应链安全风险管理指南》发布。该标准规定了信息通信技术(ICT)供应链安全风险管理的过程和控制措施。2013年8月,美国国家标准和技术研究所(NIST)制定了《联邦信息系统和组织的供应链风险管理指南草案》,并于2015年2月发布了更新版本的《联邦信息系统供应链风险管理指南》,指导联邦政府采取相应措施,以减少ICT供应链风险。
在软件供应链安全政策方面,美国在2009年发布《美国网络安全空间安全政策评估报告》,将ICT供应链安全提高到国家战略层面。
总体来说,目前我国在软件供应链安全技术方面的发展还处于起步阶段。虽然软件供应链安全的问题在我国较早被提出,但是推行力度还远远不够。在国家层面,缺少体系化的制度和相关政策予以支持。在行业层面,对软件供应链安全技术研发的投入不够。在社会层面,对软件供应链安全问题缺乏重视,未建立起相关工作机制。
四、应对建议
软件供应链的攻击事件持续增加,这种攻击所带来的风险不只局限于经济利益、知识产权、数据隐私的破坏与窃取,还可能对国家安全构成威胁。基于此,本文提出如下几点应对建议。
在国家层面,强化软件供应链安全体系建设,把软件供应链安全摆在突出位置,继续推进核心技术软件的可靠自主可控。目前,我们国家在关键软件技术方面还无法实现完全自主可控。操作系统、办公软件、中间件等方面均需采购使用国外生产的软件,这将是我国推进软件供应链安全进程的不利因素。建设可信软件供应链安全体系,出台相关政策制度,推行相关行业标准规范,建设全方位、多层次、立体化的联动工作机制,督促多行业共同努力,维护软件供应链安全。
在行业层面,强化安全意识,把安全落实到软件开发运营的整个流程。建立可信软件生产运营环境,确保软件生命周期的可靠安全。规范第三方开发商、第三方软件的安全集成,对必须要引进的第三方开发商及其软件进行安全审查与测评。加强软件供应链安全技术研究与创新,着力发展和完善软件供应链安全检测与防御技术。加强软件安全测评与漏洞分析,避免安全漏洞被攻击者所利用进行攻击。建立高效应急管理和保障机制,在攻击事件发生后,应尽快控制态势,缩小影响范围,降低危害程度。
在社会层面,强化协调配合,形成多方参与的软件供应链安全保障格局。在国家科技重点专项中,加大对软件供应链等技术研发的投入。鼓励和支持安全检测机构和社会力量围绕关键基础设施的软件供应链开展漏洞分析与安全测试。培养全民网络安全意识,避免使用不可信来源的软件,通过官方途径进行软件的更新、升级、使用。借助安全检测防护相关产品与服务进行安全托管,加强安全防御能力。
总之,软件供应链安全维系着整个国家、行业、社会的安全,解决软件供应链的安全问题,需要国家的鼓励与支持,需要各行各业的共同努力。维护软件供应链安全,是网络空间安全不可或缺的关键因素,也是国家安全保障的必然要求。
(本文刊登于《中国信息安全》杂志2018年第11期)
声明:本文来自中国信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。