Feb 11, 2026·7 min read·20 visits
Cisco NX-OS and UCS devices were caught logging sensitive credentials in cleartext. An attacker with local, low-privileged access (like a guest shell) can simply grep the logs to find admin passwords and take over the device.
A classic but deadly instance of CWE-532 (Insertion of Sensitive Information into Log File) within Cisco's NX-OS and UCS Fabric Interconnects. While categorized as 'Medium' severity due to the local access requirement, this vulnerability serves as a trivial privilege escalation path for any insider or compromised low-level account. By simply reading the system's own diary—its log files—an attacker can recover cleartext credentials and elevate to full administrative control.
Every developer has been there. You're debugging a complex authentication flow, nothing is working, and out of frustration, you flip the logging switch to 'ALL'. You need to see exactly what's hitting the wire. It works, you fix the bug, and you go home. But did you remember to turn the logging back down? Did you sanitize the input variables before writing them to disk?
CVE-2025-20290 is the architectural equivalent of leaving that debug switch taped to the 'ON' position. Cisco's NX-OS, the operating system powering the backbone of countless data centers via Nexus switches, decided that secrets were meant to be shared—specifically with the local filesystem. This isn't a complex heap overflow or a race condition in the kernel. It is a failure of discipline.
The vulnerability resides in the logging mechanism itself. When specific system operations occur—likely during provisioning, authentication handshakes, or configuration merges—the system writes sensitive data into log files. These aren't encrypted vaults; they are standard text files sitting in directories like /var/sysmgr/log/. For a hacker, this is the best kind of vulnerability: no ROP chains, no heap grooming, just cat and grep.
The root cause here is mapped to CWE-532: Insertion of Sensitive Information into Log File. It sounds mundane, but in the context of a network appliance, it is catastrophic. Network devices are fortresses; the outer walls are thick, but the interior assumes a level of trust. The flaw specifically affects how NX-OS handles data sanitation before writing to the syslog or internal component logs.
In a correct implementation, sensitive parameters like passwords, API tokens, or SNMP community strings should be masked (e.g., ******) or redacted entirely before being passed to the logging daemon. In the affected versions of NX-OS (spanning 7.x to 10.x) and UCS software, this sanitation step was missed in certain code paths.
What makes this dangerous is the persistence. Logs aren't ephemeral; they persist on disk until rotated. A credential logged three days ago is just as valid as one logged three seconds ago. If an attacker gains a foothold today, they can scroll back through time to find the keys to the kingdom.
Because Cisco NX-OS is proprietary, we don't have the public git commit to point and laugh at. However, we can reconstruct the logic failure with high fidelity based on the behavior. This is a logic bug, not a memory safety bug, so the code looks deceptively normal.
The Vulnerable Logic (Conceptual):
// A hypothetical logging function in the auth manager
void handle_auth_request(char *username, char *password) {
// MISTAKE: Logging raw inputs for "debugging"
syslog(LOG_INFO, "Processing auth for user: %s with pass: %s", username, password);
if (authenticate(username, password)) {
grant_access();
} else {
log_failure(username);
}
}In the snippet above, the developer likely intended to remove the %s for the password before shipping, or assumed that the log level LOG_INFO wouldn't be captured in production.
The Patched Logic:
// The fixed implementation sanitizes data first
void handle_auth_request(char *username, char *password) {
// FIX: Never log the raw secret.
syslog(LOG_INFO, "Processing auth for user: %s", username);
if (authenticate(username, password)) {
grant_access();
} else {
log_failure(username);
}
}The patch likely involves searching the codebase for every instance of logging functions and ensuring that variables holding CREDENTIAL, TOKEN, or PASSWORD types are passed through a mask_secret() function or omitted entirely. In the context of the Cisco fix, they likely also had to implement a log scrubber to clean up existing logs on update, ensuring that applying the patch creates a clean slate.
Exploiting CVE-2025-20290 is delightfully low-tech. The barrier to entry isn't technical skill; it's access. You need to be authenticated, but you only need low privileges. Let's look at the attack path for a Cisco Nexus 9000.
First, we need to get to the underlying Linux shell. On NX-OS, this is often done via the guestshell feature or, if we have a basic operator account, dropping into bash.
switch> enable
switch# guestshell
[guestshell@guestshell ~]$ whoami
guest_userOnce we are in the shell, we are effectively on a Linux box. We want to look where the system manager (sysmgr) keeps its notes. The advisory points to system logs. A simple grep command can reveal the jewels.
# Searching recursively for common credential patterns
grep -rE "password|secret|token|key" /var/sysmgr/log/
# Output might look like:
# /var/sysmgr/log/auth_debug.log: 2025-08-20 10:00:01: User 'admin' password set to 'SuperSecretCisco123!'On Cisco UCS Fabric Interconnects, you might not get a direct shell easily. However, the vulnerability disclosure notes that the logs are included in Tech Support Files.
tar -xvf tech-support.tar && grep -r "password" .This is a "delayed read" exploit. You don't need to be on the box to parse the logs if the box kindly packages them up and lets you download them.
Why is a CVSS 5.5 dangerous? Because metrics lie. The AV:L (Local Attack Vector) pulls the score down significantly, implying you need physical access or a prior compromise to use this. While true, it ignores the reality of modern network administration.
In many environments, "Level 1" support engineers or automated monitoring scripts have low-level access to these switches to check interface statuses. If any of those accounts are compromised—or if a disgruntled employee decides to look around—this vulnerability turns that limited access into full root or admin control.
Once an attacker recovers the admin credentials from the log:
It is a classic Privilege Escalation. You start in the lobby, read the sticky note with the safe code, and walk into the vault.
Mitigation here is binary: you patch, or you remain vulnerable. There is no configuration workaround because you cannot easily instruct a closed-source binary to stop logging specific lines without breaking the binary itself.
Remediation Steps:
cisco-sa-nxos-infodis-TEcTYSFG. Typically, this means jumping to the latest maintenance release of the 9.x or 10.x train.clear logging logfile or similar CLI commands) to ensure the historical evidence is destroyed.CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Cisco NX-OS Software Cisco | 7.0(3)I4(x) - 10.5(3o) | See Vendor Advisory |
Cisco UCS Manager Cisco | 4.0(1a) - 4.3(6b) | 4.3(6c) or later |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-532 |
| Attack Vector | Local |
| CVSS v3.1 | 5.5 (Medium) |
| EPSS Score | 0.00016 |
| Exploit Status | PoC Not Public (Logic Trivial) |
| Impact | Confidentiality High |
Insertion of Sensitive Information into Log File
Netflix Lemur before 1.9.3 contains a missing authorization vulnerability (CWE-862, CWE-639) when handling certificate creation, upload, or modification. Authenticated non-read-only users can manipulate the replaces parameter to silence expiration notifications and hijack certificate rotation tasks for arbitrary targets, leading to unauthorized TLS certificate deployment and traffic interception.
CVE-2026-71317 is a critical Broken Object-Level Authorization (BOLA) / Missing Authorization vulnerability in Netflix Lemur versions prior to 1.9.3. When the self-service authority creation option is enabled (ADMIN_ONLY_AUTHORITY_CREATION = False), Lemur allows authenticated non-read-only users to request the creation of a subordinate Certificate Authority (sub-CA) chained to any internal parent authority, even if the requesting user lacks administrative or usage permissions over that parent CA. This allows attackers to generate subordinate CAs signed by trusted root certificates, exposing private keys and compromising the organizational PKI trust chain.
Netflix Lemur, a TLS/SSL certificate management framework, contains a missing authorization check in its certificate export endpoint. Prior to version 1.9.3, the validation logic verifying whether a user had permission to export a certificate was incorrectly placed inside a block that executed only if the selected plugin required a private key. When an authenticated user attempted to export a certificate using a plugin that did not require the private key, the authorization check was bypassed, allowing unauthorized access to the public portions of the certificate and producing misleading audit logs.
A critical security flaw in LibreNMS allows authenticated administrators to execute arbitrary commands by modifying the configured binary path for snmpget and accessing the About page. This occurs due to insufficient verification of the executable file's identity and integrity prior to executing it with shell_exec.
LibreNMS versions prior to 26.7.0 are vulnerable to a stored Cross-Site Scripting (XSS) vulnerability. An authenticated administrator can inject arbitrary HTML or JavaScript into graph descriptions via specific administrative configuration endpoints. When another authenticated user views the affected graph, the unescaped payload executes within their browser context.
An injection vulnerability in LibreNMS's Oxidized integration component allows administrative or network-positioned attackers to achieve stored cross-site scripting (XSS). By setting a malicious oxidized.url endpoint, the server makes outbound queries and processes returned JSON fields containing malicious HTML or JavaScript. These payloads are outputted directly in the web UI without appropriate output encoding.