Tenda AC6路由器CVE-2025-50263缓冲区溢出漏洞
CVE-2025-50263
前言
由于前两天搞了个tenda的路由器,刚好看到还同时存在的另一个缓冲区溢出漏洞,就一并分析了,qemu连接具体请看
https://hfddh666.github.io/2026/04/19/CVE-2025-25343%E5%A4%8D%E7%8E%B0/
漏洞报告
| CNVD-ID | CNVD-2025-15719 |
|---|---|
| 公开日期 | 2025-07-15 |
| 危害级别 | 高 (AV:N/AC:H/Au:N/C:C/I:C/A:C) |
| 影响产品 | Tenda AC6 15.03.05.16_multi |
| CVE ID | CVE-2025-50263 |
| 漏洞描述 | Tenda AC6是腾达推出的双频无线路由器。 Tenda AC6存在缓冲区溢出漏洞,该漏洞源于fromSetRouteStatic函数中list参数未能正确验证输入数据的长度大小,目前没有详细的漏洞细节提供。 |
| 漏洞类型 | 通用型漏洞 |
| 参考链接 | https://github.com/faqiadegege/IoTVuln/blob/main/tendaAC6_SetStaticRouteCfg_list_overflow/detail.md |
| 漏洞解决方案 | 目前厂商已发布升级程序修复该安全问题,详情见厂商官网: https://www.tenda.com.cn/product/help/AC6 |
| 厂商补丁 | Tenda AC6 fromSetRouteStatic函数缓冲区溢出漏洞的补丁 |
| 验证信息 | (暂无验证信息) |
| 报送时间 | 2025-07-11 |
| 收录时间 | 2025-07-15 |
| 更新时间 | 2025-07-15 |
| 漏洞附件 | (无附件) |
漏洞分析
首先就是看启动文件,,是httpd,然后找到初始化文件,发现有个::sysinit:/etc_ro/init.d/rcS,这个是启动必须项,打开后发现有个cp -rf /webroot_ro/* /webroot/,所以在启动httpd时要提前运行这个,因为我们开启的只有webserver的服务,而那个文件时启动路由器的必须项,所以如果只是启动httpd的话会造成缺乏必要想导致文件无法完全运行,还有一个关键的时要记得patch上修改后的httpd,不然连接不上,具体原因看https://hfddh666.github.io/2026/04/19/CVE-2025-25343%E5%A4%8D%E7%8E%B0/
1 | [18:44:51] ~/桌面/CVE-2025-25343/_US_AC6V1.0BR_V15.03.05.16_multi_TD01.bin.extracted |
然后就是分析漏洞函数,根据报告给的是fromSetRouteStatic函数存在溢出风险
fromSetRouteStatic
1 | int __fastcall fromSetRouteStatic(int a1) |
1 | void *__fastcall sub_2B7C4(int a1, int a2, int a3) |
1 | int __fastcall sub_77EC8(const char *a1, char *a2, unsigned __int8 a3) |
这里详细说说sscanf(v16, "%[^,],%[^,],%[^,],%s", v11, v10, v9, s1),%[^,]这个指的是一直都数据直到遇到逗号,所有只要给出足够长的数据就可以造成溢出
然后追溯分析发现这个也是被包装成一个函数供sub_42240使用

然后看这个函数发现这个,也就是说当访问goform/SetStaticRouteCfg,就会执行这个函数
1 | sub_16F24("SetStaticRouteCfg", fromSetRouteStatic); |
poc编写与实现
有前面的分析,可以知道当访http://192.168.100.1/goform/SetStaticRouteCfg时会调动漏洞函数,然后带上list参数符合:长度>4并且远大于数据最大长度即可
poc
1 | curl -X POST "http://192.168.29.129/goform/SetStaticRouteCfg" \ |
最后也是成功了
以上是qemu用户态的测试,系统状态qemu详情看https://hfddh666.github.io/2026/04/19/CVE-2025-25343%E5%A4%8D%E7%8E%B0/,
原理是一样的
那要如何确定溢出字节呢
poc
1 | import requests |
1 | Invalid address 0x64616170 |