← Back to Feed CACHED · 2026-09-29 20:37:04 · CACHE_KEY CVE-2026-20245
CVE-2026-20245 · CWE-116 · Disclosed 2026-06-04

Cisco Catalyst SD-WAN Manager/Controller/Validator CLI Command Injection Privilege Escalation

ASSESSED — NOISGATE
Vendor
—
—
—
Reassessed
—
—
—
Verdict: —
Do you agree?
01 · The Real Story

Someone found the master key to the building's HVAC system was taped inside the thermostat's battery door

CVE-2026-20245 is a command injection vulnerability in the CLI of Cisco Catalyst SD-WAN Manager (vManage), Controller (vSmart), and Validator (vBond). The flaw lives in vconfd_script_upload_tenant_list.sh, which processes uploaded CSV files with root privileges without sanitizing embedded shell metacharacters. An attacker with netadmin CLI access uploads a crafted CSV via request tenant-upload tenant-list, and the shell script executes the injected payload as root. All versions through 20.18.2.2 and 26.1.1.1 are affected across on-prem, cloud-provisioned, Cisco-managed, and FedRAMP deployments. Fixed in 20.9.9.2, 20.12.7.2, 20.15.4.5, 20.15.5.3, 20.18.3.1, and 26.1.1.2.

Cisco's HIGH 7.8 is defensible only in strict CVSS isolation — the vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) correctly captures the local-auth prerequisite. But it completely misses the blast radius. SD-WAN Manager is the control plane: root here lets an attacker push poisoned templates, modify routing policies, exfiltrate fabric-wide configurations, and persist across the entire WAN. Mandiant's June 2026 report confirmed exactly this: a state-sponsored actor chained authentication bypass CVEs to reach the CLI, exploited CVE-2026-20245 as a zero-day to create a backdoor root account (troot), exfiltrated SD-WAN configs, and pushed changes to edge devices — all while running anti-forensic cleanup scripts. The vendor severity is a significant understatement of operational risk.

"Root on SD-WAN Manager is root on your entire fabric. Zero-day exploited, KEV-listed, no workaround."
02 · The Attack Path

6 steps from start to impact.

STEP 01

Reach the SD-WAN Manager CLI

The attacker needs SSH or console access to the vManage appliance. In the Mandiant campaign, this was achieved by exploiting authentication bypass vulns (CVE-2026-20127 / CVE-2026-20182) or using stolen credentials from rogue SD-WAN peering connections. Internet-exposed vManage instances (450–550+ per Shodan/Censys, March 2026) are directly reachable; internal deployments require prior network access.
Conditions required:
  • Network reachability to vManage SSH (TCP/22) or console
  • Companion auth bypass CVE or stolen credentials for initial foothold
Where this breaks in practice:
  • vManage SSH should be ACL-restricted to management VLAN or jump host
  • Internet-exposed instances are a minority of total deployments (~450–550 per Shodan)
Detection/coverage: Shodan/Censys queries for exposed vManage instances; SSH login monitoring in /var/log/auth.log for unexpected source IPs
STEP 02

Authenticate with netadmin privileges

The attacker must hold a netadmin-level CLI account. In the documented campaign, the built-in vmanage-admin account was used after credential manipulation via companion vulnerabilities. The CVSS vector codes this as PR:L, but netadmin is a privileged management role — not an ordinary user.
Conditions required:
  • Valid netadmin-level credentials (vmanage-admin, admin, or custom netadmin account)
  • Or successful exploitation of CVE-2026-20127/CVE-2026-20182 for auth bypass
Where this breaks in practice:
  • Requires credential theft, brute force, or chaining with another CVE
  • Organizations with MFA on SSH or certificate-only auth raise the bar
Detection/coverage: Failed SSH login monitoring; audit of /var/confd/rollback/ for unexpected password changes
STEP 03

Upload a crafted CSV payload

The attacker writes a file containing embedded shell commands (e.g., evil_tenant.csv) to the appliance filesystem at /home/admin/. The CSV payload exploits the lack of input sanitization in the tenant-list upload handler. Public PoC from 0xBlackash demonstrates the payload structure. Mandiant published the exact payload: it backs up system files, then appends a backdoor user to /etc/passwd and /etc/shadow.
Conditions required:
  • Write access to /home/admin/ on the appliance
  • Knowledge of the CSV injection technique (public since June 2026)
