首页 网络安全 正文

Tenda AC10 v3缓冲区溢出漏洞CVE-2026-51380

摘要

栋科技漏洞库关注到 EMLOG Pro 2.6.13版本中存在的本地文件包含漏洞,现已被追踪为CVE-2026-46687,漏洞的CVSS 4.0评分7.7。

腾达 AC10 V3 是百元级 AC1200 全千兆双频家用路由器,搭配四根高增益天线,总无线速率 1167Mbps,千兆网口即可跑满千兆宽带。

一、基本情况

腾达 AC10 V3 搭载了1GHz处理器,它支持波束成形、MU-MIMO 多设备并发,穿墙覆盖稳定,自带家长控制、IPv6、APP 远程管理。

腾达 AC10 V3 没有 USB 接口,不支持文件共享,适合只追求基础稳定上网、预算有限的用户,也适合中小户型日常追剧、手游使用。

栋科技漏洞库关注到 Tenda AC10 v3 路由器 UploadCfg 缓冲区溢出漏洞,漏洞现在已被追踪为CVE-2026-51380,CVSS 3.X评分9.8。

二、漏洞分析

CVE-2026-51380是腾达AC10 V3(固件版本V03.03.16.09)认证后缓冲区溢出,存在设备永久拒绝服务(变砖)、远程代码执行风险。

Discourse隐藏帖版本信息泄露CVE-2026-59828

漏洞源于Tenda AC10 v3 路由器固件 V03.03.16.09 的 /cgi-bin/UploadCfg 配置恢复端点在解析用户上传配置时未对字段长度进行校验。

这就使得认证后的远程攻击者可向 nvram_set 写入超长字段触发缓冲区溢出,进而造成设备永久不可用(变砖)甚至可执行任意代码。

具体来说腾达AC10 v3路由器配置恢复功能存在高危安全缺陷:

固件校验和实现存在缺陷,已登录攻击者可绕过固件完整性校验,上传特制配置文件触发nvram_set内部函数缓冲区溢出。

溢出后设备会陷入无限重启死循环,Web管理后台无法访问、WiFi名称消失,硬件复位按键完全失效。

受影响版本中,Tenda AC10 v3.0 硬件搭配固件 V03.03.16.09(eCos 实时操作系统 + Realtek 芯片)的 Web 服务,

在收到 /cgi-bin/UploadCfg 请求后调用 FUN_80048a18 解析上传的配置文本,

该函数仅以对每行字符的 ASCII 累加值(行尾 @<sum>)作为完整性校验,

校验通过后立即将键值对传递给 nvram_set 的封装函数 FUN_80047190;

由于诸如 wan0_macclone_mode 等 NVRAM 变量的目标缓冲在固件内仅预分配约 32 字节,

而 UploadCfg 解析层未对单行长度或目标缓冲容量做任何边界检查,

攻击者仅需构造一个 wan0_macclone_mode=<超长字符串> 的配置并附上伪造的累加校验和即可覆盖相邻栈帧与全局数据。

1、固件勘测

使用binwalk解析官方固件,发现其采用eCos单片内核架构,无标准Linux文件系统。

通过strings工具提取静态字符串,定位DownloadCfg、UploadCfg、DownloadSyslog等关键网页接口。

处理CGI程序的核心逻辑集成在网页服务函数中,以下为配置导入接口的反编译处理流程:

undefined4 FUN_800ed674(int param_1)

{
    // ... [Truncated Web Server Routing Logic] ...
    iVar1 = FUN_80048a18(*(undefined4 *)(param_1 + 0x214), *(undefined4 *)(param_1 + 0x1b0));
    if (iVar1 == 0) {
        FUN_80290744(s_UploadCfg_success..._8035a9d4);
        uVar6 = 100;
    }
    else {
        FUN_80290744(s_UploadCfg_err!_8035a9c4);
        uVar6 = 0xca;
    }
    // ...
    FUN_80013cf4(1, 0x12, s_string_info=reboot_80337b98);
    return 1;
}

校验和验证逻辑缺陷(签名绕过)

程序通过解析以@开头的行校验配置文件完整性,

但仅采用简易ASCII累加算法,未使用MD5、SHA-256等加密哈希算法,校验机制存在严重缺陷。

函数FUN_80048a18内部实现了该校验和处理逻辑:

undefined4 FUN_80048a18(char *param_1, int param_2)
{
    // ...
    if (local_830[0] != '#') {
        if (local_830[0] != '@') {
            iVar1 = FUN_829734c(local_830);
            for (iVar9 = 0; iVar9 != iVar1; iVar9 = iVar9 + 1) {
                iVar4 = iVar4 + local_830[iVar9]; // Simple ASCII summation
            }
            // ...
            FUN_80047190(local_830, puVar2 + 1); // Forwards to nvram_set wrapper
        }
        else {
            iVar5 = FUN_8296ac8(local_830 + 1, 0, 10); // Parsed expected checksum
        }
    }
    // ...
}

2、漏洞缺陷拆解

该校验算法仅累加配置文本每个字符的字节值,攻击者可随意篡改配置参数,

通过简易脚本重新计算累加和,将数值拼接至@符号后,即可完全绕过完整性校验。

3、借助nvram_set触发缓冲区溢出

校验和验证通过后,配置参数会传入函数FUN_80047190(nvram_set封装函数)。

CGI解析器虽限制单行输入最大2047字节,但各NVRAM变量分配的缓冲区远小于该长度,如wan0_macclone_mode仅分配约32字节。

程序直接将用户输入字符串拷贝至目标缓冲区,未做长度边界校验,引发经典缓冲区溢出,破坏相邻栈内存与内存帧数据。

三、POC概念验证

(一)免责声明:下文描述未修复漏洞,仅可在本人授权硬件设备上测试。

1、生成攻击载荷:

脚本构造超长字符串配置项(如wan0_macclone_mode后拼接1000个A字符),

计算ASCII累加校验和,在配置文件末尾添加@计算值,生成恶意配置文件hacked_config.cfg。

2、身份认证:登录路由器管理后台(默认地址http://192.168.0.1)。

3、上传利用:进入系统管理-备份与恢复页面,或直接向/cgi-bin/UploadCfg接口提交POST请求,选中恶意cfg文件执行配置恢复。

4、现象:服务返回200状态码与成功提示,校验和校验放行;路由器自动重启加载篡改后的配置。

(二)危害评估:设备永久变砖

实测溢出造成的破坏远高于普通临时拒绝服务:

1、无限重启死锁:重启后内核初始化阶段加载NVRAM配置,调用nvram_set时立刻触发溢出崩溃,此时基础中断子系统尚未初始化。

2、无限崩溃循环:崩溃触发硬件复位,设备重启后再次读取损坏的NVRAM配置,重复崩溃流程。

3、硬件复位失效:长按机身复位按键无任何效果。崩溃发生在内核初始化GPIO控制器之前,系统无法识别硬件复位信号。

总结:设备彻底瘫痪变砖,仅能通过拆焊闪存芯片、JTAG/串口调试工具清空NVRAM分区才能修复。

(三)修复方案

1、完善完整性校验:舍弃简易累加校验,采用HMAC-SHA256等高强度加密签名算法,密钥存放于安全存储区域。

2、严格边界校验:在nvram_set函数内增加输入长度校验,超长参数直接拦截或安全截断。

3、安全默认配置:设备首次使用时强制修改管理密码,降低认证后漏洞被利用的风险。

四、影响范围

Tenda AC10 v3 ≤ V03.03.16.09

五、修复建议

Tenda AC10 v3 > V03.03.16.09

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接