CVE-2025-13446CVE-2025-13446是影响Tenda AC21路由器16.03.08.16版本的一个高危安全漏洞。该漏洞存在于路由器的Web管理界面功能中,具体位于/goform/SetSysTimeCfg接口。攻击者可以通过构造恶意的timeZone或time参数值,利用栈缓冲区溢出技术在受影响设备上执行任意代码。
Tenda AC21是一款面向家庭和小型办公室用户的主流双频千兆无线路由器,广泛应用于亚太地区。由于该设备通常直接暴露在互联网或处于局域网核心位置,此漏洞的存在使得大量终端用户面临被攻击者完全接管设备的风险。攻击成功后,攻击者可以嗅探网络流量、植入后门、进行中间人攻击或将设备纳入僵尸网络。
该漏洞的CVSS评分达到8.8分,属于高危级别。攻击向量为网络形式,无需认证即可发起攻击(低权限即可),且无需用户交互。漏洞的机密性、完整性和可用性影响均被评估为高。值得注意的是,该漏洞的利用代码已在互联网上公开,理论上任何具备基础安全知识的攻击者都可以利用此漏洞。
鉴于Tenda厂商对此类漏洞的修复响应速度通常较慢,且大量老旧固件版本仍在使用,预计该漏洞将在相当长的时间内持续构成威胁。建议用户立即采取临时缓解措施并关注厂商更新。
该漏洞的根本原因在于Tenda AC21路由器固件中的/goform/SetSysTimeCfg处理函数对用户输入的timeZone和time参数缺乏充分的边界检查。当Web服务器解析HTTP请求中的这些参数时,直接将用户提供的字符串数据复制到栈上的固定大小缓冲区中,而没有验证输入长度是否超过目标缓冲区的容量。
在C语言中,栈缓冲区的分配发生在函数调用期间,局部变量按顺序压入栈帧。如果攻击者向timeZone或time参数传入超长字符串,strcpy、sprintf或类似的不安全字符串函数会将数据写入相邻的栈内存区域,包括函数返回地址和保存的寄存器值。通过精心构造溢出数据,攻击者可以覆盖返回地址,将程序执行流重定向到其注入的恶意代码。
由于路由器固件通常运行在精简的嵌入式Linux系统上,攻击者可以利用常见的ROP(返回导向编程)技术绕过NX(不可执行)保护。通过链接固件中现有的可执行代码片段,攻击者可以构建调用链,最终执行system()等函数来运行任意命令。
PoC(概念验证)代码通常通过发送带有超长timeZone值的HTTP POST请求来触发漏洞。成功利用后,攻击者可以在路由器的root权限上下文中执行命令,实现完全控制。攻击过程可以完全通过远程网络完成,无需物理接触设备。