Where this breaks in practice:
  • File integrity monitoring on /home/admin/ could detect new file creation
  • The technique is now well-documented, but requires CLI access already obtained in Step 2
Detection/coverage: Monitor /home/admin/ for new .csv files; FIM alerts on unexpected file creation in admin home directories
STEP 04

Trigger the vulnerable shell script

The attacker runs request tenant-upload tenant-list /home/admin/evil_tenant.csv vpn 0 from the CLI. This invokes vconfd_script_upload_tenant_list.sh, which processes the CSV content through an unescaped shell evaluation running as root (UID 0). The script does not validate or sanitize the file contents before passing them to shell execution.
Conditions required:
  • CLI session with netadmin privileges (achieved in Step 2)
  • The crafted CSV file on disk (achieved in Step 3)
Where this breaks in practice:
  • Command audit logging in /var/log/scripts.log records the tenant-upload execution
  • Cisco Live Protect shield can detect this specific command pattern
Detection/coverage: Monitor /var/log/scripts.log for tenant-list upload entries; Cisco Live Protect shield provides runtime detection
STEP 05

Achieve persistent root access

The injected shell commands execute as root. In the Mandiant-documented attack, the payload appended troot:x:0:0:root:/root:/bin/bash to /etc/passwd and a corresponding shadow entry, creating a persistent backdoor root account. The attacker then used su troot to switch to the root shell. Anti-forensic scripts cleaned up artifacts and restored original files afterward.
Conditions required:
  • Successful command injection from Step 4
Where this breaks in practice:
  • None at this stage — once the script executes, root is achieved with no further barriers
Detection/coverage: Monitor /etc/passwd for new UID 0 accounts; audit su/sudo usage in auth.log; Google SecOps detection rules available for passwd append and hidden backup patterns
STEP 06

Pivot to fabric-wide control

With root on vManage, the attacker controls the entire SD-WAN fabric. The Mandiant report confirmed the attacker exfiltrated full SD-WAN configurations via the REST API (GET /dataservice/template/config/attached/), pushed configuration changes to edge devices, and could modify routing and security policies fleet-wide. This represents domain-level compromise of the WAN infrastructure.
Conditions required:
  • Root access on vManage (achieved in Step 5)
  • SD-WAN edge devices connected to the compromised controller
Where this breaks in practice:
  • None — vManage root access inherently provides fabric-wide control by design
  • Edge devices trust their controller; there is no mutual integrity validation of pushed configs
Detection/coverage: Audit REST API logs on port 8443 for config enumeration (GET /dataservice/system/device/vedges, /controllers); monitor edge device config change logs for unexpected template pushes
03 · Compensating Control

