Cisco Catalyst SD-WAN Manager — CVE-2026-20245

Authenticated netadmin → root command injection via crafted CLI file upload (vconfd) — zero-day, no patch, config pushed to edge devices · suspected UAT-8616
Threat
CVE-2026-20245 (vManage RCE)
Severity
EXPLOITED ITW · NO PATCH
Type
Edge appliance / command injection
Access
Authenticated (netadmin) → root
Version
v0.2 (Draft)
Author
HuntPack
Confidence
High
01

Executive Summary

CVE-2026-20245 (CVSS 7.8) is an improper-input-validation / command-injection flaw in the CLI of Cisco Catalyst SD-WAN Manager (formerly vManage). An attacker holding netadmin credentials can upload a crafted file (e.g., a tenant-list or serial-number CSV) that is processed by privileged helper scripts such as /usr/bin/vconfd_script_upload_tenant_list.sh; those scripts fail to escape input, so embedded shell commands execute as root. Cisco PSIRT confirmed active exploitation in limited cases, including incidents where configuration changes were pushed to edge devices. CISA added it to the KEV catalog on 9 June 2026. As of this pack there is no patch — only mitigations.

The Manager is the brain of the SD-WAN fabric: root on it means the attacker can rewrite routing/segmentation policy and push malicious templates to every managed edge router. All deployment types are affected — on-prem, Cisco SD-WAN Cloud-Pro, Cisco-managed cloud, and the FedRAMP/government edition. Activity is tentatively clustered as UAT-8616, based on prior targeting of related Cisco SD-WAN bugs, implying a well-resourced (possibly state-aligned) operator.

The highest-value defensive angle is the exploitation artifact Cisco itself calls out: suspicious vconfd_script_upload_* invocations in /var/log/scripts.log with shell metacharacters in their arguments. Because SD-WAN Manager is an appliance that rarely carries a Falcon sensor, the durable detection path is to forward scripts.log and the Manager audit log to NGSIEM and hunt there, paired with strict access control on the management plane.

