虹科案例|虹科物联网安全防护平台-Realtek RTL8195A Wi-Fi 模块的主要漏洞

         在最近的供应链安全评估中,虹科Vdoo分析了多个网络设备的安全漏洞。在分析过程中,我们发现并负责地披露了这些设备所基于的Realtek RTL8195A Wi-Fi模块的四个主要漏洞。利用这些漏洞,攻击者可以获得对Wi-Fi模块的远程根访问权,并且有很大的风险跳转到应用程序处理器(因为攻击者完全控制了设备的无线通信)。在这篇文章中,我们将讨论漏洞的技术细节、组件背景,提供检测和解决漏洞的指导,并讨论这些漏洞是如何通过供应链安全评估发现的。

 

一、技术概况

         Realtek提供了用于设备的“Ameba”API,允许任何开发人员通过Wi-Fi, HTTP, mDNS, MQTT等轻松通信。作为Wi-Fi功能的一部分,该模块支持WEP、WPA和WPA2身份验证模式。在我们的安全评估中,我们发现WPA2握手机制容易受到各种堆栈溢出和读取越界问题的影响。虽然这些问题仅在RTL8195A模块上验证过,但我们认为它们也与以下模块相关:RTL8711AM、RTL8711AF、RTL8710AF。

 

二、漏洞概述

         我们发现的最严重的问题是一个偏远的堆栈溢出VD – 1406, 该漏洞允许攻击者在无需Wi-Fi密码(相移键控)的情况下邻近RTL8195模块完全接管模块, 无论该模块是作为无线接入点还是客户。攻击场景将在下一节“技术详解”中详细介绍。

        VD-1407和VD-1411也可以在不知道网络安全密钥(PSK,或更准确地说是从它派生的PMK)的情况下被利用,通过这种方式,远程代码执行或拒绝服务可以在使用该Wi-Fi模块的WPA2客户端上执行。VD-1408、VD-1409和VD-1410要求攻击者知道网络的PSK作为攻击的先决条件,并可在WPA2客户端上获取远程代码执行。Realtek已经发布了一份安全公告,并在VD-1406上分配了一个CVE。

 

三、技术详解

1. VD-1406 (CVE-2020-9395) -基于堆栈的缓冲区溢出漏洞

         该漏洞不需要知道网络的PSK,攻击者可利用Wi-Fi客户端和AP设备。这种漏洞不需要了解网络的PSK。这个问题允许利用Wi-Fi客户端和AP设备,作为WPA2 4路握手的一部分,在“EAPOL”框架中发生关键交换:

         在此密钥交换中,Realtek WPA2客户端和服务器分别调用ClientApolkeyRecvd和iApolkeyRecvd函数来处理数据包。上面的函数均调用CheckMIC() 函数,负责检查EAP数据包中麦克风部分的完整性。
         在CheckMIC()中可以触发不安全的副本:

        EAPOLMsgRecvd.Octet和 EAPOLMsgRecvd.Length 都受到了攻击和控制。EAPOLMsgRecvd.Octet 包含以太网层(14字节)和802.1 x 身份验证层EAPOLMsgRecvd.Length 直接来自802.1 x Authentication’s Length字段。Tmpbuf 是一个固定大小为512字节的本地缓冲区。可能发送的数据包大于tmpbuf(512字节堆栈缓冲区),并导致memcpy()复制比分配更多的字节,从而导致堆栈溢出。
        该漏洞可以通过覆盖CheckMIC()的返回地址来获得远程代码执行或拒绝服务。请注意,没有任何可以使用的缓解因素(堆栈金丝雀、ASLR甚至非可执行堆栈),因此这种利用是微不足道的。

        该漏洞可以以攻击WPA2客户端和WPA2接入点两种不同的情况触发:
(1)Realtek设备受害者是客户端(从ClientEAPOLKeyRecvd()调用CheckMIC())。在这种情况下,攻击者可以通过以下方式利用受害客户端设备:
           检测Wi-Fi数据包,查看受害者设备连接的无线网络,并获得该网络的SSID。
           准备一个恶意访问点,它将执行攻击,并具有确切的SSID。
           向受害设备发送反认证包,并以比原始网络更大的声音广播,以便设备将连接到恶意接入点。
(2)Realtek设备受害者是接入点(从EAPOLKeyRecvd()调用CheckMIC()),在这种情况下,攻击者客户端可以简单地连接到受害AP并利用它。

2. VD-1407 (CVE-2020-25853) -读取出界漏洞

        这种漏洞不需要网络的PSK,这与VD-1406中提到的CheckMIC()函数相同: 

         与许多嵌入式设备一样,我们测试的所有设备都没有启用关键的编译器安全缓解功能(Stack canary支持、独立位置的可执行文件、FORTIFY-SOURCE等)。这使得这个漏洞(以及下一个漏洞CVE-2020-25858)更容易被利用来执行代码,使攻击者能够完全控制设备,并能够运行任意恶意代码,而不是仅仅破坏脆弱的进程。

         使用下面的URL调用web接口验证该问题:http://x.x.x.x/cgi-bin/qcmap_web_cgi?a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b&a=b

 