1
CRITICAL 9.1→IGNORE 0.0
SEVERITY REDUCED
Patch to fixed version immediately — Upgrade all Catalyst SD-WAN Manager, Controller, and Validator appliances to 20.9.9.2, 20.12.7.2, 20.15.4.5, 20.15.5.3, 20.18.3.1, or 26.1.1.2. Cisco confirms no workaround — the patch is the only full remediation. Per the noisgate CRITICAL mitigation SLA, deploy within 3 days. Given active exploitation and KEV status, prioritize this above all other patching work. Run request admin-tech before upgrading to preserve forensic evidence.
2
CRITICAL 9.1→HIGH 7.0
SEVERITY REDUCED
ACL-restrict SSH access to vManage appliances — Lock SSH (TCP/22) and console access to vManage, vSmart, and vBond to a hardened jump host or dedicated out-of-band management network. This breaks Step 1 of the attack path for any attacker not already on the management plane. Deploy within hours given active exploitation. This does not fix the vulnerability but dramatically reduces the reachable population.
3
CRITICAL 9.1→HIGH 6.5
SEVERITY REDUCED
Rotate all SD-WAN administrative credentials and certificates — Change passwords for admin, vmanage-admin, and all netadmin-level accounts. Revoke and re-issue any certificate material used for SD-WAN peering connections. This invalidates credentials potentially stolen during the documented campaign. Deploy within 3 days per noisgate CRITICAL mitigation SLA.
4
CRITICAL 9.1→CRITICAL 9.1
Hunt for Mandiant-documented IOCs — Search for backdoor user troot in /etc/passwd, review /var/log/scripts.log for tenant-list upload activity, check /var/log/auth.log for vmanage-admin SSH from unexpected IPs, look for hidden backup files (.orig_passwd, .orig_shadow) in /home/admin/, and scan network logs for known attacker IPs (126.51.108.152, 76.92.245.217, 207.190.37.94, 23.245.7.178, 153.186.231.233, 167.179.79.189, 45.32.38.160, 209.137.225.101). Deploy within 24 hours. This is detection, not prevention — it tells you if you were already compromised.
5
CRITICAL 9.1→HIGH 7.0
SEVERITY REDUCED
Enable Cisco Live Protect shield — Cisco released a temporary Live Protect shield providing runtime detection for CVE-2026-20245 exploitation attempts. This offers an additional detection layer during the upgrade window. Deploy within 3 days. This is detection-based and may not prevent a determined attacker but raises the detection probability.
What doesn't work
  • WAF or IPS signatures — the exploit payload is delivered via CLI file upload on the appliance itself, not over HTTP. Network-layer inspection cannot see or block the malicious CSV content.
  • Disabling the web UI (port 8443) — the vulnerability is in the CLI request tenant-upload handler processed by a shell script, not the web interface. Disabling the GUI has no effect on the vulnerable code path.
  • Read-only RBAC downgrade — the netadmin role is required for normal SD-WAN management operations (template pushes, device onboarding, policy changes). Downgrading all administrators to read-only breaks operational functionality and is not sustainable.
  • Network segmentation of edge devices from vManage — edge devices MUST communicate with their controller for the SD-WAN fabric to function. Isolating them from vManage is architecturally incompatible with SD-WAN operations.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild StatusConfirmed active exploitation. Mandiant documented a state-sponsored actor exploiting this as a zero-day from late 2025 through April 2026, months before the June 4, 2026 disclosure. The actor created backdoor root accounts and exfiltrated SD-WAN fabric configurations. This is the 7th actively exploited zero-day in Cisco SD-WAN products in 2026.
KEV StatusListed June 9, 2026 — CISA added CVE-2026-20245 alongside two other vulnerabilities. Binding operational directive applies to all FCEB agencies.
PoC AvailabilityPublic. 0xBlackash/CVE-2026-20245 — Python exploit script (4 stars, 1 fork). Also indexed in SecureWithUmer/CVE-2026-PoCs and on pocindex.io. Mandiant's blog published the full evil_tenant.csv payload structure including the passwd/shadow injection commands.
EPSS0.25323 (~25th percentile) — high exploitation probability, consistent with confirmed in-the-wild activity and public PoC availability.
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 7.8 HIGH. Local access, low complexity, low privileges, no user interaction. Scope:Unchanged understates the fabric-wide blast radius. The PR:L coding is debatable — netadmin is a privileged management role, not a standard user.
Affected VersionsAll Catalyst SD-WAN Manager, Controller, and Validator: ≤20.9.9.1, ≤20.12.7.1, ≤20.15.4.4, ≤20.15.5.2, ≤20.18.2.2, ≤26.1.1.1. All deployment types: on-prem, cloud-provisioned, cloud (Cisco-managed), and Government (FedRAMP).
Fixed Versions20.9.9.2, 20.12.7.2, 20.15.4.5, 20.15.5.3, 20.18.3.1, 26.1.1.2
Scanning / ExposureShodan/Censys (March 2026): 450–550 internet-exposed vManage instances. FOFA: ~1,000+. ZoomEye: ~275. SD-WAN controllers are frequently internet-reachable by architectural necessity (edge device onboarding). A passive scanner for the companion CVE-2026-20127 also fingerprints exposed vManage.
Disclosure TimelineLate 2025: First zero-day exploitation observed. June 4, 2026: Cisco advisory published. June 9, 2026: CISA KEV listing. June 12, 2026: Fixed releases available. June 24, 2026: Mandiant publishes full campaign analysis.
Reporting Researcher / OrgDiscovery credited to Cisco PSIRT (internal) and Google Mandiant (incident response during a service-provider compromise). Mandiant published detailed campaign analysis on June 24, 2026. File hash IOC: b82936f37648518425c7d3cf9e09eaffa41d7cdb3840f6a40287e3a108880f7b (evil_tenant.csv).

