首页
论坛
课程
招聘
[翻译]在高度流行的 WiFi 芯片固件中发现漏洞
2019-5-31 17:50 7015

[翻译]在高度流行的 WiFi 芯片固件中发现漏洞

2019-5-31 17:50
7015

WiFi 芯片固件主要用于游戏主机、个人计算机和通信等各种设备中,同时也带来了更多的问题。使得其中至少有一部分可以被利用来远程执行任意代码,而无需用户交互。


这些安全漏洞是在 Marvell Avastar 88W8897 SoC (Wi-Fi + Bluetooth + NFC)、 Sony PlayStation 4 (及其专业版)、 Microsoft Surface (+Pro)、 Xbox One、 Samsung Chromebook、 智能手机(Galaxy J1) 和  Valve SteamLink 中发现。

Marvell 的模块固件是基于 ThreadX 实时操作系统,这是一种由 Express Logic  开发的操作系统(RTOS)。购买许可证时可以获得 RTOS 的源代码。

该厂商在其网站上声称 ThreadX 拥有超过 62 亿的部署(包括消费设备、医疗电子和工业控制设备),是支持 Wi-Fi 芯片最流行的软件之一。

WiFi 芯片初始化过程


WiFi 芯片通常由制造商的驱动程序初始化,下图为该驱动程序在启动执行程序期间加载固件映像。

在 Marvell 的无线芯片系统(SoC)中,有一些驱动程序与它使用的 Linux 内核一起工作:'mwifiex' (Linux 官方存储库中有源代码)、'mlan' 和 'mlinux' 的来源也可以在官方的 steamlink-sdk 报告中找到。

这两个功能都具有调试功能,允许在 WiFi 模块的内存中读写。

控制内存块分配


固件中发现的漏洞之一是块池溢出( block pool overflow ),当芯片扫描可用网络时可以触发,即使设备已连接到 WiFi 网络,这个过程依旧会每隔五分钟启动一次,并且与 WiFi名称或者访问密码无关。

"这就是为什么这个 bug 特别炫酷的地方了,这样就提供了在任何无线连接状态下(即使设备没有连接到任何网络)仍然可以通过零点点交互( zero-click interaction )实现连接设备的机会。例如,人们可以在刚刚启动的三星 Chromebook 上执行 RCE【远程代码执行】。" Embedi 公司专职研究嵌入式设备安全性的研究员 Denis Selianin 表示。

在该公司今天发布的一份报告中,Selianin 描述了两种利用方式,一种在满足特定条件的情况下,适用于任何基于 ThreadX 的固件,另一种是 Marvell 在其模块上实现固件的典型方法;研究人员表示,将这两种方法结合起来就可以获得可靠的利用。

在通常情况下,攻击者可以覆盖指向下一个空闲内存块的指针,并控制分配下一个内存块的位置。
Selianin 解释说,"通过控制下一个块分配的位置,攻击者可以将此块放置到一些关键的运行时结构或指针所在位置,从而实现攻击者的代码执行。"

利用 Marvell Avastar SoC 上的漏洞包含内存管理程序逆向工程封装函数。如果下一个块被占用,则此利用方法有效。

这些函数在每个 ThreadX 块的开头使用一个带有特殊指针的元数据头,这些特殊指针在释放块之前被调用。这些信息足以允许在 wireless SoC 上执行代码。


Selianin 使用自定义工具从 Valve Steam Link 硬件设备(不再制造,但仍然支持)dump 出 WLAN 芯片的固件,使用 afl-unicorn  检查它是否有潜在的可利用漏洞。它能够找到关于 jfour 内存损坏的问题。

基于堆栈的缓冲区溢出


通过第二个升级漏洞,研究人员就可以利用 Valve 的应用程序处理器驱动程序中的安全漏洞,在该设备处理器上执行代码。这个漏洞利用与以前的漏洞利用相似。

Selianin 解释说,"其中的区别在于攻击者通过 SDIO 总线从受控的 Wi-Fi Soc 发送数据,而不是通过网络"。另外,由于驱动程序充当设备和操作系统(OS)之间的桥梁,所以它应该从设备获取数据,解析后将其传递给操作系统。

The code Marvell Wi-Fi driver uses for these operations should be able to process a large variety of message types composed of information elements (IEs), making for a wide attack surface 。
利用 Marvell Wi-Fi 驱动程序中的漏洞的操作应该能够处理由信息元素(IEs)组成的各种消息类型,从而形成广泛的攻击面。


根据  Selianin 的解释,研究人员发现的另一个漏洞是基于堆栈的缓冲区溢出,这个漏洞很容易被利用,因为 Marvell 使用的 Linux 内核('3.8.13.mrvl')不包含用于利用二进制文件的缓解措施。

攻击者利用此漏洞只需两个步骤即可运行指令:
1. 调用 Linux 内核函数  v7_flush_kern_cache_louis 
2. 执行 shellcode

在发布的一段视频中展示了  Valve SteamLink 上  Marvell Avastar WiFi 模块的全链开发。它表明,无需用户交互即可实现无线开发。

Selianin 觉得使用这种类型的芯片的无线通信设备没有得到安全社区的充分审查。

在去年11月,他在俄罗斯莫斯科举行的  ZeroNights  安全会议上展示了他的发现(幻灯片在此处)。我们的俄语读者可以观看这一段视频:

Selianin 在他的演讲中说,一旦漏洞修复可用,他就会发布一篇关于这个漏洞和挖掘过程中使用的工具的文章。

更新【01/23/19】本文的原始版本已经更新,以反映研究中描述的漏洞是在 Marvell 的 ThreadX RTOS 实现中出现的。这些更改是基于 Express Logic 的官方申明,如下所示:

视频链接:https://pan.baidu.com/s/1Btz-maBhxRea2iJ0v4iQgA  提取码:r49v
(Selyanin D. - Researching Marvell Avastar Wi Fi from zero knowledge to over the air zero touch RCE 为俄语讲解,可以观看英文PPT)

"在分析报告和媒体申明中关于 ThreadX-related 方面,我们咨询了最初安全性分析的作者,他认为一些媒体的报道角度可能有所误解,原文中描述的安全问题没有植根于 ThreadX 本身。底线是,这个漏洞在 ThreadX RTOS 中不是一个系统问题。运行在 Avastar 88W8897 SoC 上的应用程序固件和驱动程序完全负责并完全控制本报告中提到的内存损坏。事实上,上述问题可能发生在任何 RTOS、OS 甚至没有 RTOS的情况下。综上所述,作者所引用的漏洞存在于应用程序固件中,于 ThreadX RTOS 本身无关。因此,使用 ThreadX RTOS 的 62 亿次大规模部署中,没有任何一个部署受到 ThreadX RTOS 代码或行为的任何影响。这完全是一个应用程序固件问题。"


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 201
活跃值: 活跃值 (1500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yy虫子yy 活跃值 2019-6-1 03:17
2
0
都玩硬件漏洞了
游客
登录 | 注册 方可回帖
返回