Cisco Unified CM WebDialer SSRF → Root — CVE-2026-20230
Executive Summary
CVE-2026-20230 is a server-side request forgery (SSRF) vulnerability in Cisco Unified Communications Manager (Unified CM) and Unified CM Session Management Edition (SME). The flaw stems from improper validation of specific HTTP requests to the WebDialer service. An unauthenticated, remote attacker who can reach the WebDialer endpoint sends a crafted HTTP request that the appliance forwards on the attacker's behalf, enabling the attacker to write files to the underlying operating system. Cisco assigned CVSS 8.6 but rated the advisory Security Impact Rating: Critical because the file-write primitive can be chained to elevate to root.
Exploitation chain (as observed in the wild): per Defused Cyber, attackers abuse the WebDialer SSRF to deploy a rogue Apache Axis2 service, use it to write a first-stage JSP file-writer, then drop a second-stage command-execution webshell under /platform-services/axis2-web/, and from there escalate to root. The exploit uses file:// URI payloads and requires the attacker to learn the target's hostname before the file-write step.
Affected: Unified CM / SME Release 14 (prior to 14SU6) and Release 15 (prior to 15SU5), only where the WebDialer service is enabled (it is disabled by default). Fixed in 14SU6 and 15SU5 (an interim COP patch is available for 15.x). Cisco disclosed and patched on 2026-06-03; public PoC code exists; Defused Cyber observed first-ever in-the-wild exploitation over the weekend of 2026-06-20/21 from a single source IP, beginning with a reconnaissance probe that writes /tmp/cve-2026-20230-test.txt.
Defender priority: Patch Unified CM / SME to 14SU6 / 15SU5+ (or apply the 15.x COP) now. If you cannot patch immediately, disable WebDialer if it is not required and restrict network access to the CUCM web/admin interfaces to trusted management subnets. Unified CM is a hardened Cisco appliance with no Falcon sensor — so the highest-value Falcon angle is detecting the exploit being launched from a managed host and post-exploitation pivoting from the CUCM management IP into your endpoint/identity estate; the appliance itself is hunted via its native Tomcat/OS logs (§7).
Source Review & Web Hunter Notes
| Source | Tier | Pulled | Note |
|---|---|---|---|
| Cisco PSIRT advisory cisco-sa-cucm-ssrf-cXPnHcW | Vendor | CVSS 8.6, SIR Critical, WebDialer prereq, fixed releases | Canonical vendor record |
| NVD — CVE-2026-20230 | Authoritative | CVE metadata, SSRF (CWE-918) classification | Canonical CVE record |
| Defused Cyber — ITW exploitation report | Research | Axis2 → JSP webshell chain, /tmp probe artifact, file:// payload | First observed exploitation (weekend of 2026-06-20) |
| Horizon3.ai — attack research | Research | Unauth file-write primitive, WebDialer enablement requirement | Exploit mechanics |
| BleepingComputer / The Register / SecurityWeek | Secondary | Timeline, exploitation confirmation, fixed-version detail | Corroborating reporting |
Decision: The only published atomic indicators are the reconnaissance artifact /tmp/cve-2026-20230-test.txt and the webshell drop path under /platform-services/axis2-web/; the attacking source IP and payload hashes were not published as of 2026-06-26. This pack ships those two real path indicators plus behavioral signatures; atomic IP/hash fields use REPLACE_WITH_… placeholders so nothing is fabricated.
Hunt Brief & Attack Chain
Hunt hypotheses
- H1: A managed host (admin workstation, jump box, or already-compromised internal host) issues anomalous HTTP/S to the CUCM web ports (8080/8443) — the recon/exploit origin.
- H2: A managed host runs an exploit tool whose command line references
WebDialer,axis2, or afile://URI aimed at the CUCM host — the exploit being launched from inside the estate. - H3: The CUCM management IP initiates inbound connections to managed endpoints on non-telephony ports — post-exploit reverse shell / pivot landing on a Falcon-visible host.
- H4: The CUCM AD/LDAP integration or admin service account is used to log on from an unexpected source host — credential pivot after root on the appliance.
- H5: Any host in the estate contacts the attacker's source IP (network or DNS) — estate-wide IOC sweep once the IP is known.
Attack chain
| # | Step | Observable | ATT&CK |
|---|---|---|---|
| 1 | Reach the unauthenticated WebDialer endpoint over the network | HTTP/S to CUCM 8443/8080 from unexpected src; Tomcat access log | T1190 |
| 2 | SSRF via crafted request; reconnaissance probe | Recon file /tmp/cve-2026-20230-test.txt written on appliance | T1190 / T1592 |
| 3 | Deploy rogue Apache Axis2 service, write first-stage JSP | New Axis2 service + JSP under /platform-services/axis2-web/ | T1505.003 |
| 4 | Drop second-stage command-execution webshell | Webshell JSP; Tomcat requests to axis2-web path | T1505.003 / T1059 |
| 5 | Elevate to root on the appliance | Privileged process activity in CUCM OS/audit logs | T1068 |
| 6 | Pivot / lateral movement into the estate | Inbound conn from CUCM IP; CUCM service-account logon elsewhere | T1021 / T1078 |
Consolidated IOC Table
Two atomic path indicators are published; IP/hash indicators are not (as of 2026-06-26). Replace REPLACE_WITH_… values from your own incident telemetry or a vetted feed before alerting.
| Type | Value | Confidence | Action | Context |
|---|---|---|---|---|
| File path | /tmp/cve-2026-20230-test.txt | high | hunt | Recon probe artifact on the appliance (§7) |
| File path | /platform-services/axis2-web/ (new JSP) | high | hunt | Webshell drop location (§7) |
| Behavior | Managed host → CUCM 8443/8080 from non-admin source | medium | hunt | Recon / exploit origin (Q1) |
| Behavior | Cmd line referencing WebDialer/axis2/file:// + CUCM host | high | detect | Exploit launched from estate (Q2) |
| Behavior | Inbound connection from CUCM mgmt IP to endpoint, anomalous port | medium | detect | Post-exploit pivot / reverse shell (Q3) |
| Behavior | CUCM AD/service account logon from unexpected host | medium | hunt | Credential pivot (Q4) |
| IPv4 | REPLACE_WITH_SRC_IP | low | enrich | Single attacking IP — not published; fill from incident |
| SHA256 | REPLACE_WITH_SHA256 | low | enrich | Webshell/payload hash — fill from incident |
Affected Surface & Telemetry Matrix
Affected: Cisco Unified CM and Unified CM SME Release 14 (prior to 14SU6) and Release 15 (prior to 15SU5), with the WebDialer service enabled (disabled by default). Fixed: 14SU6 / 15SU5 or later; interim COP patch for 15.x. The appliance runs a Cisco-hardened Linux with an embedded Tomcat; web services listen on 8443 (HTTPS) and 8080 (HTTP).
| Surface | Telemetry | Priority | Gap |
|---|---|---|---|
| CUCM appliance (Tomcat / OS) | Native CUCM/Tomcat access + platform/audit logs (RTMT, syslog) | Critical | No Falcon sensor on the appliance — native logs only |
| Exploit origin host (managed) | Falcon ProcessRollup2 + NetworkConnectIP4 | Critical | Only if exploit launched from a Falcon-covered host |
| Post-exploit pivot target (managed) | Falcon NetworkConnectIP4 (inbound from CUCM IP) | High | Needs CUCM mgmt IP list + egress/ingress baseline |
| Identity / AD | Falcon UserLogon (CUCM service / LDAP-sync account) | High | Requires identity telemetry + known CUCM account list |
| Perimeter / segmentation | Firewall / NDR for CUCM 8443/8080 exposure | High | SSRF request not in Falcon process telemetry |
ATT&CK Mapping
| Tactic | Technique | Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1190 — Exploit Public-Facing Application | Unauthenticated SSRF to WebDialer endpoint | Q1, §7, patch |
| Reconnaissance | T1592 — Gather Victim Host Information | Probe writes /tmp/cve-2026-20230-test.txt; hostname required | §7 |
| Persistence / Execution | T1505.003 — Server Software Component: Web Shell | Axis2 JSP webshell under /platform-services/axis2-web/ | Q2, §7 |
| Execution | T1059 — Command & Scripting Interpreter | Webshell command execution; exploit tool on managed host | Q2 |
| Privilege Escalation | T1068 — Exploitation for Privilege Escalation | File-write primitive chained to root on the appliance | §7, patch |
| Lateral Movement | T1021 — Remote Services | Pivot/reverse-shell from CUCM IP into endpoint estate | Q3 |
| Valid Accounts | T1078 — Valid Accounts | CUCM AD/LDAP service account reused for logon elsewhere | Q4 |
Native Audit-Log Hunts
Because Unified CM is a closed appliance with no Falcon sensor, the appliance-side hunt runs in CUCM's own logs (collect via RTMT or forward syslog/Tomcat logs to your SIEM). These complement the Falcon CQL in §8, which covers the managed-estate side.
CUCM Tomcat access log (WebDialer / Axis2 abuse)
# Look for requests to the WebDialer endpoint and any axis2-web access (collect Tomcat
# access logs via RTMT: Cisco Tomcat Access Log, or forward to SIEM).
# - Requests to /webdialer/ or /cucm-uds/ from unexpected source IPs (no admin session)
# - ANY request under /platform-services/axis2-web/ (webshell drop path)
# - POST/PUT carrying file:// in the query/body (SSRF payload)
SIEM sourcetype=cisco:cucm:tomcat uri_path IN ("/webdialer/*","/platform-services/axis2-web/*")
| stats count min(_time) max(_time) values(uri_path) by src_ip, status
CUCM platform / OS audit (recon + webshell artifacts)
- Search forwarded platform/syslog for creation of
/tmp/cve-2026-20230-test.txt— the published reconnaissance probe artifact. - Hunt for any new
.jspor Axis2 service deployment under/platform-services/axis2-web/outside a Cisco upgrade window. - Review
show webapp session list/ admin CLI audit for unexpected privileged activity around the exploitation window (weekend of 2026-06-20).
Configuration check (exposure)
- Confirm whether the WebDialer feature service is Activated in Cisco Unified Serviceability — if not required, deactivate it (removes the attack surface entirely).
- Confirm CUCM 8443/8080 are reachable only from trusted management subnets (firewall/segmentation).
If you forward CUCM Tomcat/platform logs into Falcon Next-Gen SIEM, the §8 CQL field references still apply to your Falcon endpoint/identity data; the appliance log hunts above are parser-dependent and shown as pre.code SIEM pseudo-queries, not Falcon CQL.
CrowdStrike LogScale CQL Hunt Queries
Scope note: CUCM has no Falcon sensor, so these queries hunt the managed estate around the appliance — exploit origin, pivot landing, and credential reuse. Set the REPLACE_WITH_CUCM_IP values to your Unified CM cluster management addresses before running.
Looks for: a Falcon-managed host opening connections to the CUCM cluster's HTTPS/HTTP admin ports (8443/8080) — the recon/exploit would originate here if launched from inside. FP: legitimate admin workstations, provisioning tools, and IP-phone management. Baseline known CUCM admins and exclude them.
// HUNT: Managed host -> CUCM web/admin ports (CVE-2026-20230 recon / exploit origin) // MITRE: T1190 | CONF: medium FP: medium COST: low | REQUIRES: NetworkConnectIP4 + CUCM IP list // FALSE POSITIVES: CUCM admin workstations, provisioning/monitoring tools // TUNING: replace the RemoteAddressIP4 regex with your CUCM cluster IPs; allowlist known admin aids #event_simpleName=/NetworkConnectIP4/ | RemoteAddressIP4=/^(REPLACE_WITH_CUCM_IP_1|REPLACE_WITH_CUCM_IP_2)$/ | RemotePort=8443 OR RemotePort=8080 | groupBy([ComputerName, aid, RemoteAddressIP4, RemotePort], function=([count(aid, as=conns), collect([ContextBaseFileName])])) | sort(conns, order=desc)
Looks for: a process on a managed host whose command line carries the exploit's tell-tale tokens — webdialer, axis2, or a file:// URI — typically via curl/python/powershell. FP: low; review any hit, especially from non-admin endpoints.
// HUNT: Exploit-tool command line for CVE-2026-20230 (WebDialer SSRF / Axis2 / file:// payload) // MITRE: T1190, T1059 | CONF: high FP: low COST: medium | REQUIRES: ProcessRollup2 with CommandLine // FALSE POSITIVES: sanctioned CUCM admin scripts that legitimately call /webdialer/ // TUNING: pair with Q1 origin hosts; allowlist documented admin tooling by ImageFileName #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/(webdialer|axis2|platform-services|file:\/\/.{0,80}(passwd|etc|tmp))/i | ImageFileName=/(curl|wget|python[0-9.]*|perl|powershell|pwsh|java)/i | groupBy([ComputerName, ImageFileName, CommandLine], function=([count(aid, as=hits), collect([UserName])])) | sort(hits, order=desc)
Looks for: a Falcon-managed endpoint receiving a connection from the CUCM management IP on a non-telephony port — a reverse shell or lateral move after root on the appliance. FP: legitimate CUCM-to-endpoint traffic (e.g., management, SNMP); restrict to unusual ports and exclude known service ports.
// HUNT: Inbound connection from CUCM management IP to a managed endpoint (CVE-2026-20230 pivot) // MITRE: T1021 | CONF: medium FP: medium COST: medium | REQUIRES: NetworkConnectIP4 + CUCM IP list // FALSE POSITIVES: legitimate CUCM mgmt/SNMP/telephony to endpoints // TUNING: set CUCM IPs; exclude sanctioned RemotePort values (e.g. 161, 5060, 2000) #event_simpleName=/NetworkConnectIP4/ | RemoteAddressIP4=/^(REPLACE_WITH_CUCM_IP_1|REPLACE_WITH_CUCM_IP_2)$/ | RemotePort!=5060 AND RemotePort!=2000 AND RemotePort!=161 AND RemotePort!=443 | groupBy([ComputerName, RemoteAddressIP4, RemotePort, ContextBaseFileName], function=count(aid, as=conns)) | sort(conns, order=desc)
Looks for: the CUCM AD/LDAP-sync or admin service account authenticating to a host other than the CUCM cluster — credential reuse after the appliance is compromised. FP: depends on how the account is scoped; if it should only ever touch CUCM, any other logon is high-signal.
// HUNT: CUCM service/LDAP account logon away from the CUCM cluster (CVE-2026-20230 credential pivot) // MITRE: T1078 | CONF: medium FP: medium COST: low | REQUIRES: UserLogon telemetry + known CUCM account // FALSE POSITIVES: broadly-scoped service accounts; tighten UserName to the real CUCM account(s) // TUNING: replace REPLACE_WITH_CUCM_SVC_ACCT; allowlist legitimate logon hosts #event_simpleName=/UserLogon/ | UserName=/^(REPLACE_WITH_CUCM_SVC_ACCT)$/i | groupBy([UserName, ComputerName, LogonType, RemoteAddressIP4], function=([count(aid, as=logons), max(LogonType, as=lt)])) | sort(logons, order=desc)
Looks for: once the attacking IP (or any C2 domain) is known from incident data or a feed, sweep every host's egress + DNS for contact. FP: low once the indicator is confirmed malicious. Fill the placeholder before running.
// HUNT: Estate-wide contact with the CVE-2026-20230 attacker IP / C2 (fill from incident or feed) // MITRE: T1071 | CONF: medium FP: low COST: low | REQUIRES: NetworkConnectIP4 / DnsRequest // FALSE POSITIVES: low once the indicator is vetted; widen RemoteAddressIP4 to a list as needed // TUNING: replace REPLACE_WITH_SRC_IP / REPLACE_WITH_C2_DOMAIN with real values #event_simpleName=/NetworkConnectIP4|DnsRequest/ | RemoteAddressIP4=/^(REPLACE_WITH_SRC_IP)$/ OR DomainName=/REPLACE_WITH_C2_DOMAIN/i | groupBy([ComputerName, RemoteAddressIP4, DomainName, RemotePort], function=count(aid, as=hits)) | sort(hits, order=desc)
Field-name note: queries use standard Falcon fields (#event_simpleName, RemoteAddressIP4, RemotePort, ComputerName, aid, ContextBaseFileName, ImageFileName, CommandLine, UserName, LogonType, DomainName). All REPLACE_WITH_… tokens (CUCM IPs, service account, attacker IP/domain) must be filled in for your tenant before the queries return meaningful results.
Custom IOA Recommendations
| IOA name | Pattern | Exclusions | Deployment |
|---|---|---|---|
| CUCM-Exploit-CmdLine | Process command line contains webdialer+file:// or axis2 targeting a CUCM host (process-create IOA) | Documented CUCM admin scripts | Host group: all managed endpoints / admin jump hosts; Action: Detect → Prevent |
| CUCM-IP-Reverse-Pivot | Inbound connection from a CUCM management IP to an endpoint on a non-telephony port (network IOA, where supported) | Sanctioned CUCM mgmt/SNMP/telephony ports | Host group: endpoints; Action: Detect |
| CUCM-SvcAcct-Offcluster-Logon | CUCM LDAP/service account authenticating to a non-CUCM host | Documented legitimate logon targets | Identity protection policy; Action: Detect (then enforce MFA / block) |
Network/identity IOAs depend on your Falcon module set (NGSIEM / Identity Protection). Where a network IOA is not available, run Q3 as a scheduled search instead. Start every IOA in Detect, then promote the high-fidelity command-line IOA to Prevent.
Machine-Readable IOC Appendix
Two real path indicators are shipped below; IP/hash rows use REPLACE_WITH_… placeholders — do not import the atomic rows until populated from your own incident data or a vetted feed.
type,value,action,severity,expiration,description,tags ipv4,REPLACE_WITH_SRC_IP,detect,high,2026-12-26,CVE-2026-20230 attacker IP (fill from incident),campaign:CVE-2026-20230 sha256,REPLACE_WITH_SHA256,prevent,critical,2026-12-26,CVE-2026-20230 webshell/payload,campaign:CVE-2026-20230 domain,REPLACE_WITH_C2_DOMAIN,detect,high,2026-09-26,CVE-2026-20230 C2 domain,campaign:CVE-2026-20230
RECON /tmp/cve-2026-20230-test.txt -> probe artifact written by SSRF SHELL /platform-services/axis2-web/*.jsp -> second-stage webshell drop path HTTP /webdialer/* -> vulnerable WebDialer endpoint (Tomcat access log) HTTP POST/PUT body or query containing file:// -> SSRF payload indicator
BEHAVIOR: Managed host -> CUCM 8443/8080 from non-admin source -> hunt (Q1) BEHAVIOR: Cmd line webdialer|axis2|file:// targeting CUCM host -> detect (Q2) BEHAVIOR: Inbound conn FROM CUCM mgmt IP to endpoint, odd port -> detect (Q3) BEHAVIOR: CUCM LDAP/service account logon away from the cluster -> hunt (Q4) BEHAVIOR: Any host contacts attacker source IP / C2 domain -> detect (Q5)
FIXED: Unified CM/SME 14SU6+ (Release 14) | 15SU5+ (Release 15) | interim COP for 15.x PREREQ: only exploitable when the WebDialer feature service is ACTIVATED (default: deactivated) AUDIT: Cisco Unified Serviceability -> Tools -> Service Activation -> check WebDialer state EXPOSE: restrict CUCM 8443/8080 to trusted management subnets (firewall/segmentation) ADVISORY: cisco-sa-cucm-ssrf-cXPnHcW | disclosed 2026-06-03 | ITW from weekend of 2026-06-20
Detection Validation Gates
| Gate | Check | Pass criteria |
|---|---|---|
| Inventory | Enumerate Unified CM/SME cluster nodes and their management IPs; confirm WebDialer activation state per node | CUCM IP list + WebDialer state documented; placeholders in Q1/Q3 filled |
| Appliance logs | CUCM Tomcat/platform logs forwarded to SIEM (or RTMT collection ready) | §7 hunts runnable against live appliance logs |
| Benign baseline | Run Q1 over 7–14 days; catalog legitimate admin/provisioning hosts touching 8443/8080 | Documented admin allowlist before alerting |
| Positive test | From a lab host, issue a benign HTTPS request to a test CUCM 8443; run a benign cmd with webdialer in the args | Q1 and Q2 both fire |
| Identity scope | Confirm the real CUCM LDAP/service account name(s) and where they should legitimately log on | Q4 UserName placeholder filled; allowlist set |
Hardening — Tiered
- Patch Unified CM / SME to
14SU6/15SU5or later (apply the interim COP patch on 15.x if a full upgrade is not yet possible). This is the only complete fix. - Deactivate WebDialer if it is not required — this removes the vulnerable surface entirely (Cisco Unified Serviceability → Service Activation). MITRE M1042 (Disable or Remove Feature/Program).
- Restrict exposure: ensure CUCM 8443/8080 are reachable only from trusted management subnets; remove any internet exposure immediately (M1030 Network Segmentation).
- Hunt now with §7 appliance-log hunts (look for
/tmp/cve-2026-20230-test.txtand axis2-web JSPs) and Q1–Q4 over the last 14 days; assume-breach for any reachable unpatched node with WebDialer active.
- Forward CUCM Tomcat/platform logs to the SIEM so the appliance is continuously monitored (M1047 Audit).
- Deploy the §9 IOAs (command-line + identity) in Detect across managed endpoints; schedule Q3 where a network IOA is unavailable.
- Review and tighten the CUCM AD/LDAP integration account: least privilege, restricted logon targets; rotate if the cluster was reachable while unpatched (M1027 / M1018).
- Place voice/UC infrastructure in a dedicated, tightly segmented management VLAN so CUCM web services are never reachable from user or untrusted networks (M1030).
- Add Cisco UC appliances to the vulnerability-management cadence and subscribe to Cisco PSIRT; alert automatically on UC/edge-appliance KEV additions.
- Establish an appliance change-control baseline so new files under
/platform-services/outside upgrade windows are inherently alertable.
Deployable Playbooks
1 · Confirm version + WebDialer state on every CUCM node
# CUCM admin CLI (SSH to each node): show version active # In Cisco Unified Serviceability -> Tools -> Service Activation: # confirm whether "Cisco WebDialer Web Service" is Activated. # Flag any node on Release 14 < 14SU6 or Release 15 < 15SU5 as VULNERABLE, # and any node with WebDialer Activated as EXPLOITABLE.
2 · Restrict CUCM web exposure (interim, until patched)
# Upstream firewall: permit only the management subnet to CUCM web ports. # Example (adjust to your platform), allow admin subnet to 8443/8080, deny the rest: permit tcp 10.0.0.0/24 host CUCM_IP eq 8443 permit tcp 10.0.0.0/24 host CUCM_IP eq 8080 deny tcp any host CUCM_IP eq 8443 deny tcp any host CUCM_IP eq 8080 # Verify no internet path reaches CUCM 8443/8080 from an external scanner.
3 · Appliance-side sweep for exploitation artifacts
# Via RTMT or forwarded logs (CUCM is closed — use supported tooling, not shell): # - Search platform/syslog for creation of: /tmp/cve-2026-20230-test.txt # - Search Tomcat access log for requests under: /platform-services/axis2-web/ # - Search Tomcat access log for /webdialer/ requests carrying file:// payloads # Any hit -> treat the node as compromised and run the section 14 containment runbook.
CUCM is a closed Cisco appliance — do not attempt unsupported shell access. Use the admin CLI, Cisco Unified Serviceability, and RTMT / forwarded logs for all checks above.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Block external/non-admin access to CUCM 8443/8080 at the firewall; if compromise confirmed, isolate the node from production VLANs | Network + SOC | ACL change ticket, timestamp |
| Triage | Pull CUCM Tomcat/platform logs (§7); confirm /tmp probe, axis2-web JSP, WebDialer requests; identify attacker source IP | IR | Log excerpts, src IP, request timeline |
| Estate sweep | Run Q5 with the recovered attacker IP/domain; run Q1–Q4 to find exploit origin and any pivot landings | SOC | Q1–Q5 results, affected aids |
| Eradicate | Per Cisco TAC guidance, remove the rogue Axis2 service/JSP and rebuild/restore the node from known-good; patch to 14SU6 / 15SU5+; deactivate WebDialer if unused | Voice/UC + IR | Cisco TAC case, patch confirmation |
| Credentials | Rotate CUCM admin and AD/LDAP-integration credentials and any secrets stored on the appliance; force re-auth for the CUCM service account | IAM | Rotation records |
| Recover & monitor | Restore service on the patched node; keep §7 log hunts + Q1–Q5 + IOAs enabled; watch for re-exploitation from the same or new IP | SOC + Voice/UC | Post-recovery hunt results |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 | Unauth SSRF to WebDialer endpoint | Q1 · §7 native (appliance) | CUCM-Exploit-CmdLine | Partial |
| T1592 | Recon probe writes /tmp artifact | §7 native (appliance log) | — | Partial |
| T1505.003 | Axis2 JSP webshell drop | Q2 · §7 native (axis2-web path) | CUCM-Exploit-CmdLine | Partial |
| T1021 | Post-exploit pivot from CUCM IP | Q3 | CUCM-IP-Reverse-Pivot | Good |
| T1078 | CUCM service-account reuse | Q4 | CUCM-SvcAcct-Offcluster-Logon | Good |
| T1071 | Estate contact with attacker IP/C2 | Q5 | IOC import | Good (once IOC known) |
| On-appliance RCE / root | Webshell exec + priv-esc on the appliance | — | — | GAP |
Coverage gap (by design): Unified CM is a closed appliance with no Falcon sensor, so on-appliance execution and privilege escalation are not directly visible in Falcon. This pack deliberately covers the estate around the appliance (exploit origin, pivot, credential reuse, IOC sweep) and routes the on-box detection to CUCM's native Tomcat/platform logs (§7). Close the gap by forwarding CUCM logs to your SIEM and enforcing firewall/NDR visibility on 8443/8080.
Hunt Summary Ticket
TITLE : Cisco Unified CM WebDialer SSRF -> Root — CVE-2026-20230 SEVERITY : Critical (CVSS 8.6, SIR Critical) — EXPLOITED ITW (weekend of 2026-06-20) SCOPE : Unified CM/SME Release 14 (< 14SU6) and 15 (< 15SU5) with WebDialer ACTIVATED HYPOTHESIS : Unauth WebDialer SSRF -> file-write -> rogue Axis2 + JSP webshell -> root -> pivot QUERIES : Q1 origin->CUCM | Q2 exploit cmdline | Q3 CUCM->endpoint pivot | Q4 svcacct reuse | Q5 IOC sweep DO FIRST : Patch 14SU6/15SU5+ (or COP); deactivate WebDialer if unused; restrict 8443/8080; hunt sect 7 + Q1-Q4 14d FINDINGS : <fill from hunt> GAPS : On-appliance RCE/root not in Falcon (no sensor) — cover via CUCM native logs + NDR ACTIONS : Patch, forward CUCM logs, deploy IOAs (sect 9), rotate CUCM/LDAP creds, segment UC mgmt OWNER : HuntPack VERSION : v0.1 · 2026-06-26
Changelog
/tmp/cve-2026-20230-test.txt, axis2-web webshell path); atomic IP/hash IOCs use placeholders — none fabricated.References
| Tier | Source | Used for | Access date |
|---|---|---|---|
| Vendor | Cisco PSIRT — cisco-sa-cucm-ssrf-cXPnHcW | CVSS, SIR, WebDialer prereq, fixed releases | 2026-06-26 |
| Authoritative | NVD — CVE-2026-20230 | CVE metadata, SSRF (CWE-918) | 2026-06-26 |
| Research | Horizon3.ai — CVE-2026-20230 attack research | Unauth file-write primitive, enablement requirement | 2026-06-26 |
| Secondary | BleepingComputer — now exploited in attacks | ITW timeline, Defused report, /tmp probe, Axis2 chain | 2026-06-26 |
| Secondary | The Register — Cisco vulnerabilities (2026-06-24) | Axis2 → JSP webshell chain detail | 2026-06-26 |
| Secondary | SecurityWeek — hackers exploiting Cisco Unified CM | Corroborating exploitation confirmation | 2026-06-26 |