Sources.

  1. Cisco Security Advisory: cisco-sa-sdwan-privesc-4uxFrdzx
  2. Google Mandiant: Zero-Day Exploitation of CVE-2026-20245 in Cisco Catalyst SD-WAN Manager
  3. CISA KEV Catalog Addition (June 9, 2026)
  4. The Hacker News: Cisco Catalyst SD-WAN Manager CVE-2026-20245 Flaw Actively Exploited
  5. BleepingComputer: Mandiant Reveals How Cisco SD-WAN Zero-Day Attacks Gained Root Access
  6. 0xBlackash PoC Repository on GitHub
  7. SecurityWeek: Cisco SD-WAN Zero-Day Exploited Months Before Patching
  8. CVE Record: CVE-2026-20245
05 · The Call

Final Verdict
↑ UPGRADED to CRITICAL (9.1/10)

Why this verdict

  • Role multiplier — canonical high-value component: SD-WAN Manager is the central orchestration plane for Cisco's SD-WAN architecture. 100% of vManage installs occupy the high-value network-orchestration role by definition. Root on vManage = ability to push configs to every edge router in the fabric = fleet-scale blast radius. Per the deployment-role floor rule, this floors the verdict at CRITICAL.
  • Active zero-day exploitation by a state actor: Mandiant confirmed exploitation from late 2025 through April 2026, months before the June 4 disclosure. The attacker created backdoor root accounts, exfiltrated fabric configs, and pushed changes to edge devices. KEV-listed June 9, 2026. EPSS at 0.25 reflects high exploitation probability. This is not theoretical risk.
  • Authentication gate was bypassed in the wild: The CVSS vector says AV:L/PR:L, implying the attacker needs local CLI access with at least low-privilege credentials. In practice, the documented campaign chained CVE-2026-20127 and CVE-2026-20182 (authentication bypass vulnerabilities) to reach the CLI without legitimate credentials. The friction that should narrow the reachable population was eliminated.
  • No workaround available: Cisco confirms no configuration-level workaround exists. The only remediation is a software upgrade. This eliminates interim risk reduction and leaves unpatched systems fully exposed.
  • Public PoC and weaponized tradecraft lower the barrier to replication: GitHub PoC from 0xBlackash, Mandiant's published payload structure (the full evil_tenant.csv injection chain), and detailed MITRE ATT&CK mapping mean any motivated attacker can reproduce the chain. The barrier to entry is now trivially low.

Why not higher?

The vulnerability requires authenticated CLI access and cannot be triggered remotely by an unauthenticated attacker in isolation — it needs chaining with a companion authentication bypass CVE or stolen credentials. The CVSS Scope is Unchanged (the root escalation stays on the same system, even though the operational impact extends to the fabric). A 10.0 would require unauthenticated remote code execution with no prerequisites.

Why not lower?

The affected component IS the network control plane — every vManage install is high-value by definition. Root access was demonstrated to enable fabric-wide configuration manipulation, edge-device policy pushes, and persistent backdoor creation. Zero-day exploitation, KEV listing, public PoC, no workaround, state-sponsored campaign activity, and 450–550+ internet-exposed instances all compound upward. Calling this HIGH would require evidence that vManage root does not translate to fabric compromise, which directly contradicts the Mandiant findings.

06 · Verification

Crowdsourced verification payload.

