The U.S. Cybersecurity and Infrastructure Security Agency (CISA) has issued an urgent warning that threat actors are actively exploiting a high-severity vulnerability in Cisco BroadWorks. The flaw, tracked as CVE-2025-23019, has been added to CISA's Known Exploited Vulnerabilities (KEV) catalog, confirming in-the-wild attacks targeting unified communications (UC) infrastructure.
Cisco BroadWorks is a carrier-grade, multi-tenant VoIP application platform used by hundreds of service providers and large enterprises worldwide to deliver voice, video, and messaging services. Compromise of a BroadWorks Application Server provides attackers with administrative control over subscriber data, call routing, and service delivery for thousands of end users. Given BroadWorks' role as a core telecommunications backbone, the national security and operational implications are severe. Organizations running affected versions must treat this as an emergency patching scenario and initiate immediate threat hunting.
Technical Analysis
Affected Products
- Cisco BroadWorks Application Server — All releases prior to the fixed versions specified in Cisco's advisory. BroadWorks is a Linux-based application typically deployed on Red Hat Enterprise Linux (RHEL) or Oracle Linux.
- The vulnerability resides in the web-based administrative interface and subscriber portals exposed to the internet or internal networks.
Vulnerability Details
- CVE: CVE-2025-23019
- CVSS v3.1 Score: 9.8 (Critical) — Cisco's advisory assigns a near-maximum score reflecting unauthenticated remote code execution.
- CWE: CWE-78 — Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
Attack Chain (Defender's Perspective)
The vulnerability allows an unauthenticated remote attacker to execute arbitrary operating system commands on the underlying BroadWorks host with elevated privileges. The attack chain observed in the wild typically follows this pattern:
- Reconnaissance: Attackers scan for BroadWorks administrative interfaces (commonly on TCP/443 or TCP/8443) and identify the product by banner grabbing or specific URI patterns.
- Exploitation: A crafted HTTP request containing shell metacharacters is sent to a vulnerable BroadWorks API endpoint. The input is not properly sanitized before being passed to a system shell.
- Execution: The injected command executes in the context of the
bwadminorbwcliservice account, which often has sudo privileges or direct root access for service management. - Post-Exploitation: Attackers establish persistence via cron jobs, systemd timers, or SSH key insertion into
/root/.ssh/authorized_keys. They then enumerate/usr/local/broadworks/configuration files to harvest SIP credentials, subscriber databases, and API keys for lateral movement into the provider's core network.
Exploitation Status
- In-the-wild exploitation: Confirmed. Cisco's Product Security Incident Response Team (PSIRT) and multiple threat intelligence firms have observed active scanning and exploitation attempts.
- CISA KEV: CVE-2025-23019 was added to the CISA Known Exploited Vulnerabilities catalog on January 21, 2026 with a mandatory remediation due date of February 11, 2026 for Federal Civilian Executive Branch (FCEB) agencies.
- Public PoC: Exploit code is circulating in private forums and has been integrated into automated scanning frameworks.
Detection & Response
The following detections are tuned for the specific behaviors observed in BroadWorks exploitation: web server command injection, BroadWorks service account spawning unexpected child processes, and post-exploitation credential access.
---
title: Cisco BroadWorks Web Process Spawning Shell or System Commands
id: 5a2b8f3e-7c1d-4e9a-b6c5-9d8f2a1b3c4d
status: experimental
description: Detects the BroadWorks web server or application server process spawning a shell interpreter or system utility, indicative of CVE-2025-23019 command injection.
references:
- https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-bw-cmd-inj-2025-01
- https://www.cisa.gov/news-events/alerts/2026/01/21/cisa-adds-cisco-broadworks-vulnerability-known-exploited-vulnerabilities-catalog
author: Security Arsenal
date: 2026/01/22
tags:
- attack.execution
- attack.t1059.004
- attack.t1190
logsource:
category: process_creation
product: linux
detection:
selection_parent:
ParentImage|endswith:
- '/java'
- '/apache'
- '/nginx'
- '/bwdaemon'
selection_child:
Image|endswith:
- '/bash'
- '/sh'
- '/python'
- '/perl'
- '/curl'
- '/wget'
- '/nc'
- '/netcat'
condition: selection_parent and selection_child
falsepositives:
- Legitimate BroadWorks maintenance scripts or automated health checks. Baseline known-good parent/child relationships in your environment.
level: critical
---
title: BroadWorks Service Account Executing Credential Access or Reconnaissance Commands
id: 8c4d6e2f-9a1b-4c5d-8e7f-2a3b4c5d6e7f
status: experimental
description: Detects the BroadWorks service account (bwadmin, bwcli, or bwuser) executing commands consistent with post-exploitation activity following CVE-2025-23019 compromise.
references:
- https://attack.mitre.org/techniques/T1003/
- https://attack.mitre.org/techniques/T1087/
author: Security Arsenal
date: 2026/01/22
tags:
- attack.credential_access
- attack.t1003
- attack.discovery
- attack.t1087
logsource:
category: process_creation
product: linux
detection:
selection_user:
User|contains:
- 'bwadmin'
- 'bwcli'
- 'bwuser'
selection_cmd:
CommandLine|contains:
- '/etc/passwd'
- '/etc/shadow'
- 'cat /root/.ssh/authorized_keys'
- 'find / -name "*.pem"'
- 'grep -r "password" /usr/local/broadworks/'
- 'ip route'
- 'netstat -tulpn'
condition: selection_user and selection_cmd
falsepositives:
- BroadWorks administrators performing routine maintenance. Filter by source IP and correlate with change windows.
level: high
---
title: Cisco BroadWorks Exploitation Attempt - URI and Command Injection Pattern
id: 3e7f9a1c-5b2d-4e8f-9c6a-1b2d3e4f5a6b
status: experimental
description: Detects HTTP requests to BroadWorks administrative interfaces containing shell metacharacters or common command injection payloads associated with CVE-2025-23019.
references:
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/01/22
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
product: apache
detection:
selection_uri:
cs-uri|contains:
- '/bw/'
- '/admin/'
- '/cli/'
- '/webservice/'
selection_payload:
cs-uri|contains:
- ';'
- '|'
- '&&'
- '`'
- '$('
- '%3B'
- '%7C'
- '%26%26'
condition: selection_uri and selection_payload
falsepositives:
- Unlikely in standard BroadWorks API usage. Legitimate parameters should not contain shell metacharacters. Investigate all matches.
level: high
// Hunt for potential Cisco BroadWorks CVE-2025-23019 exploitation and post-exploitation activity in Microsoft Sentinel
// Table: DeviceProcessEvents (requires MDE on Linux or Syslog ingestion)
// Focus on BroadWorks service account spawning unexpected child processes and accessing sensitive files
let BroadWorksAccounts = dynamic(["bwadmin", "bwcli", "bwuser", "broadworks"]);
let SuspiciousCommands = dynamic(["/bin/bash", "/bin/sh", "curl", "wget", "nc", "python", "perl", "/etc/passwd", "/etc/shadow", "netstat", "ss -tulpn"]);
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessAccountName in~ (BroadWorksAccounts) or ProcessAccountName in~ (BroadWorksAccounts)
| where FileName in~ (SuspiciousCommands) or ProcessCommandLine has_any (SuspiciousCommands)
| where not (ProcessCommandLine has_any ("healthcheck", "backup", "maintenance", "bwcleanup")) // Tune exclusions to your environment
| extend SuspiciousChild = iff(InitiatingProcessFileName =~ "java" and FileName in~ ("bash", "sh", "python", "perl"), true, false)
| where SuspiciousChild == true or ProcessCommandLine has_any ("/etc/", "authorized_keys", "find /", "grep -r")
| summarize
ExecutionCount = count(),
UniqueCommands = make_set(ProcessCommandLine),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated)
by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, FileName
| extend Severity = iff(ExecutionCount > 5 or UniqueCommands has_any ("/etc/shadow", "authorized_keys"), "High", "Medium")
| sort by FirstSeen desc;
// Additional query for network connections from BroadWorks hosts to rare external IPs
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where DeviceName has_any ("broadworks", "bw-app", "voip-core") // Adjust to your asset naming convention
| where RemoteIPType == "Public"
| where not (RemoteUrl has_any ("cisco.com", "redhat.com", "oracle.com")) // Tune for known-good destinations
| summarize ConnectionCount = count(), UniquePorts = make_set(RemotePort) by DeviceName, RemoteIP, RemoteUrl
| where ConnectionCount > 10
| sort by ConnectionCount desc;
-- Hunt for anomalous child processes spawned by BroadWorks Java/Apache services and suspicious file access
-- Target: CVE-2025-23019 post-exploitation behavior on Linux BroadWorks hosts
SELECT
Pid,
Name,
CommandLine,
Exe,
Username,
CreateTime,
Ppid,
pslist(Pid=Ppid).Name AS ParentName,
pslist(Pid=Ppid).CommandLine AS ParentCommandLine
FROM pslist()
WHERE
(
-- Java or Apache spawning shells or scripting engines (command injection indicator)
(ParentName =~ 'java|apache|nginx' AND Name =~ 'bash|sh|python|perl|ruby')
OR
-- BroadWorks service accounts running reconnaissance or credential access commands
(Username =~ 'bwadmin|bwcli|bwuser' AND CommandLine =~ '/etc/passwd|/etc/shadow|authorized_keys|find /|grep -r|netstat|ss -tulpn|ip route')
OR
-- Direct execution of common post-exploitation tools from BroadWorks directories
(Exe =~ '/usr/local/broadworks/.*(bash|sh|python|perl)')
)
AND NOT CommandLine =~ 'healthcheck|backup|maintenance|bwcleanup' -- Tune exclusions
#!/bin/bash
# Cisco BroadWorks CVE-2025-23019 Remediation and Verification Script
# Tested on RHEL 8/9 and Oracle Linux 8/9. Run as root or via sudo.
# This script checks for vulnerable versions, applies vendor-recommended mitigations, and hunts for IOCs.
set -euo pipefail
LOG_FILE="/var/log/broadworks_cve_2025_23019_remediation.log"
echo "[$(date)] Starting CVE-2025-23019 Remediation Check" | tee -a "$LOG_FILE"
# 1. Identify BroadWorks version
BW_VERSION_FILE="/usr/local/broadworks/bw_base/conf/version.txt"
if [[ -f "$BW_VERSION_FILE" ]]; then
BW_VERSION=$(grep -i "version" "$BW_VERSION_FILE" | head -1)
echo "[+] Detected BroadWorks Version: $BW_VERSION" | tee -a "$LOG_FILE"
else
echo "[!] BroadWorks version file not found at $BW_VERSION_FILE. Is BroadWorks installed?" | tee -a "$LOG_FILE"
fi
# 2. Check if patched (Fixed versions per Cisco advisory: 2023.12.1.1085, 2024.01.1.396, 2024.06.1.148, 2024.10.1.45 or later)
# This is a simplified check; validate against your specific release train.
FIXED_PATTERN="2023\.12\.1\.1085|2024\.01\.1\.396|2024\.06\.1\.148|2024\.10\.1\.45|2025\."
if [[ -n "${BW_VERSION:-}" && "$BW_VERSION" =~ $FIXED_PATTERN ]]; then
echo "[+] BroadWorks appears to be running a fixed version. Verify against Cisco advisory." | tee -a "$LOG_FILE"
else
echo "[!] WARNING: BroadWorks version is potentially vulnerable to CVE-2025-23019." | tee -a "$LOG_FILE"
echo "[!] IMMEDIATE ACTION REQUIRED: Apply the emergency patch from Cisco PSIRT." | tee -a "$LOG_FILE"
fi
# 3. Hunt for IOCs: Unauthorized SSH keys
if [[ -f /root/.ssh/authorized_keys ]]; then
echo "[+] Checking /root/.ssh/authorized_keys for unauthorized entries..." | tee -a "$LOG_FILE"
grep -v "^#" /root/.ssh/authorized_keys | while read -r key; do
# In a real environment, compare against a known-good whitelist
echo "[?] Found SSH key: $key" | tee -a "$LOG_FILE"
done
echo "[!] Manually verify all keys in /root/.ssh/authorized_keys are authorized." | tee -a "$LOG_FILE"
fi
# 4. Hunt for suspicious cron jobs and systemd timers
echo "[+] Checking for suspicious cron entries..." | tee -a "$LOG_FILE"
crontab -l 2>/dev/null | grep -v "^#" | grep -E "curl|wget|bash|sh|python|perl" && echo "[!] Suspicious cron job found" | tee -a "$LOG_FILE" || echo "[+] No obvious malicious cron jobs detected." | tee -a "$LOG_FILE"
for user in bwadmin bwcli bwuser; do
if crontab -u "$user" -l 2>/dev/null | grep -v "^#" | grep -qE "curl|wget|bash|sh|python|perl"; then
echo "[!] Suspicious cron job found for user $user" | tee -a "$LOG_FILE"
fi
done
# 5. Hunt for suspicious network connections
echo "[+] Checking for established connections to uncommon external IPs..." | tee -a "$LOG_FILE"
ss -tulpn | grep -E ":443|:8443" | awk '{print $5, $6, $7}' | sort -u | while read -r line; do
echo "[?] Listener: $line" | tee -a "$LOG_FILE"
done
# 6. Temporary mitigation: Restrict access to admin interface if patch cannot be applied immediately
echo "[+] Applying temporary iptables mitigation to restrict BroadWorks admin interface to trusted management IPs..." | tee -a "$LOG_FILE"
# REPLACE with your actual management subnets
MANAGEMENT_SUBNETS=("10.0.0.0/8" "192.168.0.0/16" "172.16.0.0/12")
for subnet in "${MANAGEMENT_SUBNETS[@]}"; do
iptables -C INPUT -p tcp -s "$subnet" --dport 443 -j ACCEPT 2>/dev/null || iptables -A INPUT -p tcp -s "$subnet" --dport 443 -j ACCEPT
iptables -C INPUT -p tcp -s "$subnet" --dport 8443 -j ACCEPT 2>/dev/null || iptables -A INPUT -p tcp -s "$subnet" --dport 8443 -j ACCEPT
done
# Drop all other traffic to admin ports (uncomment after whitelisting verified)
# iptables -A INPUT -p tcp --dport 443 -j DROP
# iptables -A INPUT -p tcp --dport 8443 -j DROP
iptables-save > /etc/sysconfig/iptables
echo "[+] iptables rules applied. Verify connectivity before enforcing DROP rules." | tee -a "$LOG_FILE"
echo "[$(date)] Remediation check complete. Review $LOG_FILE for findings." | tee -a "$LOG_FILE"
echo "[!] CRITICAL: Apply the official Cisco patch immediately. This script is a temporary mitigation and detection aid only."
Remediation
Immediate action is required. CVE-2025-23019 is under active exploitation and poses an existential risk to BroadWorks environments.
-
Apply the Emergency Patch: Cisco has released fixed software for all supported BroadWorks release trains. Upgrade to one of the following versions or later:
- BroadWorks 2023.12: 2023.12.1.1085
- BroadWorks 2024.01: 2024.01.1.396
- BroadWorks 2024.06: 2024.06.1.148
- BroadWorks 2024.10: 2024.10.1.45
- BroadWorks 2025.x: All current releases include the fix.
Download the patch from the Cisco Software Center and follow the upgrade procedures in the Cisco Security Advisory.
-
CISA KEV Deadline: Federal Civilian Executive Branch (FCEB) agencies must remediate by February 11, 2026. All other organizations should treat this date as their internal deadline given the confirmed active exploitation.
-
Compensating Controls (if immediate patching is impossible):
- Network Segmentation: Isolate the BroadWorks Application Server in a dedicated management VLAN. Restrict access to the administrative interface (TCP/443, TCP/8443) to a hardened jump host or a small set of trusted IP addresses using host-based firewalls (
iptables/firewalld) and network ACLs. - Disable Unnecessary Services: If the web-based subscriber portal is not required, disable it via the BroadWorks CLI (
bwcli) to reduce the attack surface. - WAF Rules: Deploy a Web Application Firewall in front of BroadWorks with rules to block requests containing shell metacharacters (
;,|,&&,`,$() in URI parameters and POST bodies.
- Network Segmentation: Isolate the BroadWorks Application Server in a dedicated management VLAN. Restrict access to the administrative interface (TCP/443, TCP/8443) to a hardened jump host or a small set of trusted IP addresses using host-based firewalls (
-
Post-Compromise Actions: If you detect exploitation or cannot rule out compromise:
- Isolate the affected BroadWorks server from the network immediately.
- Rotate all credentials: This includes SIP trunk credentials, LDAP bind accounts, API keys, database passwords, and SSH keys stored on the platform.
- Review subscriber data: Assess whether Personally Identifiable Information (PII) or call detail records (CDRs) were accessed.
- Rebuild from known-good media: Given the level of access gained (root/system), the only fully trusted recovery path is to rebuild the BroadWorks host from a known-good image and restore configurations from a backup verified prior to the earliest compromise date.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.