Defender priority: Restrict management-plane access to SD-WAN Manager to a trusted admin bastion now, forward /var/log/scripts.log to NGSIEM, and alert on any vconfd_script_upload_* entry containing shell metacharacters (; | $( ` &&) — that is the exploitation fingerprint.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Fwd
1Cisco PSIRT advisoryCVSS 7.8; CLI improper input validation; netadmin→root; all deployments; active ITW; no patchyes
1CISA KEV (added 9 Jun 2026)Confirmed exploited in the wild; remediation due-date setyes
2BleepingComputer / Help Net SecurityZero-day, no patch, root via crafted upload; config pushed to edgesyes
2Rescana / SOC Primevconfd_script_upload_*.sh detail; /var/log/scripts.log; UAT-8616 cluster; ATT&CK mappingyes
2GBHackers / The Network DNARoot-level command execution; affected deployment matrixpartial

No public atomic IOCs (attacker IPs/hashes) were released as of 14 Jun 2026 — the campaign is described as limited/targeted. Detection here is behavioral and log-based, centered on the vconfd upload-script abuse signature and unauthorized config pushes.

03

Hunt Brief & Attack Chain

Hunt hypotheses (fidelity-ordered)

  1. H1 (high): /var/log/scripts.log shows a vconfd_script_upload_* invocation whose argument contains shell metacharacters — the injection signature. T1190 / T1068 / T1059
  2. H2 (high): A crafted file (tenant list / vsmart serial / chassis number) was uploaded via the Manager CLI shortly before anomalous root command execution. T1059
  3. H3 (high): An unauthorized SD-WAN configuration/template push to edge devices occurred outside change control. T1565 / T1505
  4. H4 (medium-high): A netadmin session originated from an unusual source (new IP/ASN/geo) or outside maintenance windows, preceding upload activity. T1078
  5. H5 (medium): The Manager appliance spawned an unexpected interactive shell, opened a new listener, or made anomalous outbound connections — post-exploitation foothold. T1059.004 / T1571
  6. H6 (medium): Tampering with Manager logging/defenses or new persistence (cron, account) on the appliance. T1562 / T1053

Attack chain

#StepTelemetryHunt Angle
1Obtain / abuse netadmin access to SD-WAN ManagerManager auth/audit log → NGSIEMAnomalous netadmin logon (Q4)
2Upload crafted file via CLI (tenant/serial/chassis)scripts.log; audit logvconfd upload invocation (Q1)
3Injected shell command runs as rootscripts.log; appliance process telemetryMetachars in vconfd args (Q2); root shell (Q5)
4Push malicious config/template to edge devicesManager change/audit logOut-of-band config push (Q3)
5Persistence / defense evasion on appliancecron, account, log-clear eventsPersistence & log tamper (Q6)
04

Consolidated IOC Table

TypeValueConfActionContext
log-patternvconfd_script_upload_tenant_list.shhighhuntAbused privileged upload helper (root)
log-patternvconfd_script_upload_vsmart_serial_numbers.shhighhuntAlternate injection vector
log-patternvconfd_script_upload_chassis_number_file.shhighhuntAlternate injection vector
file-path/var/log/scripts.loghighhuntCisco-recommended evidence source
behaviorShell metacharacters in upload args (; | $( ` &&)highhuntCommand-injection signature
behaviorUnauthorized edge config/template pushhighhuntObserved post-exploitation impact
cveCVE-2026-20245highdetectvManage CLI command injection, CVSS 7.8
actorUAT-8616 (suspected)mediumpivotPrior Cisco SD-WAN targeting
05

Affected Surface & Telemetry Matrix

SurfaceTelemetry NeededPriorityGap Risk
Cisco Catalyst SD-WAN Manager (vManage) appliance — all deployments/var/log/scripts.log + Manager audit/auth log forwarded to NGSIEMCriticalHigh — appliances rarely run a Falcon sensor; logs must be explicitly forwarded
SD-WAN edge routers (managed devices)Config/template change events; routing-policy deltasHighChange events may not reach SIEM
Management-plane network path to the ManagerFirewall/NetFlow to the Manager admin interfaceMediumEast-west visibility gaps
Admin bastion / jump host (netadmin origin)UserLogon, ProcessRollup2 (if Falcon-covered)MediumLow if bastion is endpoint-covered

Telemetry reality: The CQL in §8 assumes SD-WAN Manager logs are ingested into NGSIEM/LogScale (a custom repo). Field names depend on your parser — validate against your ingest before relying on them. Where a Falcon sensor is present on a related host, the process-based variants apply directly.

06

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Initial AccessT1190 Exploit Public-Facing AppCLI upload command injectionQ1 / Q2 · harden §12
Privilege EscalationT1068 Exploitation for PrivEscnetadmin → root via vconfd scriptsQ1 / Q2
ExecutionT1059 Command & Scripting InterpreterInjected shell commands run as rootQ2 / Q5
Valid AccountsT1078 Valid Accountsnetadmin credentials usedQ4
Impact / PersistenceT1565 Data ManipulationUnauthorized config push to edgesQ3
Defense EvasionT1562 Impair DefensesLog tampering on applianceQ6
PersistenceT1053 Scheduled Task/CronNew cron / account on ManagerQ6
Command & ControlT1571 Non-Standard PortAnomalous outbound / listenerQ5
07

Native Audit-Log Hunts (non-CQL)

  • On the Manager appliance (Cisco-recommended): inspect /var/log/scripts.log for vconfd_script_upload_* entries, especially any with shell metacharacters or non-standard / maliciously named CSV references.
  • Manager audit log: review file-upload events and template/config-push actions; correlate each push to an approved change ticket. Flag any push with no corresponding change record.
  • Edge device config diff: compare running config / applied templates on managed routers against the last known-good baseline for unexpected segmentation or routing changes.
  • netadmin session review: list recent netadmin logons to the Manager — source IP/geo, time-of-day, and session duration; flag logins from new sources or outside maintenance windows.
  • Appliance integrity: check for new local accounts, cron entries, modified /usr/bin/vconfd_script_upload_*.sh, and gaps/clears in scripts.log and syslog.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
⚠ Q1–Q4 run against ingested SD-WAN Manager logs (NGSIEM/LogScale custom repo), not Falcon endpoint events. Replace #repo=sdwan_manager and parsed field names with your ingest's actual values. Q5–Q6 are Falcon endpoint queries that apply where a sensor covers the host.
Q1 · vconfd upload-script invocation (exploitation entry)
CONF HIGHFP MEDCOST LOW

Looks for: any invocation of the privileged upload helper scripts in the Manager's scripts.log. FP: legitimate tenant/serial onboarding uses the same scripts — pair with Q2 (metachars) and change-control correlation before alerting.

// HUNT: vconfd_script_upload_* invocation in SD-WAN Manager scripts.log
// MITRE: T1190, T1068
// CONF: high  FP: medium  COST: low | REQUIRES: ingested /var/log/scripts.log (custom repo)
// FALSE POSITIVES: legitimate tenant/serial/chassis onboarding
// TUNING: correlate to approved change windows; combine with Q2 metachar signature
#repo=sdwan_manager
| @rawstring=/vconfd_script_upload_(tenant_list|vsmart_serial_numbers|chassis_number_file)\.sh/
| table([@timestamp, host, @rawstring], limit=200)
Q2 · Shell metacharacters in vconfd upload args (injection signature)
CONF HIGHFP LOWCOST LOW

Looks for: a vconfd upload event whose payload/argument carries shell metacharacters — the actual command-injection fingerprint. Very low FP: benign CSV file names do not contain these.

// HUNT: command-injection metacharacters in vconfd upload
// MITRE: T1059, T1068
// CONF: high  FP: low  COST: low | REQUIRES: ingested scripts.log
// FALSE POSITIVES: none expected; benign uploads have no shell metacharacters
#repo=sdwan_manager
| @rawstring=/vconfd_script_upload_\w+\.sh/
| @rawstring=/[;`|]|\$\(|&&|\|\||\bnc\b|\bbash\b|\bcurl\b|\bwget\b/
| table([@timestamp, host, @rawstring], limit=200)
Q3 · Unauthorized config / template push to edge devices
CONF HIGHFP MEDCOST LOW

Looks for: template attach / config-push events from the Manager audit log outside maintenance windows. FP: legitimate change activity — exclude approved change windows and known automation accounts.

// HUNT: out-of-band edge config/template push
// MITRE: T1565
// CONF: high  FP: medium  COST: low | REQUIRES: ingested Manager audit log
// FALSE POSITIVES: scheduled/approved changes
// TUNING: exclude approved change windows + automation service accounts
#repo=sdwan_manager
| @rawstring=/(template-attach|push-config|config-push|device-template)/i
| user!=/^(svc-automation|change-bot)$/i
| groupBy([user, host], function=count())
| sort(_count, order=desc)
Q4 · Anomalous netadmin logon to the Manager
CONF MEDFP MEDCOST LOW

Looks for: netadmin authentications to the Manager grouped by source — surface new/rare source IPs. FP: legitimate admins from new locations — baseline known admin egress IPs and exclude the bastion.

// HUNT: rare-source netadmin logon to SD-WAN Manager
// MITRE: T1078
// CONF: medium  FP: medium  COST: low | REQUIRES: ingested Manager auth log
// FALSE POSITIVES: admins from new but legitimate locations
// TUNING: exclude the admin bastion IP/CIDR and known admin egress IPs
#repo=sdwan_manager
| @rawstring=/login|auth|session/i AND @rawstring=/netadmin/i
| src_ip!=/^10\.0\.0\./
| groupBy([src_ip, user], function=count())
| sort(_count, order=asc)
Q5 · Appliance root shell / anomalous child (where Falcon-covered)
CONF MEDFP LOWCOST LOW

Looks for: a vconfd/upload-script parent spawning a shell, or network tools (nc/curl/wget) — post-exploitation foothold. Applies only where a Falcon Linux sensor covers the host. ⚠ Field unverified on appliance

// HUNT: root shell / net tools spawned in vconfd context
// MITRE: T1059.004, T1571
// CONF: medium  FP: low  COST: low | REQUIRES: ProcessRollup2 (Falcon Linux sensor)
// FALSE POSITIVES: rare; appliance should not run these interactively
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/vconfd|script_upload/i
| ImageFileName=/(\/|\\)(bash|sh|dash|nc|ncat|curl|wget|python3?)$/i
| table([@timestamp, ComputerName, aid, ParentBaseFileName, ImageFileName, CommandLine, UserName], limit=200)
Q6 · Persistence & log tampering on the Manager
CONF MEDFP MEDCOST LOW

Looks for: new cron entries, user-add, or log-clear actions on the Manager — persistence and defense evasion. FP: legitimate admin maintenance — scope to off-hours and unknown accounts.

// HUNT: persistence / log tamper on SD-WAN Manager
// MITRE: T1053, T1562, T1136
// CONF: medium  FP: medium  COST: low | REQUIRES: ingested appliance audit/syslog
// FALSE POSITIVES: legitimate admin maintenance
// TUNING: scope to off-hours; exclude known admin accounts
#repo=sdwan_manager
| @rawstring=/crontab|useradd|adduser|usermod|truncate.*scripts\.log|rm\s+.*\/var\/log/i
| table([@timestamp, host, user, @rawstring], limit=200)
09

CrowdStrike Custom IOA Recommendations

DetectionPatternExclusionsAction
vconfd Injection (NGSIEM scheduled search)vconfd upload event + shell metacharacters (Q2)NoneAlert — Critical
Out-of-band Edge Push (scheduled search)Config/template push with no change ticket (Q3)Approved change windows, automation accountsAlert — High
Appliance Root Shell (Custom IOA, if sensor present)vconfd/upload parent → shell/net-tool child (Q5)NoneDetect → Block

Because the Manager is usually sensor-less, the primary alerts here are NGSIEM scheduled searches over ingested appliance logs (Q2, Q3), not endpoint Custom IOAs. Q5 becomes an IOA only where a Falcon Linux sensor covers the host.

10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
ipv4,REPLACE_WITH_ATTACKER_SRC_IP,detect,high,2026-12-14,CVE-2026-20245 mgmt-plane source,campaign:SDWAN-CVE-2026-20245
domain,REPLACE_WITH_C2,detect,high,2026-09-14,post-exploitation C2,campaign:SDWAN-CVE-2026-20245
sha256,REPLACE_WITH_PAYLOAD_SHA256,prevent,critical,2026-12-14,injected payload,campaign:SDWAN-CVE-2026-20245
Behavioral / Log Signatureshunt logic
scripts.log: vconfd_script_upload_tenant_list.sh
scripts.log: vconfd_script_upload_vsmart_serial_numbers.sh
scripts.log: vconfd_script_upload_chassis_number_file.sh
upload arg containing: ; | `  $(  &&  nc/bash/curl/wget
Out-of-band template/config push to edge devices
New cron/user or scripts.log truncation on the Manager
Scoping / Contextwhere to look
Product: Cisco Catalyst SD-WAN Manager (formerly vManage)
Evidence file: /var/log/scripts.log
Vulnerable scripts: /usr/bin/vconfd_script_upload_*.sh
Affected: on-prem, Cloud-Pro, Cisco-managed, FedRAMP/Gov
Access required: authenticated netadmin -> root
Suspected actor: UAT-8616
Exposure / Mitigation Auditremediation gate
CVE-2026-20245 — NO PATCH as of 2026-06-14 (KEV added 2026-06-09)
Mitigate: restrict mgmt-plane access to a trusted admin bastion only
Mitigate: enforce MFA on all netadmin accounts
Audit: scripts.log forwarded to NGSIEM? (y/n)
Audit: edge config-push events alert on no-change-ticket? (y/n)
Watch: Cisco PSIRT for fixed release; apply on availability
11

Detection Validation Gates

GateCheckPass Criteria
Telemetry readySD-WAN Manager scripts.log + audit log land in NGSIEM (#repo=sdwan_manager or equivalent)Events visible within ingest SLA; fields parsed
BaselineRun Q1 + Q3 over 14 days; catalog legitimate onboarding uploads and approved pushesExclusions captured before alerting
Positive testIn a lab Manager, submit a benign upload whose name contains a metacharacterQ2 fires; Q1 records the invocation
PromotionQ2 reviewed clean for 7 daysPromote Q2 to a Critical scheduled-search alert
12

Hardening — Tiered & Deployable

Immediate (this week — no patch exists, so mitigations are primary)
  • Restrict management-plane access to SD-WAN Manager to a dedicated admin bastion / allow-listed CIDR only; remove any internet exposure of the admin interface. (MITRE M1030 Network Segmentation / M1035 Limit Access to Resource Over Network)
  • Forward /var/log/scripts.log and the Manager audit log to NGSIEM and enable the Q2 injection alert. (M1047 Audit)
  • Enforce MFA on all netadmin accounts and review the netadmin roster for stale/over-privileged users. (M1032 MFA / M1018 User Account Management)
Near term (1–4 weeks)
  • Tighten change control on config/template pushes — require ticket correlation; alert on any push without one (Q3). (M1047 Audit)
  • Least privilege for netadmin — split read vs. config-push roles where the platform supports it. (M1026 Privileged Account Management)
  • Edge config integrity baseline — snapshot known-good templates and diff regularly. (M1047)
Strategic (1–3 months)
  • Apply the Cisco fix as soon as released, then move CVE-2026-20245 to "patched" in this pack. (M1051 Update Software)
  • ZTNA / PAM in front of the management plane so netadmin sessions are brokered, recorded, and MFA-gated. (M1035 / M1026)
  • Out-of-band management network isolating all SD-WAN control-plane appliances from user/data VLANs. (M1030)
13

Deployable Playbooks

1 — Inspect scripts.log on the Manager for the injection signature

#!/usr/bin/env bash
# Run on the SD-WAN Manager (or over forwarded logs). Flags vconfd uploads
# whose lines contain shell metacharacters.
LOG=/var/log/scripts.log
grep -E 'vconfd_script_upload_[a-z_]+\.sh' "$LOG" \
  | grep -E '[;`|]|\$\(|&&|\bnc\b|\bbash\b|\bcurl\b|\bwget\b' \
  | tee /tmp/vconfd_injection_hits.txt
echo "[*] $(wc -l < /tmp/vconfd_injection_hits.txt) suspicious line(s)"

2 — NGSIEM scheduled-search alert (LogScale syntax) for Q2

# Schedule this as a recurring search; severity Critical, notify SOC.
#repo=sdwan_manager
| @rawstring=/vconfd_script_upload_\w+\.sh/
| @rawstring=/[;`|]|\$\(|&&|\|\||\bnc\b|\bbash\b|\bcurl\b|\bwget\b/

3 — Restrict management access (edge ACL fronting the Manager)

# Example: only the admin bastion subnet may reach the Manager admin UI/SSH.
ip access-list extended SDWAN-MGR-ACCESS
 permit ip 10.10.10.0 0.0.0.255 host <SDWAN_MANAGER_IP>
 deny   ip any host <SDWAN_MANAGER_IP> log
# Apply inbound on the interface facing the management network.
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateRestrict the Manager to bastion-only access; suspend suspect netadmin accounts; freeze config/template pushesNetwork / SOCACL change; account-disable record
EradicateCapture scripts.log; identify injected commands & artifacts; remove unauthorized cron/accounts; restore tampered vconfd scripts from vendor imageIR / Networkscripts.log excerpt; diff vs. clean image
RecoverRevert unauthorized edge config/template pushes to known-good; rebuild the Manager from clean image if root persistence confirmed; rotate all netadmin creds & certsNetwork / IREdge config diff; rebuild record
Patch watchTrack Cisco PSIRT; apply fixed release the moment it shipsPlatformAdvisory link; patch evidence
15

Detection Coverage Map

TechniqueBehaviorCQLIOA/AlertCoverage
T1190/T1068vconfd upload injectionQ1,Q2✓ (scheduled search)Good (if logs ingested)
T1565Out-of-band edge pushQ3Partial (needs change-data)
T1078netadmin abuseQ4Partial (baseline-dependent)
T1059.004/T1571Root shell / C2 on applianceQ5conditionalGAP (no sensor on appliance)
T1053/T1562Persistence / log tamperQ6Partial

Known gaps: the dominant gap is telemetry on the appliance itself — SD-WAN Manager usually has no Falcon sensor, so Q5 only works where one is present and all other coverage depends on forwarding scripts.log + audit log to NGSIEM (§12 Immediate). No atomic IOCs are published, so the IOC CSV uses placeholders. Validate parser field names before promoting any query to alert.

16

Hunt Summary Ticket

TITLE:       Hunt — Cisco Catalyst SD-WAN Manager RCE CVE-2026-20245 (vconfd)
SEVERITY:    Critical (exploited ITW, KEV 2026-06-09, NO PATCH; netadmin->root)
SCOPE:       All SD-WAN Manager instances (on-prem/Cloud-Pro/Cisco-managed/Gov)
HYPOTHESIS:  Attacker with netadmin uploaded a crafted file processed by
             vconfd_script_upload_*.sh, injecting root commands and pushing
             malicious config to edge devices
QUERIES:     Q1 vconfd invocation · Q2 metachar injection · Q3 OOB edge push
             Q4 rare netadmin logon · Q5 appliance root shell · Q6 persistence
DO FIRST:    Restrict mgmt-plane to bastion; forward scripts.log to NGSIEM;
             enable Q2 alert; run Q1+Q2 across all Managers
FINDINGS:    <record host, user, scripts.log line, edge push, timestamps>
GAPS:        No sensor on appliance; no public atomic IOCs; no vendor patch yet
ACTIONS:     Isolate Manager, eradicate injected artifacts, revert edge config,
             rotate netadmin creds, watch Cisco PSIRT for patch
OWNER:       HuntPack
VERSION:     v0.2 (2026-06-14)
17

Changelog

v0.22026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.12026-06-14Initial HuntPack — 6 queries (4 NGSIEM log-based, 2 endpoint-conditional), NGSIEM alert recs, mitigation-first hardening (no patch yet), playbooks, containment. Built from Cisco PSIRT + CISA KEV + Rescana/SOC Prime/BleepingComputer reporting.
18

References

TierSourceUsed ForAccess Date
1The Hacker News — Cisco SD-WAN Manager CVE-2026-20245Overview, no-patch status2026-06-14
1BleepingComputer — exploited to gain rootExploitation, edge config push2026-06-14
1Help Net Security — 0-day exploitedTimeline, affected deployments2026-06-14
2Rescana — active exploitation alertvconfd scripts, scripts.log, UAT-8616, ATT&CK2026-06-14
2SOC Prime — CVE-2026-20245 analysisDetection detail2026-06-14
2GBHackers — root-level command executionMechanism, CVSS2026-06-14