引言
在我们发布二进制零日识别特性之前,我们在固件语料库上对其进行了测试和验证,以确保我们提供的分析结果是有意义的。在此过程中,我们向供应商报告了发现的众多漏洞。在2024年期间,我们希望公开这些漏洞中的大部分,例如在Cisco WAP321中发现的那些。我们继续在这篇博客文章中讨论另一种接入点设备:TP-Link Archer C5400X Tri-Band Gaming Router。
自动化分析完成后,我们手动快速审查了结果以确认发现,我们发现了一个命令注入、一个shell中的格式字符串以及一些影响rftest和libshared的缓冲区溢出。
格式字符串只能在特定情况下被利用,所以在这篇博客文章中,我们将重点关注rftest
二进制文件。顾名思义,rftest
与射频测试有关,它帮助接入点进行无线接口自我评估。为此,它在TCP端口8888、8889和8890上公开了一个网络监听器。这个监听器容易受到命令注入和缓冲区溢出的攻击。
远程命令执行
受影响的供应商和产品 | TP-Link Archer C5400X |
供应商咨询 | Archer C5400X(EU)_V1_1.1.7 Build 20240510 https://www.tp-link.com/en/support/download/archer-c5400x/#Firmware |
易受攻击的版本 | <= 1_1.1.6 |
已修复的版本 | 1_1.1.7 |
CVE ID | CVE-2024-5035 |
影响 (CVSS) | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
荣誉 | Q. Kaiser, ONEKEY Research Lab 研究由Certainity支持 |
摘要
受影响的设备在其初始化序列中启动了一个名为rftest
的二进制文件。这个二进制文件公开了一个网络服务,该服务容易受到未经身份验证的命令注入攻击。
影响
通过成功利用这个缺陷,位于局域网上的未经身份验证的攻击者可以在设备上获得具有提升权限的任意命令执行能力。
根据TP-Link的说法:“经过彻底的内部源代码分析(包括对函数调用路径的深入审查),TP-Link确定CVE-2024-5035更多是源代码的弱点,而不是具有特定攻击链的可用局域网漏洞。因此,CVE-2024-5035的披露不会增加日常使用中的信息安全风险。”
描述
我们的二进制静态分析流程发现了命令注入。用户控制的源是一个对监听端口8888的TCP套接字调用read():
这个源多次传播,最终出现在两个不同的popen()调用中,一个如果接收到的字节包含“wl”,另一个如果接收到的字节以“nvram”开头并包含“get”,如下所示:
rftest
二进制文件在启动时按照以下序列启动:
-
执行 /etc/init.d/wireless
初始化脚本。该脚本执行命令/sbin/wifi init
。 -
wifi脚本导入文件 /lib/wifi/tplink_brcm.sh
并执行该文件中的wifi_init
函数。 -
在 /lib/wifi/tplink_brcm.sh
中,发生以下函数调用树:wifi_init
->wifi_start
->wifi_start_calibrate
->wifi_start_rftest
->rftest
。 -
/lib/wifi/tplink_brcm.sh
中的 rftest 函数启动/usr/sbin/rftest
。
当执行时,该二进制文件在8888端口上启动了一个TCP服务器。网络服务接受来自客户端的命令,限制命令为以wl
或nvram get
开头的命令。
然而,要将其变成命令注入,这个限制可以通过在像;
、&
、|
这样的shell元字符后注入命令来简单地绕过:正如我们在下面的输出中看到的,我们连接到8888端口上的服务并注入命令id
:
TP-Link通过丢弃包含shell元字符的任何命令来应用修复,如下所示:
建议
我们建议您使用C5400X的升级功能升级到版本1_1.1.7。
关键要点
看来TP-Link需要提供无线设备配置API的需求,要么是快速回答,要么是便宜回答,最终导致他们暴露了一个本应限制的shell,路由器内的客户端可以使用它作为配置无线设备的方式。由于这个“API”的细节被抽象化了,实际上由于不安全的编码实践,它确实暴露了一个shell,这一点在审查过程中丢失了。
因此,本咨询进一步证明了对固件的最终编译版本执行自动化二进制静态分析的重要性,以发现可能影响您的产品开发团队甚至不知道存在的组件的漏洞。在这种情况下,是在高端游戏路由器上暴露了通过LAN进行远程未经身份验证的root访问。
时间线
-
2024-02-16 – 通过加密电子邮件向TP-Link PSIRT提交报告。 -
2024-02-19 – TP-Link PSIRT 开启案例。 -
2024-04-10 – TP-Link分享1.1.7p1的beta版本以供验证。 -
2024-04-17 – ONEKEY确认补丁。 -
2024-05-27 – 与TP-Link协调发布ONEKEY咨询。
原文始发于微信公众号(3072):CVE-2024-5035 TP-Link Archer C5400X RCE 漏洞分析