Cisco Unified CM WebDialer SSRF → Root — CVE-2026-20230

Unauthenticated SSRF in the WebDialer service chains to arbitrary file-write, an Apache Axis2 JSP webshell, and root on the call-control appliance · exploited in the wild
Threat
CVE-2026-20230
Severity
EXPLOITED ITW
Type
CVE / Network Appliance / SSRF→RCE
Access
Unauthenticated · Network
CVSS
8.6 · SIR Critical (root)
Version
v0.1 · 2026-06-26
Author
HuntPack
Confidence
High (behavioral)
01

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).

02

Source Review & Web Hunter Notes

SourceTierPulledNote
Cisco PSIRT advisory cisco-sa-cucm-ssrf-cXPnHcWVendorCVSS 8.6, SIR Critical, WebDialer prereq, fixed releasesCanonical vendor record
NVD — CVE-2026-20230AuthoritativeCVE metadata, SSRF (CWE-918) classificationCanonical CVE record
Defused Cyber — ITW exploitation reportResearchAxis2 → JSP webshell chain, /tmp probe artifact, file:// payloadFirst observed exploitation (weekend of 2026-06-20)
Horizon3.ai — attack researchResearchUnauth file-write primitive, WebDialer enablement requirementExploit mechanics
BleepingComputer / The Register / SecurityWeekSecondaryTimeline, exploitation confirmation, fixed-version detailCorroborating 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.

03

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 a file:// 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

#StepObservableATT&CK
1Reach the unauthenticated WebDialer endpoint over the networkHTTP/S to CUCM 8443/8080 from unexpected src; Tomcat access logT1190
2SSRF via crafted request; reconnaissance probeRecon file /tmp/cve-2026-20230-test.txt written on applianceT1190 / T1592
3Deploy rogue Apache Axis2 service, write first-stage JSPNew Axis2 service + JSP under /platform-services/axis2-web/T1505.003
4Drop second-stage command-execution webshellWebshell JSP; Tomcat requests to axis2-web pathT1505.003 / T1059
5Elevate to root on the appliancePrivileged process activity in CUCM OS/audit logsT1068
6Pivot / lateral movement into the estateInbound conn from CUCM IP; CUCM service-account logon elsewhereT1021 / T1078
04

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.

TypeValueConfidenceActionContext
File path/tmp/cve-2026-20230-test.txthighhuntRecon probe artifact on the appliance (§7)
File path/platform-services/axis2-web/ (new JSP)highhuntWebshell drop location (§7)
BehaviorManaged host → CUCM 8443/8080 from non-admin sourcemediumhuntRecon / exploit origin (Q1)
BehaviorCmd line referencing WebDialer/axis2/file:// + CUCM hosthighdetectExploit launched from estate (Q2)
BehaviorInbound connection from CUCM mgmt IP to endpoint, anomalous portmediumdetectPost-exploit pivot / reverse shell (Q3)
BehaviorCUCM AD/service account logon from unexpected hostmediumhuntCredential pivot (Q4)
IPv4REPLACE_WITH_SRC_IPlowenrichSingle attacking IP — not published; fill from incident
SHA256REPLACE_WITH_SHA256lowenrichWebshell/payload hash — fill from incident
05

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).

SurfaceTelemetryPriorityGap
CUCM appliance (Tomcat / OS)Native CUCM/Tomcat access + platform/audit logs (RTMT, syslog)CriticalNo Falcon sensor on the appliance — native logs only
Exploit origin host (managed)Falcon ProcessRollup2 + NetworkConnectIP4CriticalOnly if exploit launched from a Falcon-covered host
Post-exploit pivot target (managed)Falcon NetworkConnectIP4 (inbound from CUCM IP)HighNeeds CUCM mgmt IP list + egress/ingress baseline
Identity / ADFalcon UserLogon (CUCM service / LDAP-sync account)HighRequires identity telemetry + known CUCM account list
Perimeter / segmentationFirewall / NDR for CUCM 8443/8080 exposureHighSSRF request not in Falcon process telemetry
06

ATT&CK Mapping

TacticTechniqueBehaviorQuery / Control
Initial AccessT1190 — Exploit Public-Facing ApplicationUnauthenticated SSRF to WebDialer endpointQ1, §7, patch
ReconnaissanceT1592 — Gather Victim Host InformationProbe writes /tmp/cve-2026-20230-test.txt; hostname required§7
Persistence / ExecutionT1505.003 — Server Software Component: Web ShellAxis2 JSP webshell under /platform-services/axis2-web/Q2, §7
ExecutionT1059 — Command & Scripting InterpreterWebshell command execution; exploit tool on managed hostQ2
Privilege EscalationT1068 — Exploitation for Privilege EscalationFile-write primitive chained to root on the appliance§7, patch
Lateral MovementT1021 — Remote ServicesPivot/reverse-shell from CUCM IP into endpoint estateQ3
Valid AccountsT1078 — Valid AccountsCUCM AD/LDAP service account reused for logon elsewhereQ4
07

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 .jsp or 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.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

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.

Q1 · Managed host connecting to CUCM web ports (recon / exploit origin)
CONF MEDFP MEDCOST LOW

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)
Q2 · Exploit-tool command line targeting WebDialer / Axis2 / file://
CONF HIGHFP LOWCOST MED

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)
Q3 · Inbound connection from CUCM IP to an endpoint (post-exploit pivot)
CONF MEDFP MEDCOST MED

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)
Q4 · CUCM service / LDAP account logon from an unexpected host
CONF MEDFP MEDCOST LOW

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)
Q5 · Estate-wide sweep for the attacker source IP (network + DNS)
CONF MEDFP LOWCOST LOW

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.

