Tenda AC9 `AdvSetMacMtuWan` Stack-Based Buffer Overflow (CVE-2025-29384)
by Otsmane Ahmed · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-29384
- Category
- network
- Affected product
- Tenda AC9 dual-band wireless router, web management interface (/goform/AdvSetMacMtuWan endpoint)
- Affected versions
- Firmware V15.03.05.14_multi (confirmed vulnerable; no official patch identified in source repo)
- Disclosed
- 2026-07-06
- Patch status
- unpatched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | Otsmane Ahmed |
| CVE / Advisory | CVE-2025-29384 |
| Category | network |
| Severity | Critical |
| CVSS Score | 9.8 (per NVD) |
| Status | PoC |
| Tags | tenda, ac9, router, stack-buffer-overflow, cwe-121, dos, rce, mips, embedded, iot, python, ruby, metasploit |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Tenda AC9 dual-band wireless router, web management interface (/goform/AdvSetMacMtuWan endpoint) |
| Versions Affected | Firmware V15.03.05.14_multi (confirmed vulnerable; no official patch identified in source repo) |
| Language / Platform | Python 3 PoC script and a Ruby Metasploit module, targeting embedded MIPS-based (Broadcom BCM4708) router firmware |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
CVE-2025-29384 is a critical stack-based buffer overflow in the Tenda AC9 router’s web management interface, specifically in the handling of the wanMTU POST parameter sent to the /goform/AdvSetMacMtuWan endpoint. The root cause is a lack of bounds checking when the attacker-supplied wanMTU value is copied into a fixed-size stack buffer, functionally equivalent to an unchecked strcpy. The repository provides a multithreaded Python PoC (poc.py) that floods the endpoint with oversized, randomized wanMTU payloads to trigger the overflow, plus a Ruby Metasploit module (tenda_ac9_stack_overflow.rb) that sends a single oversized wanMTU value via send_request_cgi. Because the endpoint requires no authentication and is reachable over the network, a remote attacker can crash the router’s HTTP server (denial of service) and, depending on stack layout and the MIPS calling convention, potentially hijack the return address for remote code execution.
Vulnerability Details
Root Cause
The vulnerable handler behind /goform/AdvSetMacMtuWan copies the wanMTU form parameter into a fixed-size stack buffer without validating its length. The repository’s README documents a hypothetical reconstruction of the vulnerable logic:
| |
An oversized wanMTU value (1024+ bytes in the PoC, configurable) overflows buffer, corrupting adjacent stack memory, including potentially the saved return address, on the router’s MIPS 74Kc-based architecture.
Attack Vector
- Identify a reachable Tenda AC9 router’s web management interface (default
http://<target_ip>/goform/AdvSetMacMtuWan). - Send an unauthenticated HTTP POST request to
/goform/AdvSetMacMtuWanwith awanMTUfield containing a large, randomized payload (the Python PoC base64-encodes and truncates a random string to the configured size; the Metasploit module usesrand_text_alpha). - The oversized value overflows the fixed-size stack buffer used to process the MTU setting, corrupting adjacent stack memory.
- Observe a request timeout or connection failure as evidence the HTTP server crashed (DoS); with further offset/gadget analysis on the MIPS target, this primitive could potentially be extended to control-flow hijacking for RCE.
Impact
Denial of service against the router’s web management interface (the HTTP server crashes and becomes unresponsive until reboot), with potential remote code execution on the MIPS-based device if the overflow is leveraged to overwrite the return address — all without authentication.
Environment / Lab Setup
Target: Tenda AC9 router, firmware V15.03.05.14_multi (confirmed vulnerable)
Attacker (Python PoC): Kali Linux, Python 3.x, `requests` library
Attacker (Metasploit module): Metasploit Framework (msfconsole), Ruby, module copied into
~/.msf4/modules/exploits/linux/http/
Proof of Concept
PoC Script
See
poc.pyandtenda_ac9_stack_overflow.rbin this folder.
| |
The Python PoC generates a randomized, base64-encoded payload of the requested size and POSTs it as the wanMTU parameter to /goform/AdvSetMacMtuWan from multiple concurrent threads; a request timeout is treated as evidence the target crashed. The Metasploit module performs the equivalent single-request attack via send_request_cgi against the same endpoint and parameter.
Detection & Indicators of Compromise
Signs of compromise:
- Router web management HTTP server becomes unresponsive or the device reboots unexpectedly
- Repeated large POST bodies to
/goform/AdvSetMacMtuWanin network capture or reverse-proxy logs - Connection timeouts/resets from the router coinciding with inbound requests to the MTU-configuration endpoint
Remediation
| Action | Detail |
|---|---|
| Primary fix | No official patch identified at time of mirroring — see references |
| Interim mitigation | Disable remote/WAN administration, restrict access to the router’s web management interface to trusted LAN hosts, and monitor for crash/reboot patterns correlated with requests to /goform/AdvSetMacMtuWan |
References
Notes
Mirrored from https://github.com/Fomovet/cve-2025-29384 on 2026-07-06. The repository’s README attributes the original PoC and Metasploit module authorship to “Otsmane Ahmed” and references an upstream repo at github.com/Otsmane-Ahmed/cve-2025-29384-poc; this mirror preserves that attribution as found in the source.
| |