0
在诺大的安卓系统底层的沃土中,喂养了一个又一个不断蔓延着的深坑,虽然在软件层面,也躺着诸多的防护措施,但稍不注意也会一脚迈进洞穴之门。
Venus是搭载在高通芯片的智能手机上一款硬件解码器。如今越来越多的设备搭载解码器,对Venus的攻击面和漏洞研究,将为网络安全研究提供借鉴。
一支装备精良的武装队伍正在越过“马奇诺防线”直达安卓系统后方硬件解码器,上演着现实版的攻守战役,而这支队伍就是腾讯安全平台部的前瞻安全技术研究团队——腾讯Blade Team。他们直接绕过安卓系统的诸多软件保护,远程操控智能手机机载的硬件解码器,并以此为切入点寻求安全防护解决方案。
为了能够更进一步地了解Venus的架构、工作原理、攻击面,雷锋网编辑和腾讯Blade Team高级研究员G聊了聊,让他为我们深入解读“马奇诺防线”上的“攻守之道”。
Venus硬件解码器的“绕行”方式
在安卓开放源代码项目(AOSP)软件实现的过程中,很多研究人员都在安卓智能手机的音频、视频编码器的Stagefright框架里发现了大量漏洞,但是几乎所有的智能手机芯片厂商都需要使用硬件解码器来提高性能,降低功耗,因而需要将诸如H.264或H.265等复杂的视频格式优先由硬件解码器进行解码,这就给硬件解码器带来了一系列亟待解决的安全问题。
“每一种视频格式都类似于一个视频压缩方案,这是为了节省宽带、提高画质做出的一个平衡。当视频数据解压的时候,可能会有问题,解码器的安全隐患主要就在这里。”
G在研究中发现,Venus的安全隐患主要存在于非计算区域。作为搭载高通芯片智能手机上的一款硬件解码器, Venus是一款类似Baseband和WLAN专用于视频硬件解码的子系统。在这个子系统中会对指定的数据进行一些预处理,比如处理一个压缩过的图片数据,首先要做的就是提取,这是一个有结构的过程,用一个结构来描述哪一部分开始是这个图片,哪一部分结束是这个图片结束,最后怎么实现还原。虽然这个过程的计算量和计算密集度不是很大,但在这个结构处理过程中存在着许多安全问题。
在非计算区域的安全状态中存在着一些基本的安全措施,G指出主要有5种:
1、地址随机化,代码段随机化与数据段随机化的保护。
2、内存堆的保护,每一块生出的内存头部会有一些用来做校验的,如果有一个缓存区溢出,覆盖掉后面的数据后,系统会检测到。
3、栈保护,防止栈溢出和防止ROP链利用的保护。
4、W^X,这种保护不能在数据区域做执行,只能在代码区域做执行;不能直接把数据写到代码区域,不能覆盖掉已有的代码。
5、CFI,这是一种比较高级的防护,可以保护函数调用地址。
在这5种保护中,准确来说只有W^X是有的,而其他几种没有,因而这个保护实际上是很原始的保护,基本相当于没有,这也成为攻破解码器提供了切入点。
G表示,Blade Team绕过了三道防线进入到Venus。
第一道防线是浏览器的沙箱保护,视频是要在软件浏览器里面播放的,因而在做要突破浏览器的沙箱保护;第二道防线是要进入到高权限的进程,浏览器还只是一个普通进程,要提升至一个高权限进程,这样才能做高权限的事情;第三道防线要实现高权限进程与内核通信,从而控制内核。
“原本这些是安卓系统的保护,即沙箱、进程权限提升、内核的保护。但是我们在研究中,数据绕过了这三层保护,直接进入到Venus里。”
具体来说,在播视频文件时,视频数据会通过浏览器,流动至到Stagefright,然后经过内核的驱动传给Venus,最后Venus在解析这些数据过程中,会出现缓冲区溢出漏洞,从而受到攻击。
在实现绕道的过程中涉及到要绕过安全启动来设置实时调试器, Blade Team通过找到一台安全启动配置有问题的手机,这台手机的安全启动配置中有一项没有打开,因而可以在它启动的某一个过程改一些东西,改完之后再做更复杂的操作,最终能够修改整个固件,从而绕过安全启动。也就是通过一个小的配置去提升它的功能,再进一步修改整个固件,改完固件后再到固件里插入自己的代码,做成一个调试器。
G告诉雷锋网,绕过安全启动属于本地攻击,但不属于远程攻击的前提。本地攻击和远程攻击虽然没有直接联系,但对于黑客或者研究人员来说,先进行本地攻击后,会对后期远程攻击的步骤有一些了解,能够更好地知道目标的内部运行状况,从而更好的找到漏洞。
“这种硬件解码器的漏洞不仅在安卓系统包括高通平台中存在,在其他智能手机,甚至是音响、电视等其他设备中也存在。硬件解码器现在应用非常广泛,黑产通过这种绕行的攻击方式能够提升效率,最严重的情况下将在我们使用的设备中植入病毒控制整个设备。”
攻破Venus的关键: 调试器
在被问及为何要做这项议题时,G表示,腾讯Blade Team从2018年3月开始着手准备,试图挖掘有什么别人没有研究过的比较新的东西,同时对安卓系统影响又比较大。如果能够绕过安卓主流的防御系统机制,能不能通过这种方式去促进安卓整个生态进化发展。
在研究中,Blade Team首先去挖掘新的攻击面,发现硬件解码器是可以做,而别人也没有关注过的,是一个比较新的东西。于是经过一个月时间的评估后开始了进一步的研究。在接下来的进程中,G将其分为三个阶段:
第一阶段,研究调试器。弄清楚怎么做,并且知道怎么分析、理解、查看运行状态,这一阶段耗时一个多月。
第二阶段,漏洞发现。前期准备工作做得比较好,这一阶段进行的比较快。另外在之前的研究中没人去考虑这一点,防御也很薄弱,所以半个月就找到一个漏洞。
第三阶段,漏洞利用。漏洞利用阶段也比较快。找到的漏洞是常规的溢出漏洞,有一个内存,往里面拷贝数据,拷贝多了就可以覆盖后面一些比较有用的数据。而漏洞本身就是一个传统的漏洞,用传统的漏洞利用方式就可以做到,最终把目标攻下来。
整个研究到5月前后就完成了,前期的工作比较慢一些,但后面的漏洞发现、漏洞利用都比较快。在每一阶段的推荐过程中,Blade Team也遇到了一些困难。
首先是知识面的问题。对整个安卓系统在这一架构的理解不是很透彻,因而花费大量时间找切入点。目前Blade Team已经将这一块的知识点分享出来。
其次就是技术上的问题。由于之前没有人研究过,而里面的运行状况、运行原理、内存状况,都不清楚。并且Venus是跟基站或者Wi-Fi一同被保护的小系统,是个黑匣子,做这个议题就要突破这个保护机制,去研究它里面的运行状况和内存情况,技术上的问题相对费时。
这里面的安全保护机制主要有两方面。一方面是安卓系统原本对解码器的保护,对多媒体文件处理的保护。在此前的研究只考虑了软件层面,没有考虑硬件解码,所以对硬件的保护并没有起到作用。在软件解码上有非常多的能力和保护措施,但Venus的解码器攻击实际上绕过软件层面的保护,直接走到硬件层面的攻击,所以硬件的保护也是没起到作用。
另一方面是本地保护,因为高通会阻止研究这个目标,所以这一块的保护是起作用的,并且很严密。只是在出厂时有一些疏忽,这几台机器正好就配置错误,导致Venus攻击有机可趁。
在整个研究过程中,G表示印象最深刻的一个节点就是在做调试器的阶段,要突破本地的保护需要花很多时间,找了很多方法去研究它本身保护是怎么做的,但一直都没什么进展。后来突然有一天发现了检查没有开启,最终用配置上的漏洞把调试器做出来。这样才得以进行下一步的工作。
这对于一项创新性的研究来说,眼前一亮的感觉足以让人振奋。在G看来,这样的发现是有规律可循的,每一次做类似研究都会有一个类似的节点存在,突破了之后就清楚地知道下一步的方向,G称之为外围设备或者固件攻击。
“比如我们研究的另外一个目标,高通WLAN固件,也有类似的情况。我印象最深的是把调试器做出来,才能找到一个漏洞写调试器,关键节点还是在调试器。对于调试器,首先要理解Secure Boot是怎么做校验,逻辑是怎样的。其中有很多技术上的细节,可以做一个代码分析,也可能要自己检测,理解内部逻辑,再从整个逻辑中发现漏洞。
由此看来,不管是WLAN还是Venus的议题,调试器都是至关重要的东西,调试器的开启过程都是整个研究里的一个转折点。雷锋网雷锋网雷锋网
“攻守”之间的平衡点
G表示,对Venus解码器攻击研究的最终目的是希望减少系统的攻击面,制定安全的防守方案。“对我们来说主要是跟厂商合作,告诉他们哪些地方容易出问题,有问题我们是怎么去攻击的。”
实际上,指出存在的问题只是第一步,其次还要告诉厂商确实能够实现这样的攻击。而最主要的还是依赖于厂商自己的所作所为。
“比如厂商发现原来某个地方有这样一个攻击面,而我们以前没有看过,现在要提升里面的安全保护,他们会去提升安全防御措施。通过找到一个问题,把同类问题都修复掉,我们能够做的就是指出这里面的风险。”
针对Blade Team发现的这个漏洞,高通的响应非常迅速,已经对发现的问题发补丁,对同类问题进行了内部审计,并且已经对Venus进行了防御加固。
除了通过软件的形式来做阻挡,在理论上攻击链条上每一环都可以做阻挡。比如浏览器里播视频,可以在浏览器里检测这个视频是不是合法视频。也可能进入到下一层,比如在安卓多媒体框架里做检测。但在实际上,最终的防御都是在Venus本身做,很多检测是没有必要的。
在提到关于硬件解码器的研究Blade Team是否会继续深入挖掘时,G表示目前的计划已经告一段落。但对于此类漏洞,他表示很多设备都有可能受到硬件解码器安全问题的影响,对于其他设备和系统的解码器漏洞研究将是大势所趋。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。