CVE-2025-69764CVE-2025-69764是影响Tenda AX3路由器固件的一个严重安全漏洞,CVSS评分高达9.8分(满分10分)。该漏洞存在于路由器的Web管理界面处理IPTV配置的功能中,具体位于formGetIptv函数。由于该函数在处理用户输入的stbpvid参数时未进行适当的边界检查,导致攻击者可以通过构造超长的参数值触发基于栈的缓冲区溢出。
Tenda AX3是一款面向家庭和小型办公室用户的双频Wi-Fi 6路由器,广泛应用于全球市场。路由器固件版本v16.03.12.11存在此漏洞,攻击者无需认证即可利用此漏洞。这意味着任何能够访问路由器Web管理界面或能向路由器发送HTTP请求的攻击者都可以尝试触发该漏洞。
成功利用此漏洞可能导致多种严重后果:首先,攻击者可以通过溢出覆盖栈上的返回地址和关键变量,控制程序执行流程;其次,攻击者可以注入恶意代码并使其在路由器上以高权限执行;最终,攻击者可以完全接管路由器设备,窃取网络流量、植入后门或将其纳入僵尸网络进行DDoS攻击。
由于该漏洞可通过网络远程利用且无需任何认证条件,加上Tenda路由器通常直接暴露在互联网或局域网中,使得该漏洞具有极高的实际威胁性。建议所有使用受影响固件版本的用户立即采取防护措施。
漏洞根源在于formGetIptv函数对stbpvid栈缓冲区的处理不当。在Tenda AX3固件中,formGetIptv函数负责处理用户请求获取IPTV配置信息。当用户通过HTTP请求提交stbpvid参数时,该函数会将参数值复制到栈上的固定大小缓冲区中,但未验证输入长度是否超过缓冲区容量。
具体来说,函数内部声明了一个栈缓冲区用于存储stbpvid值,但直接使用strcpy或类似的不安全字符串函数将用户输入复制到该缓冲区。由于栈空间有限,当攻击者提交远超预期长度的字符串时,会发生缓冲区溢出。溢出的数据将覆盖栈帧中的其他重要数据,包括:返回地址(用于控制函数返回后的执行位置)、保存的基址指针、局部变量以及可能的函数指针。
利用此漏洞的攻击者需要构造一个包含超长字符串的HTTP POST或GET请求,将stbpvid参数的值设置为超过缓冲区大小的数据。精心设计的溢出数据可以覆盖返回地址,使其指向攻击者注入的shellcode或已存在于内存中的gadget指令序列。由于路由器固件通常以较高权限运行,成功利用后可获得root级别的代码执行能力。
值得注意的是,Tenda路由器的Web服务器通常以root权限运行,这大大简化了攻击者的利用过程,他们无需进行额外的权限提升即可完全控制设备。此外,路由器通常缺乏现代操作系统中的安全防护机制如ASLR(地址空间布局随机化)和栈保护,这使得利用更加可靠。