报告:软件供应链攻击类型与应对
2020-12-29
来源:虎符智库
0 摘要
2020年12月13日,全球最著名的网络安全管理软件供应商SolarWinds遭遇国家级APT团伙高度复杂的供应链攻击并植入木马后门。该攻击直接导致使用了SolarWinds Orion管理软件某些版本的企业客户全部受到影响:可任由攻击者完全操控。同时,SolarWinds在其官网发布安全通告称,受影响的产品为2020年3月至2020年6月间发布的2019.4到2020.2.1版本的SolarWinds Orion管理软件,并表示约有18000名客户下载使用了受影响的软件产品,但攻击者并未对所有使用者采取进一步的攻击行动,而仅选择感兴趣的目标开展后续攻击。虽然该攻击只针对特定的目标用户,但攻击者通过更新用于判断是否进一步实施攻击的“目标名单”,则可以攻击几乎所有受影响用户,导致用户计算机被攻击者完全控制。这类来源于供应链并最终造成巨大危害的安全事件其实并不少见,在本报告中,奇安信威胁情报中心对软件供应链的概念进行了梳理,分析了各环节中已有的事件实例,最后提供一些从供应链安全角度对威胁进行防护的对策和建议。
1 概述
北美时间2020年12月13日,多家欧美媒体报道美国多个重要政企机构遭受了国家级APT组织的入侵,攻击疑似由于网络安全管理软件供应商SolarWinds遭遇国家级APT团伙高度复杂的供应链攻击并植入木马后门导致。奇安信威胁情报中心第一时间通过解码部分DGA域名,推导出部分受害者计算机域,从而发现大量中招的知名企业和机构,其中不乏Intel、Cisco等在美高科技企业以及各类高校和政企单位。2019年3月25日,华硕(ASUS)升级服务程序被暴植入了后门代码,导致大量使用该品牌计算机的用户受到影响。2019年3月初,ESET披露了针对两款游戏软件和一个游戏平台的供应链攻击活动,受影响的三个公司都被植入了同一类后门。同时,近年来大量的使用软件捆绑进行传播的黑产活动也被揭露出来,从影响面来看这些恶意活动的力度颇为惊人,这类来源于供应链并最终造成巨大危害的安全事件其实并不少见,而我们所感知的可能只是冰山一角而已。
以最近这些事件为切入点,奇安信威胁情报中心对软件供应链来源的攻击做了大量的案例分析,得到了一些结论并提供对策建议。在本报告中,奇安信威胁情报中心首先对软件供应链的概念进行了梳理,划分了开发、交付及使用环节。然后针对每个环节,以实例列举的方式分析了相应环节中目前已经看到过的攻击向量,同时提供了每个事件的发生时间、描述、直接威胁和影响范围等信息。在这些案例分析的基础上,整合信息做可视化展示并提出一些结论。最后,基于之前章节的事实分析,奇安信威胁情报中心提出了从供应链安全角度对相应威胁进行防护的对策和建议。
1、软件供应链相关概念
概念和环节划分
传统的供应链概念是指商品到达消费者手中之前各相关者的连接或业务的衔接,从采购原材料开始,制成中间产品以及最终产品,最后由销售网络把产品送到消费者手中的一个整体的供应链结构。
传统商品的供应链概念也完全适用于计算机软硬件,则可以衍生出软件供应链这一概念。出于简化分析的目的,我们将软件供应链简单抽象成如下几个环节:
开发环节
软件开发涉及到的软硬件开发环境、开发工具、第三方库、软件开发实施等等,并且软件开发实施的具体过程还包括需求分析、设计、实现和测试等,软件产品在这一环节中形成最终用户可用的形态。
交付环节
用户通过在线商店、免费网络下载、购买软件安装光盘等存储介质、资源共享等方式获取到所需软件产品的过程。
使用环节
用户使用软件产品的整个生命周期,包括软件升级、维护等过程。
灰色供应链
在国内,众多的未授权的第三方下载站点、云服务、共享资源、破解盗版软件等共同组成了灰色软件供应链,这些环节的安全性问题其实也属于软件供应链攻击的范畴,但由于这些问题属于长期困扰我国信息系统安全的灰色供应链问题,具有一定的中国特色,故单独进行说明。
我们在接下来的事件分析中会有很多涉及到灰色供应链的案例,特别是软件交付环节中的“捆绑下载”等案例,以及各类破解、汉化软件被植入木马后门等,而这些案例也会被归属到我们定义的软件供应链攻击范畴中。
2、攻击场景与案例分析
前面定义了软件供应链的概念并抽象出了软件供应链的几大环节,那么显而易见的是,攻击者如果针对上述各个环节进行攻击,那么都有可能影响到最终的软件产品和整个使用场景的安全。从我们分析的多个现实攻击的案例来看,第三方库、开发工具、开发软硬件环境、到达用户的渠道、使用软硬件产品的过程等供应链相关的安全风险,并不低于针对软件应用本身、相应操作系统的安全漏洞导致的安全风险。
近年来我们观察到了大量基于软硬件供应链的攻击案例,比如针对Xshell源代码污染的攻击机理是攻击者直接修改了产品源代码并植入特洛伊木马;针对苹果公司的集成开发工具Xcode的攻击,则是通过影响编译环境间接攻击了产出的软件产品。这些攻击案例最终影响了数十万甚至上亿的软件产品用户,并可以造成比如盗取用户隐私、植入木马、盗取数字资产等危害。接下来我们将从划分出来各环节的角度,举例分析这些针对供应链攻击的重大安全事件。
开发环节
软件开发涉及到软硬件开发环境部署、开发工具、第三方库等的采购/原料供应、软件开发测试等等,各环节都可能被恶意攻击,在针对软件开发环境的攻击中就有开发机器被感染病毒木马、开发工具植入恶意代码、第三方库被污染等攻击方式。
而具体的软件开发更是一个复杂的过程,不单单是源码的编写,还涉及到诸如需求分析、开源/商业库使用、算法、外包开发等等复杂环节,其中的各个环节都有可能被攻击并造成严重后果。最近的Xshell后门代码植入事件就是最切实的例子,更早的事件还包括NSA联合RSA在加密算法中植入后门等,下面是我们整理的在开发环节针对开发环境以及软件开发过程进行工具污染、源代码攻击以及厂商预留后门等真实案例。
开发工具污染
针对开发工具进行攻击,影响最为广泛的莫过于XcodeGhost(Xcode非官方版本恶意代码污染事件),值得一提的是早在30多年前的1984年,UNIX创造者之一Ken Thompson在其ACM图灵奖的获奖演讲中发表了叫做Reflections on Trusting Trust(反思对信任的信任)的演讲。他分三步描述了如何构造一个非常难以被发现的编译器后门,后来被称为 the Ken Thompson Hack(KTH),这或许是已知最早的针对软件开发工具的攻击设想。而最近的XcodeGhost最多只能算是KTH的一个简化版本,没有试图隐藏自己,修改的不是编译器本身,而是Xcode附带的框架库。
Winnti:针对亚洲游戏厂商的供应链攻击事件
源代码污染
软件产品如果在源代码级别被攻击者植入恶意代码将非常难以被发现,并且这些恶意代码在披上正规软件厂商的合法外衣后更能轻易躲过安全软件产品的检测,或许会长时间潜伏于用户机器中不被察觉,最近曝光的远程终端管理工具Xshell被植入后门代码则属于这类攻击中的经典案例。
流行网管软件厂商SolarWinds遭供应链攻击事件
厂商预留后门
软件厂商在开发过程中出于方便测试或后续技术支持的考虑可能会预留一些超级管理员账户在软件产品中,而当软件正式发布时忘记删除或故意留下这些“后门”,导致产品发布后被攻击者利用造成巨大危害,多个厂商的家庭路由设备都曝光过此类安全事件。
而某些厂商处于国家安全的需要,可能也会为国家安全部门预留一些“接口”,方便获取用户敏感数据,比如曝光的“棱镜门”。
棱镜计划
交付环节
软件从开发商到达用户手中的过程都属于软件交付环节,在互联网时代,这个过程主要是通过购买/共享存储介质、网络下载等方式实施。
而基于我国的“国情”,国内针对软件交付环节进行攻击的案例最为广泛,因为攻击成本最低,主要体现在软件捆绑下载安装这类攻击手法中,另外还有诸如下载劫持(域名劫持、城域网缓存毒化)、物流链劫持等攻击手法。
捆绑下载
我们已经提到过,众多的未授权的第三方下载站点、云服务、共享资源、破解版软件等共同组成了灰色软件供应链,而通过灰色软件供应链获取的软件极易被攻击者植入恶意代码,比如2012年初的汉化版Putty后门事件,因为非官方汉化后被植入后门木马导致大量系统管理员账号密码泄露引发重大安全威胁。
不仅灰色供应链中获取的软件极易被植入恶意代码,就连某些正规的下载站、应用市场,由于审核不严等因素也被攻击者植入过含有恶意代码的“正规”软件,比如WireX Android Botnet 污染 Google Play 应用市场事件。我们将所有这类针对用户获取软件产品的源头进行恶意代码植入的攻击统称为“捆绑下载”。
WireX Android Botnet
下载劫持
软件从各种网络渠道下载过程中也可能受到攻击,比如被捆绑恶意软件、篡改、劫持下载的域名等,以下列举一些实际的攻击方式:
域名劫持
攻击者通过劫持下载站点的域名,使得用户访问到攻击者指定的下载站点下载恶意软件,而用户却全然不知,比如2010年百度域名劫持事件。
CDN污染、P2P缓存毒化
攻击者通过CDN污染、P2P缓存毒化等方式,使得用户在使用某些下载软件提供的缓存加速功能时下载到攻击者事先毒化后的文件块,而前面提到的“Xcode非官方版本恶意代码污染”事件所涉及的软件版本就有通过被P2P缓存毒化后植入非官方版本的可能。
参考链接:
http://weibo.com/3802345927/CBAPoj5IR
http://weibo.com/1401527553/AaPhvCON9
http://blog.csdn.net/u011354613/article/details/52025387
物流链劫持
在软硬件交付环节中,针对物流链层面的攻击也有不少相关案例,攻击者可能通过替换、植入、修改等方式在软硬件产品送达消费者之前的整个物流环节中进行攻击。
常见的攻击方式有:软硬件产品代理生产环节攻击(生产安装光盘等存储介质时植入木马)、运输环节对产品进行掉包替换等等,下面是相关案例介绍。
“方程式”组织硬盘固件程序攻击
卡巴斯基安全实验室在2015年2月16日起发布系列报告披露了一个可能是目前世界上存在的最复杂的网络攻击组织:“方程式”组织(Equation Group)。
该组织拥有一套用于植入恶意代码的超级信息武器库(在卡巴的报告中披露了其中6个),其中包括两个可以对数十种常见品牌的硬盘固件重编程的恶意模块,这可能是该组织掌握的最具特色的攻击武器,同时也是首个已知的能够感染硬盘固件的恶意代码。
而通过相关安全公司分析的结论我们可以推论,在此次硬盘固件程序攻击事件中可以做到如此有针对性(特定目标、行业),部分攻击方式极有可能属于物流链劫持,即在特定目标采购、返修主机或硬盘的过程中修改了硬盘固件。
使用环节
软硬件产品抵达消费者手中后则属于软件使用环节,而用户在使用过程中,除了产品本身的安全缺陷造成的威胁以外,还可能遭受使用环境等带来的威胁,针对使用环节常见的攻击方式主要有软件升级劫持等。
升级劫持
软件产品在整个生命周期中几乎都要对自身进行更新,常见的有功能更新升级、修复软件产品BUG等等。攻击者可以通过劫持软件更新的“渠道”,比如通过预先植入用户机器的病毒木马重定向更新下载链接、运营商劫持重定向更新下载链接、软件产品更新模块在下载过程中被劫持替换(未校验)等等方式对软件升级过程进行劫持进而植入恶意代码。下面是相关案例:
Lazarus组织利用WIZVERA VeraPort软件的供应链攻击活动
NotPetya
2 综合分析
1、事件信息展示图
奇安信威胁情报中心对以上供应链相关的实际案例根据其涉及环节、事件披露年份和影响面的大小形成了如下图示,使读者对这些事件有个比较直观的对比:
2、主要发现与结论
我们将近年来所有重大的针对软件供应链攻击的安全事件的多个属性进行梳理,配合上一节中的时序图可以发现,针对供应链攻击的安全事件在影响面、严重程度上都绝不低于传统的针对产品本身、操作系统的漏洞攻击,我们从以下几个维度总结软件供应链攻击的现状:
从事件数量上看:大量的软件捆绑、流氓推广等针对供应链下游(交付环节)攻击的安全事件占据了供应链攻击的大头,受影响用户数多在百万级别,并且层出不穷,而这几类针对供应链的攻击可能事实上比流行漏洞导致的安全事件还要多。蠕虫级别的漏洞(MS08-067、MS17-10等)所导致的大规模的安全事件已经很少了,IOT类设备的安全问题导致的大规模Botnet构建活动在近期却非常活跃,但前两者的影响其实还远没有来自供应链的大。
从影响面上看:由于基于软件捆绑进行流氓推广的供应链攻击大多采用了白签名绕过查杀体系的机制,其行为也介于黑白之间,因此从影响用户数来说远超一般的漏洞利用类攻击。而类似于XcodeGhost这类污染开发工具针对软件供应链上游(开发环境)进行攻击的安全事件虽然数量上不及针对交付环节的攻击,但攻击一旦成功,却可能影响上亿用户。所以,从整体上说供应链安全事件影响的用户数远比一般的漏洞影响还要大。
从场景/环节上看:从上节的图中我们可以看到,大部分针对供应链攻击的安全事件主要集中在供应链下游(交付环节),这个环节出现最多的就是软件捆绑一类的攻击,而在开发环境/开发环节进行攻击的事件却偏少,不过这类攻击一旦发生则更为隐蔽,影响更为深远,并且发生在这一环节的攻击多属于国家行为。
从趋势上看:针对供应链各环节被揭露出来的攻击在近几年都呈上升趋势,在趋于更加复杂化的互联网环境下,软件供应链所暴露给攻击者的攻击面越来越多,并且越来越多的攻击者也发现针对供应链的攻击相对针对产品本身的漏洞攻击可能更加容易,成本更低。
3 对策建议
在针对软件供应链攻击的整个场景中,主要涉及三类责任主体:
最终用户
软硬件厂商
安全厂商
其中最终用户和软硬件厂商实际上组成了整个应用场景,而安全厂商需要对应用生态提供安全相关的支持。基于这三类主体的不同需求和责任,奇安信威胁情报中心分别提供如下的建议:
1、最终用户
在软硬件供应链中最终用户基本涉及交付和使用环节,我们建议最终用户注意以下几点:
尽可能使用正版和官方渠道输出的软件。上面的分析可以看到软件捆绑恶意代码是供应链攻击的最主要渠道,除了极少数的特例(如Xshell后门代码事件),如果完全使用正版软件可以抵抗绝大部分供应链攻击。使用搜索引擎搜索下载软件注意辨别下载链接是否是官方链接,如果是第三方下载站则需要注意是否为常用下载站,并点击正确的下载链接。下载使用各类非官方、盗版、破解以及来源不明的软件需要非常谨慎,使用奇安信天擎一类的防病毒木马、流氓软件的工具进行扫描以尽可能降低风险,如果有条件尽量使用虚拟机运行此类软件。对于企业用户,如果有资源,软硬件上线使用前委托有能力的测评机构进行安全性评估,尽可能发现可能存在的安全隐患。
安装防病毒软件,打开实时防护,设置自动病毒库更新。尽管现在安全业界一股唱衰传统病毒防护方案的风气,然而我们不得不面对的现实是作为终端上最主要的一道防线其作用依然不可取代,特别是基于云安全架构的解决方案可以非常有效地应对已知的大规模威胁,比如WannaCry和Petya这类勒索蠕虫。
企业用户需要建设态势感知,完善资产管理及持续监控能力,并积极引入威胁情报。对于企业用户,由于保存了大量高价值数据并集成了强大的处理能力,一旦基于供应链的攻击得逞可能导致敏感信息的泄露和关键系统非授权受控,相应的业务和声誉损失远超个人用户。
尽管必须努力阻止供应链攻击的进入,但过往的安全实践也已经证明基于单点防御的银弹思维是失败的。基于某些环节必然被突破的假设,组织机构需要建立自己的纵深防御和持续监控机制,处理发现的异常,挖掘值得深入调查的事件。对组织自身的软硬件信息资产情况有完备的跟踪,当有供应链相关的威胁情报被通报时,组织就可以根据当前资产的匹配情况立即定位到受影响的资产加以处置,这时,如果有强大的集中管理工具则可以成百倍地提升处置效率,减少暴露在威胁下的时间把损失降低到最小程度。Xshell后门代码事件中,如果受影响的组织订阅了相关的情报,则有可能快速采取补救措施。并且这时如果组织内有奇安信天擎这样的集中化的终端管控工具,就可以快速了解哪些终端使用着有后门的Xshell工具,批量化地进行软件升级并对受影响的终端做进一步的处理。
遵循权限最小化原则缩减攻击面,这也同样基于供应链的开发和交付环节必然被突破的假设。假设组织所使用的交换机路由器存在厂商有意无意植入的后门账号或安全漏洞,那么就会提醒我们至少需要保证其接口的访问来源是尽可能受限的,最低限度要防止资产直接暴露在互联网上而又不对访问来源IP进行限制,这样即使系统存在后门或漏洞也无法被大多数人利用。进行防御性的访问权限配置,缩小攻击面事实上是应对未知威胁最有效的方法论,但它对IT系统的管理能力提出了很高的要求,真正做到并不容易。
2、软硬件厂商
XshellGhost、棱镜门等真实案例证明了软件开发交付环节被攻击后的巨大危害,故软件开发及交付环节的安全防范至关重要,我们建议软件厂商在软件开发交付环节尽可能做到:
建立可信的开发环境,这包括可控可信任的软硬件环境,诸如正规渠道购买、下载的软硬件,可信的第三方开源/商业库、算法等,采购安全可信的软件外包服务。关注所用组件的安全通告,如被揭露出严重安全问题,通过配置或加入其他安全性控制作为缓解措施,必要时升级相关的组件。
培养开发人员的安全意识,在开发过程的各个环节建立检查点把安全性的评估作为一个必要评审项。开发环节严格遵守开发规范,防止类似调试后门等安全威胁的产生。开发完成的软硬件发布前交给独立的内部或外部测评组织进行安全性评估,及时解决所发现的问题。
在正规渠道发布软件,提供给用户可以验证安装包是否正确的数据,比如软件包的校验和信息。软件安装时校验自身的完整性,升级更新自身时校验下载回来安装包的签名,保证不运行被劫持的升级包。
3、安全厂商
长期以来安全厂商大多以软硬件、操作系统本身的漏洞为中心提供产品和服务的解决方案,针对供应链环节的安全问题似乎并没有投入足够的关注。通过上述对软件供应链各环节的重大安全事件分析可以看到,软件开发、交付、使用等环节都存在巨大的安全威胁,其导致的危害并不低于安全漏洞所导致的情况,因此仅关注软件及操作系统本身的安全威胁是远远不够的。所以,安全厂商需要从完整的软件供应链角度形成全景的安全视野,才能解决更多纵深的安全风险。基于最终用户和软硬件厂商的需求,安全厂商可以加强如下几点:
提升发现软硬件产品中安全问题的能力,不仅限于通常意义上的安全漏洞,需要拓展到后门及默认内置账号类的隐藏访问机制的发现,及时输出相应的威胁情报协助厂商和最终用户消除威胁。8月中的Xshell后门代码事件中,奇安信威胁情报中心在国内最早确认了软件中后门的存在并发布了相关的通告,输出了可以帮助用户定位受影响系统的IOC,真正开始驱动事件响应。
提供创新型的产品和服务,为用户实现全面细致的态势感知,提供有效的资产管理和持续监控工具,并提供威胁情报能力帮助用户完成安全事件的快速检测和响应。揭示企业IT环境中安全相关的异常情况,给组织内安全团队提供值得调查分析的精准事件线索,发现可能的未知攻击。如Xshell后门事件,安全厂商先通过非正常域名的访问流量定位到相关的终端,最终在机器上找到发出相应网络请求的恶意代码。