09

Custom IOA Recommendations

IOA namePatternExclusionsDeployment
CUCM-Exploit-CmdLineProcess command line contains webdialer+file:// or axis2 targeting a CUCM host (process-create IOA)Documented CUCM admin scriptsHost group: all managed endpoints / admin jump hosts; Action: Detect → Prevent
CUCM-IP-Reverse-PivotInbound connection from a CUCM management IP to an endpoint on a non-telephony port (network IOA, where supported)Sanctioned CUCM mgmt/SNMP/telephony portsHost group: endpoints; Action: Detect
CUCM-SvcAcct-Offcluster-LogonCUCM LDAP/service account authenticating to a non-CUCM hostDocumented legitimate logon targetsIdentity 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.

10

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.

Falcon IOC Management CSVbulk import
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
Published Path Indicatorsappliance-side
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
Behavioral Signaturesship as-is
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)
Patch & Exposure Auditremediation
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
11

Detection Validation Gates

GateCheckPass criteria
InventoryEnumerate Unified CM/SME cluster nodes and their management IPs; confirm WebDialer activation state per nodeCUCM IP list + WebDialer state documented; placeholders in Q1/Q3 filled
Appliance logsCUCM Tomcat/platform logs forwarded to SIEM (or RTMT collection ready)§7 hunts runnable against live appliance logs
Benign baselineRun Q1 over 7–14 days; catalog legitimate admin/provisioning hosts touching 8443/8080Documented admin allowlist before alerting
Positive testFrom a lab host, issue a benign HTTPS request to a test CUCM 8443; run a benign cmd with webdialer in the argsQ1 and Q2 both fire
Identity scopeConfirm the real CUCM LDAP/service account name(s) and where they should legitimately log onQ4 UserName placeholder filled; allowlist set
12

Hardening — Tiered

Immediate (0–72h)
  • Patch Unified CM / SME to 14SU6 / 15SU5 or 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.txt and axis2-web JSPs) and Q1–Q4 over the last 14 days; assume-breach for any reachable unpatched node with WebDialer active.
Near term (this week)
  • 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).
Strategic
  • 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.
13

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.

14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateBlock external/non-admin access to CUCM 8443/8080 at the firewall; if compromise confirmed, isolate the node from production VLANsNetwork + SOCACL change ticket, timestamp
TriagePull CUCM Tomcat/platform logs (§7); confirm /tmp probe, axis2-web JSP, WebDialer requests; identify attacker source IPIRLog excerpts, src IP, request timeline
Estate sweepRun Q5 with the recovered attacker IP/domain; run Q1–Q4 to find exploit origin and any pivot landingsSOCQ1–Q5 results, affected aids
EradicatePer Cisco TAC guidance, remove the rogue Axis2 service/JSP and rebuild/restore the node from known-good; patch to 14SU6 / 15SU5+; deactivate WebDialer if unusedVoice/UC + IRCisco TAC case, patch confirmation
CredentialsRotate CUCM admin and AD/LDAP-integration credentials and any secrets stored on the appliance; force re-auth for the CUCM service accountIAMRotation records
Recover & monitorRestore service on the patched node; keep §7 log hunts + Q1–Q5 + IOAs enabled; watch for re-exploitation from the same or new IPSOC + Voice/UCPost-recovery hunt results
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1190Unauth SSRF to WebDialer endpointQ1 · §7 native (appliance)CUCM-Exploit-CmdLinePartial
T1592Recon probe writes /tmp artifact§7 native (appliance log)Partial
T1505.003Axis2 JSP webshell dropQ2 · §7 native (axis2-web path)CUCM-Exploit-CmdLinePartial
T1021Post-exploit pivot from CUCM IPQ3CUCM-IP-Reverse-PivotGood
T1078CUCM service-account reuseQ4CUCM-SvcAcct-Offcluster-LogonGood
T1071Estate contact with attacker IP/C2Q5IOC importGood (once IOC known)
On-appliance RCE / rootWebshell exec + priv-esc on the applianceGAP

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.

16

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
17

Changelog

v0.12026-06-26Initial HuntPack for CVE-2026-20230 (Cisco Unified CM WebDialer SSRF → root). 5 CQL hunt queries (origin→CUCM, exploit command line, CUCM→endpoint pivot, service-account reuse, estate IOC sweep), native CUCM Tomcat/platform log hunts, custom IOA recommendations, tiered hardening, playbooks, and containment runbook. Ships the two published path indicators (/tmp/cve-2026-20230-test.txt, axis2-web webshell path); atomic IP/hash IOCs use placeholders — none fabricated.
18

References

TierSourceUsed forAccess date
VendorCisco PSIRT — cisco-sa-cucm-ssrf-cXPnHcWCVSS, SIR, WebDialer prereq, fixed releases2026-06-26
AuthoritativeNVD — CVE-2026-20230CVE metadata, SSRF (CWE-918)2026-06-26
ResearchHorizon3.ai — CVE-2026-20230 attack researchUnauth file-write primitive, enablement requirement2026-06-26
SecondaryBleepingComputer — now exploited in attacksITW timeline, Defused report, /tmp probe, Axis2 chain2026-06-26
SecondaryThe Register — Cisco vulnerabilities (2026-06-24)Axis2 → JSP webshell chain detail2026-06-26
SecondarySecurityWeek — hackers exploiting Cisco Unified CMCorroborating exploitation confirmation2026-06-26