谷歌旗下Project Zero的安全研究员Gal Beniamini指出,博通 Wi-Fi SoC(芯片)易遭受远程代码攻击攻击,可获取系统内核权限。他表示,由于缺少访问授权控制,智能手机等设备的内部芯片模块仍存在大量未发现漏洞。
4月4日,Project Zero的博客中指出博通Wi-Fi SoC芯片存在安全漏洞,可获取芯片远程代码执行权限。4月11日的博客中指出可以借助Wi-Fi SoC中的漏洞,在公共Wi-Fi网络环境中,远程在目标设备上执行恶意代码,无需诱导用户执行任何操作,即可远程完全获取用户手机的权限。
博客指出虽然内存隔离可以有效的保护Wi-Fi SoC芯片,但是固件层面需要增强安全防御。目前可以借鉴的安全防御策略有stack cookies、safe unlinking、内存访问控制MPU。
Gal Beniamini第一次只发布了在Wi-Fi芯片上远程执行远程代码的案例,4月11日的博客中指出可以借助Wi-Fi SoC中的漏洞,在公共Wi-Fi网络环境中,远程在目标设备上执行恶意代码,无需诱导用户执行任何操作,即可远程完全获取用户手机的权限,以下是详细阐述。
Beniamini发现通过低级和高级(简单和复杂)两种通信路径都可以攻击应用处理器:
“简单路径”:攻击将SoC连接到应用处理器的通信通道
“复杂路径”:攻击SoC传输的高级消息,从而向设备发送重要的Wi-Fi信息(例如SSID发现、Wi-Fi功率等级)。
从SoC到主机的链接
SoC支持不同的上游接口, Beniamini罗列了SDIO、USB和PCIe。其中PCIe最快,PCIe使用DMA(直接内存访问)与处理器通信。由于PCIe已经成为现代设备的默认接口,因此Beniamini选择攻击PCIe。
执行堆栈追踪工作排除博通SoC用来与主机通信的通信协议后,Beniamini发现,Wi-Fi SoC设法对包含主机内核的物理地址范围进行直接内存访问,而没有任何干扰(此外,这表明缺乏系统内存映射或出现配置错误)。
博通的SoftMAC驱动Brcmsmac向他揭露了如何映射SoC的DMA访问,并识别哪些结构代表主机到设备和设备到主机的访问。这就提供了一条路径供研究人员通过自己制作的数据劫持任何内核函数--换句话讲,即是完全劫持内核。
复杂路径
所谓的复杂方式就是,查看SoC如何将信号(如可用的SSID或Wi-Fi功率等级)发送给主机。
研究人员发现,这类控制信息均使用同样的EtherType、0x886C(封装必须由主机驱动处理的固件事件有关信息)。去年5月之前,0x886C帧未被过滤,但存在两个问题:如果劫持SoC就可以恢复该补丁;并发送重要Wi-Fi改动(SWC)(虽然有144个受支持的事件代码,但是安卓主机驱动Bcmdhd只支持很小的子集,尽管如此,驱动支持的事件有35个,且和Wi-Fi模块一样被认为是可信芯片,因此导致攻击面很大)的WLC_E_PFN_SWC事件仍会遭受攻击。
官方补丁中添加了验证方法is_wlc_event_frame,验证固件RX路径及驱动路径。芯片在接受到主机帧时,立即调用验证,如果判断到是一个事件帧,即立刻丢弃。否则将帧转给驱动,最后驱动调用通用方法继续下面的验证。
但是既然可以获取Wi-Fi SoC芯片的代码执行权限,即可命令回复补丁逻辑。只需要在固件补丁返回处做修改,即可导致任意接受帧盲目的转发到主机。流程如下:
博客指出虽然内存隔离可以有效的保护Wi-Fi SoC芯片,但是固件层面需要增强安全防御。目前可以借鉴的安全防御策略有stack cookies、safe unlinking、内存访问控制MPU。
本文转自d1net(转载)