高通驱动内核本地提权漏洞

2019年9月15日08:00:40 发表评论

最近,Qualcomm Atheros WLAN驱动服务(QcomWlanSrvx64.exe,版本12.0.0.825)中发现了一个内核任意内存写入(Kernel Write-What-Where)漏洞。这个服务在我刚买的戴尔XPS笔记本上是默认安装的。受此漏洞影响的内核模块是Qcamain10x64.sys。因为经过了戴尔自身的更新和设备管理器里面的驱动更新,我本来以为版本12.0.0.825就是最新的了,后来发现应用程序所带的Qcamain10x64.sys并不是高通公司所提供的最新版本,而在最新版本中此漏洞已经被修复。这意味着许多配备Qualcomm Atheros WLAN的戴尔XPS笔记本电脑可能会受到此问题的影响。我通知了高通公司戴尔的笔记本中没有使用他家最新版本的驱动程序,他们表示正在着手处理此事。如果你在阅读这篇文章的时候无法通过传统的驱动更新方法升级到版本12.0.0.827或更高版本(已修复该漏洞)的Qcamain10x64.sys,可以在这里找到最新的驱动版本。

高通驱动内核本地提权漏洞

在向高通披露此漏洞时,他们告诉我这个漏洞在去年已经被修复了。然而他们提供的漏洞号CVE-2019–10567仍然处于保留(reserved )状态。而且我也没有在其他地方找到有关于这个漏洞的预警或者write up,所以我决定在这里分析这个漏洞的攻击过程。

Qcamain10x64.sys概述

这个驱动程序漏洞出问题的点和许多其他驱动程序漏洞一样: 存在一个设备对任何用户可写。这意味着所有低权限的进程可以通过发送IOCTL码来与设备驱动进行交互。这个设备是”ATH_WIFIDEV.00”,我们可以通过逆向来看它所支持的IOCTL码以及可通过各种IOCTL和缓冲区访问的程序路径。

漏洞利用

在Windows 10 (x64)上,默认漏洞缓释技术(如SMEP, CFG等)全部开启,使用这个内核任意内存写入漏洞,我成功地将权限提升到SYSTEM。至此,我成功地利用这个漏洞实现了本地提权,希望之后可以利用这个漏洞做更多的探索。

漏洞补丁

在高通最新提供的补丁中,我们可以看到他们利用ProbeForWrite检查了从用户模式传来的缓冲区,从根本上封堵了这个漏洞。

发表评论

后发表评论