Cisco Unified CM (CVE-2026-20230) Active Exploitation
CVE | CRITICAL severity | CVSS 8.6 CVE-2026-20230 Published 2026-06-03
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 (Unified CM SME). An unauthenticated, remote attacker can exploit improper input validation in the /cmplatform/installClusterStatusExecute endpoint to write arbitrary files to the underlying operating system. These files serve as a foothold for root-level code execution.
Cisco published the advisory on June 3, 2026, rating it Critical — above the CVSS 8.6 base score — because the file write enables full root compromise. Proof-of-concept exploit code is public. SSD Secure Disclosure published a complete exploit chain on June 23, 2026. On June 24, 2026, Defused Cyber confirmed active exploitation from a single source against deployed decoys.
The vulnerability requires the WebDialer service, which is disabled by default. Organizations with WebDialer enabled are exposed. Patches are available in Unified CM 14SU6 and an interim COP file for version 15. A full 15SU5 release is scheduled for September 2026. No workarounds exist, but disabling WebDialer mitigates the risk until patching.
Timeline
| Date | Event | Source |
|---|---|---|
| Prior to 2026-06-03 | Independent researcher working with SSD Secure Disclosure reports vulnerability to Cisco | Cisco PSIRT |
| 2026-06-03 | Cisco publishes advisory cisco-sa-cucm-ssrf-cXPnHcW, releases 14SU6 fix | Cisco PSIRT |
| 2026-06-04 | The Hacker News reports on patch and availability of public PoC exploit code | The Hacker News |
| 2026-06-05 | First public GitHub PoC repository published (HORKimhab/CVE-2026-20230) | GitHub |
| 2026-06-12 | CVE-2026-20230 scanner tool published on GitHub (HalilDeniz/CVE-2026-20230-Scanner) | GitHub |
| 2026-06-23 | SSD Secure Disclosure publishes full technical root cause analysis and exploit chain | SSD Secure Disclosure |
| 2026-06-24 | Defused Cyber observes active exploitation; The Hacker News reports exploitation status | Defused Cyber, The Hacker News |
| 2026-09 (planned) | Unified CM 15SU5 full release expected | Cisco PSIRT |
Technical Analysis
Affected Systems and Software
- Cisco Unified Communications Manager (Unified CM), releases 14 prior to 14SU6
- Cisco Unified Communications Manager (Unified CM), releases 15 prior to 15SU5 or the interim COP patch
- Cisco Unified Communications Manager Session Management Edition (Unified CM SME), same version ranges
Only deployments with the WebDialer service enabled are exploitable. WebDialer ships disabled by default. To check status: log in to Cisco Unified CM Administration, navigate to Cisco Unified Serviceability, then choose Tools > Control Center - Feature Services. If Cisco WebDialer Web Service shows status "Started," the system is vulnerable.
Root Cause
The vulnerability is a server-side request forgery in the ClusterInstallStatusServlet at the /cmplatform/installClusterStatusExecute endpoint. When action=clusterNodeInstallStatus, the servlet makes an outbound HTTP request to a user-supplied hostname parameter.
The servlet delegates to NodeInstallStageClient#getInstallStage, which constructs a URL from the hostname parameter and issues the request via JerseyClient#doGet. An InjectionFilter performs host validation to block requests to 127.0.0.1 and localhost. However, the true hostname of the target can be obtained through the unauthenticated endpoint /webdialer/Version.jws?wsdl, bypassing the filter.
The attack chains three weaknesses:
- The SSRF accepts an arbitrary path appended after the validated hostname, including URL-encoded path traversal sequences.
- The response from the SSRF target is written to a file on the CUCM server. By prepending the payload with
!--, the attacker escapes the normal XML preamble written by theinstallstagesendpoint and injects arbitrary XML content. - The injected XML is a malicious Axis deployment descriptor that registers a new Axis SOAP service (
randomR11) with aLogHandlerconfigured to write arbitrary content to an attacker-controlled file path.
The technique is nearly identical to CVE-2019-0227, a historical Axis 1.4 arbitrary file-write vulnerability, repurposed against Cisco's Axis-based SOAP stack.
Attack Vector
The exploit proceeds in three stages:
Stage 1 — Hostname reconnaissance. The attacker queries the unauthenticated /webdialer/Version.jws?wsdl endpoint to retrieve the server's true hostname.
Stage 2 — Malicious service deployment via SSRF. The attacker sends a crafted GET request to /cmplatform/installClusterStatusExecute?action=clusterNodeInstallStatus with a hostname parameter that contains:
- The true hostname from Stage 1
- A URL-encoded path to the
/webdialer/services/AdminService/platformcom/api/v1/software/installstages/endpoint - An
!--escape sequence followed by a malicious Axis deployment descriptor that registers a new service (randomR11) and configures itsLogHandlerto write to../../../../../../../../../../../../../common/log/taos-log-a/tomcat/webapps/platform-services/axis2-web/aaa.jsp
The server follows the SSRF path, the installstages endpoint writes XML that includes the escaped payload, and the result is a new Axis service deployed on the target.
Stage 3 — Webshell delivery and execution. The attacker uses the newly registered randomR11 service at /webdialer/services/randomR11 to write a JSP webshell to a web-accessible path. The webshell accepts pwd (password) and i (command) parameters and executes arbitrary OS commands via Runtime.getRuntime().exec(). The attacker accesses the webshell at /platform-services/axis2-web/c.jsp and achieves root-level code execution.
All requests are sent over HTTPS with no authentication required.
Vulnerable Code
The /jakarta-tomcat/webapps/cmplatform/WEB-INF/web.xml file exposes the vulnerable endpoint without authentication:
<servlet>
<servlet-name>installCluster</servlet-name>
<servlet-class>com.cisco.ccm.cmplatform.servlets.ClusterInstallStatusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>installCluster</servlet-name>
<url-pattern>/installClusterStatusExecute</url-pattern>
</servlet-mapping>
The hostHeaderValidation method in com.cisco.ccm.common.security.InjectionFilter blocks 127.0.0.1 and localhost but does not prevent the attacker from using the server's true hostname, which is leaked by the unauthenticated WebDialer WSDL endpoint.
Impact
End Users
No end-user data is directly exposed by this vulnerability. The exploit targets the CUCM server infrastructure itself. End users of the affected organization's voice and telephony services may experience service disruption in the event of a compromise. No personal information, call records, or voicemail data is accessed through the exploit chain itself, though an attacker with root access could pivot to any data stored on or accessible from the CUCM server.
System Administrators
Detection. Check WebDialer status immediately. From Cisco Unified CM Administration, go to Cisco Unified Serviceability > Tools > Control Center - Feature Services. If Cisco WebDialer Web Service is "Started," the system is exposed.
Patching. Upgrade to Unified CM 14SU6 (available now) or apply the COP patch for version 15. The full 15SU5 release arrives September 2026. Cisco provides patch details at the advisory URL below.
Mitigation. If patching is not immediately possible, disable the WebDialer service: navigate to Cisco Unified Serviceability > Tools > Service Activation, uncheck Cisco WebDialer Web Service in the CTI Services section, and click Save. This fully blocks the attack vector.
Log monitoring. Monitor access logs for requests to /cmplatform/installClusterStatusExecute with the action=clusterNodeInstallStatus parameter. Look for long, URL-encoded hostname values containing %21%2d%2d (the !-- escape sequence) or path traversal patterns (%2e%2e%2f). Monitor for access to /webdialer/Version.jws?wsdl from unexpected sources.
Network segmentation. Restrict access to CUCM administrative interfaces and the WebDialer service to trusted internal networks. The vulnerability requires the attacker to reach the CUCM server over HTTPS on the standard management port.
Vulnerability scanners. At the time of this report, no Nessus plugin IDs or Qualys QIDs specific to CVE-2026-20230 were identified. The public scanner by HalilDeniz on GitHub (CVE-2026-20230-Scanner) can be used to check for exposure.
Developers
This vulnerability does not affect libraries or frameworks maintained outside of Cisco. Developers who operate CUCM infrastructure should follow the administrator guidance above. Third-party integrations with CUCM (via AXL, JTAPI, or the administrative SOAP APIs) are not affected — the vulnerability is in the server-side platform code, not the integration APIs.
Developers building custom telephony applications on top of CUCM should ensure their deployment pipelines pin CUCM to patched versions and include WebDialer status checks in security hardening scripts.
Proof-of-Concept and Exploit Code
HORKimhab/CVE-2026-20230 (GitHub — PoC)
- Classification: PoC
- Language: Python
- Stars: 1 — Last updated 2026-06-25
- Description: CVE-2026-20230 - Cisco Unified CM
HalilDeniz/CVE-2026-20230-Scanner (GitHub — Scanner)
- Classification: Scanner
- Language: Python
- Stars: 0 — Last updated 2026-06-13
- Description: Cisco Unified Communications Manager (Unified CM) deployments affected by CVE-2026-20230. Licensed under MIT.
W5M1n9/Cisco-Unified-Communications-Manager-Server-Side-Forgery-Request-Vulnerability-CVE-2026-20230 (GitHub — PoC)
- Classification: PoC
- Language: Python
- Stars: 0 — Last updated 2026-06-25
- Description: No description provided.
No PoCs were found on GitLab or Codeberg as of 2026-06-25. SSD Secure Disclosure published a complete exploit walkthrough with decoded payloads on June 23, 2026, providing sufficient detail to reproduce the attack chain.
Indicators of Compromise
File Hashes
None available as of 2026-06-25. The exploit is an on-the-wire attack chain that does not drop identifiable malware binaries; it writes a JSP webshell directly to the server filesystem.
Network Indicators
None available from threat intelligence sources. Defused Cyber reported exploitation from a single source IP using file:// file-write payloads, but no IP was publicly disclosed.
YARA Rules
None found. Rules may be contributed at YARAHQ.
Suricata / Snort Signatures
None identified as of 2026-06-25.
Sigma Rules
None found. Search SigmaHQ for community rules.
Threat Hunting Queries
Splunk — Detect SSRF exploitation attempts against CUCM
index=web sourcetype="cisco:cucm:access"
| where uri_path="/cmplatform/installClusterStatusExecute"
AND uri_query LIKE "%action=clusterNodeInstallStatus%"
AND uri_query LIKE "%hostname=%"
| table _time, client_ip, uri_path, uri_query, status
Splunk — Detect WebDialer hostname reconnaissance
index=web sourcetype="cisco:cucm:access"
| where uri_path="*/webdialer/Version.jws*"
AND uri_query="wsdl"
AND NOT client_ip IN ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")
| table _time, client_ip, uri_path, status
KQL (Microsoft Sentinel / Defender) — Detect encoded SSRF payloads
CommonSecurityLog
| where RequestURL contains "/cmplatform/installClusterStatusExecute"
and RequestURL contains "action=clusterNodeInstallStatus"
and RequestURL contains "%21%2d%2d"
| project TimeGenerated, SourceIP, RequestURL, DestinationIP
KQL — Detect new JSP file creation via webshell
DeviceFileEvents
| where FolderPath contains "axis2-web"
and FileName endswith ".jsp"
and InitiatingProcessCommandLine contains "tomcat"
| project Timestamp, DeviceName, FolderPath, FileName, InitiatingProcessCommandLine
Mitigation and Remediation
Immediate Actions
-
Check WebDialer status. Log in to Cisco Unified CM Administration, navigate to Cisco Unified Serviceability > Tools > Control Center - Feature Services, and check the Cisco WebDialer Web Service status in the CTI Services section. If "Started," the system is exposed.
-
Disable WebDialer if not operationally required. Go to Cisco Unified Serviceability > Tools > Service Activation, uncheck Cisco WebDialer Web Service, and click Save. This fully blocks the attack vector. No exploit path exists without WebDialer.
-
Patch. Upgrade to Unified CM 14SU6. For version 15 deployments, contact Cisco TAC for the interim COP file. Reference Cisco advisory cisco-sa-cucm-ssrf-cXPnHcW.
-
Audit for compromise. Check for unexpected JSP files in
/tomcat/webapps/platform-services/axis2-web/. Look for recently modified files in/common/log/taos-log-a/tomcat/webapps/. Review the Axis service list at the/webdialer/servicesendpoint for unknown service names (e.g.,randomR11or similar random strings).
Long-term Recommendations
-
Disable WebDialer permanently if the feature is unused. Cisco ships it disabled by default; re-enabling it after patching reintroduces attack surface.
-
Restrict network access to CUCM administrative interfaces at the firewall or network ACL level. The
/cmplatform/and/webdialer/paths should not be reachable from untrusted networks. -
Monitor CUCM release notes and subscribe to Cisco PSIRT notifications for future advisories. Unified CM has a history of unauthenticated root-level vulnerabilities (CVE-2025-20309, CVSS 10; CVE-2026-20045, actively exploited).
-
Integrate CUCM access logs into the SIEM and deploy the hunting queries above as alert rules.
Vendor Advisories
- Cisco PSIRT — cisco-sa-cucm-ssrf-cXPnHcW — Official advisory with fixed software, WebDialer status check, and mitigation steps.
References
- Cisco Unified Communications Manager Server-Side Request Forgery Vulnerability — Cisco PSIRT (2026-06-03)
- Cisco Patches CVE-2026-20230 in Unified CM as Exploit Code Goes Public — The Hacker News (2026-06-04)
- Cisco Unified CM Flaw Exploited After PoC Reveals File-Write Path to Root — The Hacker News (2026-06-24)
- Cisco Unified Communications Manager Arbitrary File Write to RCE — SSD Secure Disclosure (2026-06-23)
- HORKimhab/CVE-2026-20230 — GitHub (2026-06-05)
- HalilDeniz/CVE-2026-20230-Scanner — GitHub (2026-06-12)
- Defused Cyber — Active exploitation observation — Defused Cyber via X (2026-06-24)