QuadRooter攻击对Android设备造成了一些安全问题,有CVE-2016-2059,CVE-2016-5340,CVE-2016-2503,CVE-2106-2504。本文将介绍QuadRooter的攻击原理和缓解建议,供读者参考。
QuadRooter是专门影响Android设备的威胁向量,造成一些安全问题的常见漏洞和暴露(CVE)有:
CVE-2016-2059(Linux IPC路由器将任何端口绑定为控制端口)
CVE-2016-5340(Ashmem漏洞)
CVE-2016-2503,CVE-2106-2504(由于KGSL竞赛条件而免费使用)
Android设备中的可疑漏洞是高通芯片组。芯片组附带的软件驱动程序也面临风险。他们控制芯片组组件之间的通信流程。
攻击者可以使用这些不同的漏洞在特定的Android设备上执行任意代码。或者,攻击者可以使用下载后可以自行安装的APK文件。
这些Android设备是最脆弱的:
以下是使用上面列出的Android漏洞的QuadRooter攻击的技术细节。
Qualcomm推出的称为ipc_router的内核模块为各种Qualcomm组件,用户模式进程和硬件驱动程序提供进程间通信功能。该漏洞位于转换函数中,该函数使用有缺陷的锁定逻辑来破坏监视套接字列表。通过使用list del函数以及local_ports_lock_lhc2锁同时从其列表中删除port_ptr(这是对原始结构套接字的扩展结构),套接字列表已损坏。这个策略在下图中有说明:

在监视套接字上调用此函数会将其从列表中移除,同时还锁定常规套接字列表。因此,攻击者可以使用此漏洞使其指向免费数据来破坏控制端口列表。然后可以使用称为“堆喷射”的技术来控制这一点。假设攻击者可以占用新释放的内存并对其进行控制,则内核将像普通的msm_ipc_port对象那样处理喷洒的内存。
发生此漏洞是因为ashmem_file()函数未正确检查所需的文件类型。因此,攻击者可以使用Android的弃用功能,称为“Obb5”。这可以用来在文件系统上创建名为“ashmem”的文件。使用此功能,攻击者可以挂载自己的文件系统,在其根目录中创建一个名为“ashmem”的文件。通过将该文件的fd发送到“get_ashmem_file”函数,攻击者可以欺骗系统认为他们创建的文件实际上是一个ashmem文件,实际上,它可以是任何文件类型。这在以下屏幕截图中进行了演示:

函数“get_ashmem_file”检索文件描述符并检查文件描述符是否指向ashmem文件类型。如果文件描述符指向它,则该函数继续提取private_data结构并随后将其返回给调用者。这个过程如下所示:

kgsl是Qualcomm的GPU组件之一。该漏洞实际上存在于destroy()函数中。它很容易出现所谓的“竞态条件缺陷”,即两个并行线程同时调用该函数。这可能会使内核强制在一个线程中进行上下文切换。这发生在对第二个线程“kgsl_syncsource_get”的调用之后,该线程也调用了该函数。这两个线程一起在启动refcount reduction技术之前可以传递kgsl_syncsource_get。这会将同步源对象的refcount降至0以下,从而暴露给自由使用后的攻击。这可以在下面的插图中看到:

这个漏洞存在于“kgsl_mem_entry_attach_process()”函数中,因为它在特定条目初始化之前授予对UM的访问权限。这在以下屏幕截图中进行了说明:
