Totolink路由器栈溢出RCE:一个参数写穿栈(CVE-2026-42020)"

admin 2026-10-24 14:38:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Totolink 路由器栈溢出 RCE:一个参数写穿栈(CVE-2026-42020)

红队安全圈
红队安全圈

红队安全圈

2026年10月22日 20:00
重庆

去阅读

Totolink X2000R 的 boa Web 服务把 PPPoE 参数原样拷进栈,无任何校验,认证后一个 POST 就能覆盖返回地址,CVSS 9.1,厂商至今没发补丁。

01  引言

Totolink X2000R 是一款主打性价比的千兆家用路由器,主要销售市场在东亚地区,支持 IPv6、WPA3 和 mesh 组网。这个洞出在该路由器 Web 服务 boa 的 formIpv6Setup 处理逻辑:PPPoE 相关的 HTTP POST 参数被原样拷贝到栈上,没有任何检查,一个精心构造的请求就能打出任意代码执行。

CVSS 3.1 评分 9.1(CRITICAL),向量 AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H。同一个 formIpv6Setup 里还有一组姊妹漏洞:pppoe\_dns1 对应 CVE-2026-42019,本文的主角 pppoe\_dns2 对应 CVE-2026-42020,成因完全一致,是一类复制粘贴式的溢出。

先说结论:利用前提是拿到 Web 管理界面的认证凭据,这一点降低了被大范围远程打穿的概率;但结合 Totolink 历史上多次爆出认证绕过和硬编码后门,认证这道墙并不可靠。家里或客户现场在用 Totolink 的,这篇建议看完就动手排查。

02  漏洞速览

漏洞编号CVE-2026-42020

姊妹漏洞CVE-2026-42019(pppoe\_dns1)

影响产品Totolink X2000R

受影响固件X2000R-Gh-V1.0.0-B20250421.1327

漏洞类型栈溢出(CWE-121)

危害等级CVSS 9.1 CRITICAL

攻击前提认证后的 HTTP 请求

危害后果任意代码执行(Scope Changed)

公开 PoC暂无,崩溃现场已实测确认

修复状态厂商已确认,暂无补丁

03  漏洞成因

X2000R 的 Web 服务是嵌入式设备里最常见的 boa。处理 IPv6 设置的 formIpv6Setup 函数里,PPPoE 拨号配置的各个参数(DNS、账号等)从 POST 包体里取出来后,直接以 strcpy 方式拷贝到栈上固定大小的缓冲区。

以 pppoe\_dns2 为例:这个参数本该是一个 DNS 服务器地址,但代码没有做任何长度检查、没有格式校验,超长字符串会把栈上保存的 s0-s7 寄存器和返回地址 ra 一路覆盖掉。函数返回后,PC 直接跳到攻击者控制的地址。

崩溃现场的证据链非常干净:先在拷贝点下断,确认输入是 200 个 A 的重复;继续运行后收到 SIGBUS,PC 和 ra 都变成 0x42424242——也就是填充用的 B。栈布局完全可控,教科书级的 MIPS 栈溢出:

拷贝点断下,输入为 200 个 A

0x457dc4: addiu a0,sp,24

=> 0x457dc8: jal 0x47bf60

0x457dcc: move a1,v0

0 0x457dc8 in /bin/boa(+0x57dc8)

继续运行:SIGBUS,返回地址被覆盖

Program received signal SIGBUS

s0 : 0x41414141  s1 : 0x41414141

ra : 0x42424242  pc : 0x42424242

Invalid $pc @ 0x42424242

pppoe\_dns1(CVE-2026-42019)是同一个函数里前一行代码的同款问题,拷贝目标偏移略有不同(sp+88 与 sp+24),利用方式完全一致。换句话说,这个表单里的参数几乎是一个模板写出来的,坏也是一起坏的。

04  影响范围

确认受影响:X2000R 固件 TOTOLINK-X2000R-Gh-V1.0.0-B20250421.1327(当前在售版本)。

其他型号:boa 加 formIpv6Setup 这套代码在 Totolink 多款路由器上复用,同代码路径的型号大概率同样受影响,建议按代码路径自查。

修复版本:暂无。厂商 2026 年 6 月 25 日确认收到通报,之后 7 月 16 日、9 月 15 日两次跟进,仍未见补丁发布。

05  危害推演

目前没有公开 PoC,从成因可以推出演练路径:

第一步,拿到一个已认证的会话——弱口令、历史认证绕过,或者干脆是内网一台被信任的设备。

第二步,向 formIpv6Setup 提交 POST,pppoe\_dns2 塞入超长填充加 MIPS 大端 payload。

第三步,覆盖 ra 返回到 ROP 链或直接跳 shellcode,在 boa 进程内拿到执行权。

第四步,boa 通常以 root 运行,等于整台路由器失守:DNS 劫持、流量镜像、作为内网跳板都是顺手的后续动作。MIPS 嵌入式漏洞的利用门槛主要在栈随机化和 NX 上,这类消费级路由器往往两者都缺或者很弱,实战可打性高。

06  检测与排查

管理界面里查固件版本是否为 X2000R-Gh-V1.0.0-B20250421.1327 或同分支;在补丁发布前,把 Web 管理口从 WAN 侧关掉是硬性动作。

后台系统状态页查固件版本

从 WAN 侧探测管理界面是否暴露

curl -s -m 5 \

http:///index.asp

返回登录页即暴露,关远程管理

确认 IPv6 表单接口是否可达

curl -s -m 5 \

http://<目标IP>/boaroute6.asp

07  修复建议

目前没有官方修复固件,只能缓解:关闭 WAN 侧远程管理,管理界面仅限 LAN 访问。

修改默认或弱口令——认证是这个洞唯一的前置条件,口令质量直接决定风险等级。

关注 Totolink 官网固件页,补丁发布后第一时间升级。升级后重新提交超长 pppoe\_dns2,应返回错误或参数被截断,而不是设备崩溃——这也可以当作修复验证方法。

对做安服的同学:给客户的路由器资产清单里把 Totolink 单独标出来,这个厂商的消费级产品线近年是重灾区。

08  红队视角

实战里这类洞的价值在落地后干什么。家用路由器坐在网络边界最内侧,打下来之后是内网横向的优质跳板;在红队场景里,一个已知口令的 Totolink 后台,价值不亚于一台域内主机。

几个实操经验:

嵌入式 MIPS 漏洞先确认字节序和架构——这批固件是 MIPS 大端,shellcode 和 ROP gadget 不能跨架构套用。

boa 的表单处理函数名(formXxx)可以直接在固件 binwalk 提取后的字符串里搜,定位处理逻辑比硬啃快很多。

调试时 qemu-system 或真机串口都行,但这类 SIGBUS 崩溃在真机 GDB 下最直观,寄存器现场一拉就知道覆盖到哪了。

同系列参数一起测:一个参数有问题的表单,兄弟参数大概率同款写法,本文的 dns1 和 dns2 就是例子。

09  POC 链接

https://talosintelligence.com/

vulnerability\_reports/

TALOS-2026-2394

说明:完整漏洞通告与崩溃现场,暂无公开 PoC 仓库

想要文中检测命令和排查清单的,留言说一声;关注不迷路,更新看得见。

— END —

Totolink路由器栈溢出RCE:一个参数写穿栈(CVE-2026-42020)" 网络安全文章

Totolink路由器栈溢出RCE:一个参数写穿栈(CVE-2026-42020)"

本文分析TotolinkX2000R路由器boa服务formIpv6Setup中的栈溢出漏洞CVE-2026-42020,CVSS9.1,攻击者认证后可通过超长pppoe\\_dns2参数覆盖返回地址实现任意代码执行。厂商已确认但未发布补丁。建议关闭WAN侧远程管理、修改默认口令并关注固件更新。文章还提供了检测命令、修复验证方法及红队利用思路。
评论:0   参与:  0