转载

Android平台漏洞挖掘与利用

  由于 Android 平台特殊的生态,每一个 Android 设备中存在着 Google、手机开发商、芯片厂商等多种来源的软件。每个软件模块没有统一的安全审计制度和测试流程,导致质量良莠不齐,对于安全研究者乃至于恶意攻击者来说,一直是一个比较好的目标。 

  从安全的角度考虑, Android 平台利用 Linux 的 uid 特性把权限做了很好的区隔,使得在 App 层级,权限比较受限,一方面阻隔了许多恶意软件可能造成的破坏,另一方面也限缩了用户能够掌控自己设备的能力。例如,卸除用不到的预装软件、清理、加速、杀毒这类的功能,在 Android 平台上因为权限的关系,都不容易进行。 

  为了因应用户强烈的需求,Rooting App 工具软件诞生了。Rooting App 利用各种系统漏洞帮用户提升权限,也让 Android 漏洞在近年来被大量挖掘,利用的手法也不断演进,同时也促使厂商更注重 Android 平台的安全性。 

  在 Android 平台上,最底层也是各种权限控制的中枢是 Linux 内核。Linux 内核主体是社群维护的操作系统,也包含了 Google、手机厂商、芯片厂商的各种扩展。其中,手机厂商与芯片供货商提供的设备驱动这一部分,一直以来都存在许多安全漏洞。例如,2012 年底开始出现 mmap 类的漏洞利用,第三方软件可以轻易地修改内核数据甚至代码来提权。Samsung 平台上的 CVE-2012-6422 漏洞,算是其中大家比较熟知的。 

注:mmap 是一个用来映像内存空间的系统调用,常用于从内核暴露一段地址空间让用户态可以更有效率的进行内存读写。

  除了 mmap 类的漏洞外,用户态与驱动数据交换导致的任意地址写漏洞也在 2013 年开始大量被发现。例如 Qualcomm 平台上的 copy_from_user 类漏洞 CVE-2013-6123,第三方软件可以用伪造的数据与摄像头驱动做交互,进而修改任意地址的内容。 

注:copy_from_user 是一个 Linux 内核中的应用程序接口,用于从用户态拷贝数据到内核态。例如,应用程序设定内核驱动中的某个变量,常会用到这个接口。

Android平台漏洞挖掘与利用

  提到 Android 漏洞,当然不得不提 2013 年出现的通用型漏洞。CVE-2013-6282 算是最早被用在 Rooting App 中的通用型漏洞,它是一个内核层级的应用程序接口调用缺少必要的参数检查,导致攻击者可以透过一个简单的系统调用做到任意地址写。搭配 Linux 内核的信息泄露设计疏失,使得利用这个漏洞做提权的工具几乎可以横扫当时所有的 Android 设备。 

  其他包括 CVE-2014-3153,以及 CVE-2015-3636,都算是存在 Linux 内核操作系统的漏洞,可以适用于大部份 Android 设备。其中,近期发现的 CVE-2015-3636 是一个关于内存分配与释放的逻辑错误,是一种比较难被发现而且利用门坎较高的漏洞类型,特征不如前面两个类型明显,需要对于代码逻辑有较深的理解才能挖到漏洞。而漏洞利用时需要的合适攻击目标也比较难定位,这一部分只能依靠平时积累经验以及多充实工具库,如此一来,当漏洞出现时能尽快找到合适的武器。 

  除了权限中枢 Linux 内核以外,对于拥有较高权限的进程也是被关注的目标,例如 mediaserver 这样的进程,由于需要处理多种媒体文件格式,使用了大量第三方应用库,也同时引入了很多安全漏洞。其中,Stagefright 的一系列问题在 2015 年 8 月开始大量被披露,其攻击手段就是利用第三方应用库处理较复杂的媒体文件格式时,没考虑到的边界情况导致溢出,进而控制 mediaserver。由于这些媒体文件可以以 MMS 的形式传递到手机,对 Android 手机用户是一个很大的威胁。 

Android平台漏洞挖掘与利用

  相较于 media 权限,以 system 权限执行的 system_server 更是攻击者觊觎的一个目标,CVE-2014-7911 就是通过第三方软件准备的数据使得 system_server 进程执行任意代码,获取 system 权限后,更多的攻击目标会被暴露在外,例如使用 Qualcomm 一系列芯片的手机上存在的 CVE-2014-4322 漏洞,在正常的情况下,第三方软件是无法与其相关的驱动做交互。然而,利用 CVE-2014-7911 提升到 system 权限后,CVE-2014-4322 相关的设备文件就能被打开,进而造成有效的攻击。 

  只要人类继续写代码,漏洞无可避免地会被持续制造出来,并且被挖掘与利用。一方面,开发和测试人员应该关注的是如何有效地审计代码,在用户使用之前找出可能的漏洞。另一方面,假设漏洞必然存在,厂商应该与安全研究人员积极的合作,更快速地修补漏洞。然而,由于漏洞修补的实时性存在很多不可控的因素,如何使用更底层的保护机制避免漏洞被有效地利用,将会是手机厂商与芯片厂商需要投入研究的方向。 

  作者简介: 

  吴家志,奇虎 360 高级安全研究员,美国北卡州立大学计算机科学博士,研究方向主要为系统安全、虚拟化安全。从事网络安全设备开发多年,近年主要关注 Android 平台系统安全,曾独立发现多个 Linux 内核,厂商驱动0-day 漏洞,目前带领奇虎 360 无线安全研究院 ROOT 团队进行漏洞挖掘与利用研究以及超级 ROOT 产品开发,是 C0RE Team 创始成员之一。

正文到此结束
Loading...