Run this script directly on each Cisco Catalyst SD-WAN Manager, Controller, or Validator appliance via SSH. Example: ssh admin@vmanage01 'bash -s' < check_cve_2026_20245.sh. Requires admin-level shell access. The script checks the installed software version against known fixed versions and scans for IOCs from the Mandiant campaign.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/bin/bash
# check_cve_2026_20245.sh
# Checks whether CVE-2026-20245 is patched on Cisco Catalyst SD-WAN Manager/Controller/Validator
# Run on the target appliance via SSH. Requires admin-level access.
# Outputs: VULNERABLE / PATCHED / UNKNOWN
# Also checks for IOCs from the Mandiant campaign.

set -euo pipefail

VERSION=$(cat /etc/viptela/confd_version 2>/dev/null || echo "")

if [ -z "$VERSION" ]; then
    echo "UNKNOWN - Could not determine SD-WAN software version. Is this a Catalyst SD-WAN appliance?"
    exit 2
fi

echo "Detected SD-WAN version: $VERSION"

# Compare version against known fixed versions
# Fixed: 20.9.9.2, 20.12.7.2, 20.15.4.5, 20.15.5.3, 20.18.3.1, 26.1.1.2
version_gte() {
    printf '%s\n%s' "$1" "$2" | sort -V | head -n1 | grep -qx "$2"
}

PATCHED=0

case "$VERSION" in
    20.9.*)
        version_gte "$VERSION" "20.9.9.2" && PATCHED=1
        ;;
    20.12.*)
        version_gte "$VERSION" "20.12.7.2" && PATCHED=1
        ;;
    20.15.4.*)
        version_gte "$VERSION" "20.15.4.5" && PATCHED=1
        ;;
    20.15.5.*|20.15.[6-9].*|20.1[6-7].*)
        version_gte "$VERSION" "20.15.5.3" && PATCHED=1
        ;;
    20.18.*)
        version_gte "$VERSION" "20.18.3.1" && PATCHED=1
        ;;
    26.*)
        version_gte "$VERSION" "26.1.1.2" && PATCHED=1
        ;;
    *)
        echo "UNKNOWN - Version $VERSION not in known affected release trains."
        exit 2
        ;;
esac

# IOC checks regardless of patch status
echo "--- IOC Checks ---"
IOC_FOUND=0
if grep -q '^troot:' /etc/passwd 2>/dev/null; then
    echo "[!] ALERT: Backdoor user 'troot' found in /etc/passwd. Investigate immediately."
    IOC_FOUND=1
fi
if [ -f /home/admin/evil_tenant.csv ]; then
    echo "[!] ALERT: evil_tenant.csv found. Known exploit artifact."
    IOC_FOUND=1
fi
if [ -f /home/admin/.orig_passwd ]; then
    echo "[!] ALERT: .orig_passwd backup found. Known anti-forensic artifact."
    IOC_FOUND=1
fi
if [ -f /home/admin/.orig_shadow ]; then
    echo "[!] ALERT: .orig_shadow backup found. Known anti-forensic artifact."
    IOC_FOUND=1
fi
if [ -f /home/admin/.orig_vbond_vsmart_tenant_list ]; then
    echo "[!] ALERT: .orig_vbond_vsmart_tenant_list backup found. Known anti-forensic artifact."
    IOC_FOUND=1
fi
if grep -q 'upload_tenant_list' /var/log/scripts.log 2>/dev/null; then
    echo "[*] INFO: tenant-list upload activity found in scripts.log. Review manually."
fi
# Check for any UID 0 accounts besides root
UID0_ACCOUNTS=$(awk -F: '$3 == 0 && $1 != "root" {print $1}' /etc/passwd 2>/dev/null)
if [ -n "$UID0_ACCOUNTS" ]; then
    echo "[!] ALERT: Non-root UID 0 account(s) found: $UID0_ACCOUNTS"
    IOC_FOUND=1
fi
if [ "$IOC_FOUND" -eq 1 ]; then
    echo "[!!!] IOCs DETECTED - This system may have been compromised. Preserve evidence with 'request admin-tech' and engage IR."
fi
echo "--- End IOC Checks ---"

if [ "$PATCHED" -eq 1 ]; then
    echo "PATCHED - Version $VERSION is at or above the fix for CVE-2026-20245."
    exit 0
else
    echo "VULNERABLE - Version $VERSION is affected by CVE-2026-20245. Upgrade immediately."
    exit 1
fi