3.VD-1872 / CVE-2020-25858 – NULL指针异常漏洞(CVSSv3 6.5)

        这个问题存在于QCMAP_Web_CLIENT二进制文件中。在前面提到的Tokenizer函数中,调用strstr函数来搜索“=”字符,并且使用它的返回值而不检查。在一些实现中,我们已经看到strstr的调用被strchr的调用所取代。在这两种情况下,如果没有“=”字符,函数将返回NULL,导致NULL指针引用异常进而导致进程崩溃。

        使用下面的URL调用web接口验证该观点: http://x.x.x.x/cgi-bin/qcmap_web_cgi?a

4.VD-1874 / CVE-2020-25859 -命令注入漏洞(CVSS v3 7.9)

         此问题存在于QCMAP_CLI二进制文件中。QCMAP包含一个名为QCMAP_CLI的命令行接口(CLI)实用程序。在这个CLI中,用户可以更改设备的不同设置。

         一个可能的选项是设置网关URL。当设置URL时,set请求被发送到函数qmi_qcmap_msgr_set_gateway_url的QCMAP_ConnectionManager二进制文件,该函数在某个时刻调用QCMAP_LAN::EnableGatewayUrl函数。在这个函数中,代码调用snprintf创建一个包含URL的字符串,然后调用系统函数创建一个新进程,但是没有对用户输入进行检查以确保它不包含恶意字符,因此可以传递一个带有shell元字符的字符串(例如’;’)并运行任意命令。

        执行下面的步骤证明概念:
1) 运行QCMAP_CLI二进制文件
2) 输入:82 <回车>
3) 输入:1 <回车>
4) 输入:www;sleep 10 <回车>

 

四、风险评估

         据我们所知,这些漏洞还没有被大肆利用,因此还没有对已部署的设备造成任何具体的安全威胁。然而,正如上面的问题证明章节所显示的那样,只要具备技术知识,利用漏洞进行攻击是轻而易举的。我们将继续密切监控任何滥用该漏洞的行为,并通过Vision的威胁情报feed Whistler向Vdoo Vision用户发出警报。

 

五、识别高风险的设备

         据我们所知,由于这些易受攻击的文件没有可识别的版本信息,所以这个问题并不能直接检测出来。如果您可以访问一个正在运行的设备,可以按照以下步骤检查您的设备是否容易受到攻击:

• 通过尝试直接连接或对相关端口执行端口扫描,验证设备正在运行web服务器。
• 成功登录到web服务器(允许cookie)后,您的浏览器将在设备上有一个有效的会话。现在尝试执行VD-1871的PoC。如果QCMAP_Web_CLIENT进程似乎崩溃(例如,web服务器超时),您的设备是脆弱的。
• 对VD-1872重复上述步骤,调用PoC并检查崩溃,对VD-1873调用PoC并检查响应中的延迟。
• 找到QCMAP_Web_CLIENT二进制文件并检查其SHA-256是否为以下其中之一:
71311beee4c761f85d46eaadab475541455adbd135f3c868c0800b1703378755
5f19143efa90161bde6eb129f7b43bdf0a25e86ae7a749dc13b7ea645aa590f5
e6d505c80de7ccce0cf297715f67e0efbbc30e7427a846ea04d64af1a9e77dae
0079e76c4c9ca3668789fd4c58c24e66519365c86479f0d7477980d0b6422eed
0a51f755716a688225573ca4cae469acdf6c6350d83d19098580e8e295692668
如果是的话,你的设备可能会受到攻击。
• 如果您运行的是基于高通MDM的Android设备,请确保您的安全补丁级别更新到2020年10月或之后的版本。

         虹科Vdoo平台作为平台安全分析能力的一部分,能够通过自动扫描设备二进制图像,快速检测设备暴露于上述问题。如果您怀疑自己可能会受到攻击,请随时联系我们寻求帮助。

六、减轻受影响设备上的漏洞

        如果您的设备被发现存在漏洞,且无法更新或修补固件,则可采取以下操作:
1. 如果你的设备不需要连接网络,考虑断开连接。
2. 如果设备必须连接到网络,请确保通过防火墙阻止对web端口的访问,并确保这些端口不被转发到外部网络。
3. 如果您可以在外围保护后部署一个包含WAF的设备,请将其配置为检查包含40个以上查询参数的url。

 

七、披露过程

        在2020年6月向高通PSIRT披露这些漏洞后,他们回复说他们已经发现这些漏洞,并在2019年进行了修补,他们计划在2020年10月公开披露它们。这两个被分配到CVE-2020-3657的漏洞在谷歌2020年10月的Android安全公告中列出。

感到无所适从吗?

请填写以下信息,我们将有专人联系您