On August 13, 2026, CISA published ICS advisory ICSA-26-225-09 disclosing a critical vulnerability in Siemens Siveillance Video, the video management system (VMS) deployed across critical manufacturing plants, communications facilities, and commercial campuses worldwide. The flaw — tracked as CVE-2026-3014 — is an unauthenticated OS command injection vulnerability (CWE-78) carrying a CVSS v3 score of 9.1 (Critical).
Let me be blunt about what this means in practice: an attacker with nothing more than network access to the Siveillance Video Management Server can execute arbitrary operating system commands on the underlying host without credentials. Video management servers sit at an interesting intersection in most environments — they're physically adjacent to OT and building automation networks, they're frequently on flat or lightly segmented VLANs because cameras generate high-bandwidth streams that resist inspection, and they're often administered by physical security teams rather than IT security. That combination makes a 9.1 unauthenticated RCE on this platform a genuine pivot point into critical infrastructure, not just a box-ticking patch exercise.
If you run Siveillance Video anywhere in your environment, this is a patch-now situation. If you can't patch this week, you need compensating controls in place today.
Technical Analysis
Affected Products and Versions
Siemens has confirmed the following release trains are vulnerable. All three are fixed in currently available builds:
| Product | Affected Versions | Fixed Version |
|---|---|---|
| Siveillance Video V2023 R3 | All versions < 23.3.27 | 23.3.27 or later |
| Siveillance Video V2024 R1 | All versions < 24.1.16 | 24.1.16 or later |
| Siveillance Video V2025 | All versions < 25.1.15 | 25.1.15 or later |
Vulnerability Details
- CVE: CVE-2026-3014
- Weakness: CWE-78 — Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
- CVSS v3.1: 9.1 (Critical) — consistent with network-reachable, no-authentication, no-user-interaction code execution
- Authentication required: None
- Vendor: Siemens
- Affected sectors: Critical Manufacturing, Communications, Commercial Facilities
How the Attack Works (Defender's View)
OS command injection in a VMS platform almost always traces to the same architectural mistake: a web-facing management or API endpoint takes user-supplied input — a camera name, an export path, a network diagnostic parameter, a configuration string — and passes it into a shell invocation without sanitization. Metacharacters like ;, |, &&, backticks, or $( ) break out of the intended command context and let the attacker append arbitrary commands.
From a defender's perspective, the exploitation chain looks like this:
- Reconnaissance: The attacker scans for Siveillance Video management interfaces — typically exposed over HTTP/HTTPS on the server's management ports. VMS servers are frequently internet-exposed for remote monitoring or reachable via third-party integrator VPNs.
- Injection: A crafted request to a vulnerable endpoint embeds OS commands in a parameter. Because no authentication is required, this works against a default, untouched deployment.
- Execution: Commands execute with the privileges of the Siveillance Video server service account — on Windows-based VMS deployments, this is commonly a high-privilege service account or even SYSTEM, because video services need broad access to storage, device drivers, and network shares.
- Post-exploitation: Expect webshell deployment, credential dumping from the VMS database (which often stores camera and AD integration credentials), scheduled task or service persistence, and lateral movement toward camera VLANs, badge systems, or the corporate network.
Exploitation Status
At the time of the advisory's publication, there are no confirmed reports of in-the-wild exploitation and CVE-2026-3014 has not been added to the CISA Known Exploited Vulnerabilities catalog. Treat this as a window of opportunity, not reassurance. ICS advisories with a 9.1 unauthenticated RCE on an internet-reachable management interface follow a predictable pattern: PoC code appears within weeks of disclosure, followed by opportunistic scanning. The patch window you have right now is the cheapest one you will get.
Detection & Response
This is a technical ICS threat, and the detections below target the behaviors that follow command injection exploitation of a Windows-hosted VMS: shell-spawning from web service processes, encoded command execution, and webshell-style file drops. Siveillance Video servers are overwhelmingly deployed on Windows Server, so endpoint process-lineage detection is your highest-fidelity signal. Tune the Image filters to match your actual Siveillance installation paths and service process names — validate against your environment before deploying at high level.
Sigma Rules
---
title: Siveillance Video Server Process Spawning Shell - Possible CVE-2026-3014 Exploitation
id: 8c4f2a1b-3d7e-4f9a-b2c6-9e1d5a7b3c41
status: experimental
description: Detects Windows command shells or scripting engines spawned as child processes of Siveillance Video server or associated web service processes, consistent with post-exploitation behavior following OS command injection against a video management server.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-225-09
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/08/14
tags:
- attack.execution
- attack.t1059
- attack.initial_access
- attack.t1190
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\w3wp.exe'
- '\httpd.exe'
- '\nginx.exe'
- '\java.exe'
- '\javaw.exe'
- '\tomcat.exe'
ParentCommandLine|contains:
- 'siveillance'
- 'vms'
- 'video'
selection_shell:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
condition: selection_parent and selection_shell
falsepositives:
- Legitimate Siveillance maintenance scripts or health-check diagnostics spawning shells from the service context; verify against change records
level: high
---
title: Encoded or Obfuscated Command Execution on Video Management Servers
id: 2f7b9c3d-5a1e-4d8f-a6b2-7c9e3d1f4a85
status: experimental
description: Detects encoded PowerShell, download cradles, or living-off-the-land command patterns on servers identified as video management systems, indicating possible second-stage payload delivery after command injection exploitation such as CVE-2026-3014.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-225-09
- https://attack.mitre.org/techniques/T1027/
- https://attack.mitre.org/techniques/T1105/
author: Security Arsenal
date: 2026/08/14
tags:
- attack.defense_evasion
- attack.t1027
- attack.command_and_control
- attack.t1105
logsource:
category: process_creation
product: windows
detection:
selection_cmd:
CommandLine|contains:
- ' -enc '
- ' -ec '
- 'FromBase64String'
- 'IEX('
- 'Invoke-Expression'
- 'DownloadString'
- 'WebClient'
- 'curl.exe http'
- 'certutil -urlcache'
filter_legit:
CommandLine|contains:
- 'SCCM'
- 'IntuneManagementExtension'
condition: selection_cmd and not filter_legit
falsepositives:
- Software deployment tooling using encoded commands; restrict deployment scope to VMS server assets via asset tags
level: medium
---
title: Webshell or Script File Creation in Web-Accessible Siveillance Directories
id: 6d3a8f2c-1b4e-4c7a-9d5f-2e8a6b1c7d93
status: experimental
description: Detects creation of executable script files in web-accessible directories on video management servers, a common persistence and remote access mechanism following OS command injection exploitation.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-225-09
- https://attack.mitre.org/techniques/T1505.003/
author: Security Arsenal
date: 2026/08/14
tags:
- attack.persistence
- attack.t1505.003
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\inetpub\wwwroot\'
- '\Siveillance\'
- '\SiveillanceVideo\'
- '\www\'
- '\htdocs\'
- '\webapps\'
selection_ext:
TargetFilename|endswith:
- '.aspx'
- '.ashx'
- '.asp'
- '.php'
- '.jsp'
- '.jspx'
- '.war'
- '.cgi'
condition: selection_path and selection_ext
falsepositives:
- Vendor software updates and hotfix installations; correlate with authorized maintenance windows
level: high
KQL (Microsoft Sentinel / Defender)
This hunt assumes you ingest process creation telemetry from your VMS servers into Defender (DeviceProcessEvents) and/or Sysmon-to-Sentinel (SecurityEvent). It looks for the same post-injection process lineage: web or service processes on VMS assets spawning shells and LOLBins. Tag your Siveillance servers in an asset watchlist (_GetWatchlist('VMS_Servers')) or replace the device-name filter with your naming convention.
let lookback = 14d;
let vmsServers = dynamic(["SIVEILLANCE", "VMS", "VIDEO-MGMT"]);
let suspiciousChildren = dynamic(["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","certutil.exe","bitsadmin.exe","curl.exe","whoami.exe","net.exe","nltest.exe"]);
DeviceProcessEvents
| where TimeGenerated >= ago(lookback)
| where DeviceName has_any (vmsServers)
| where InitiatingProcessFileName in~ ("w3wp.exe","httpd.exe","nginx.exe","java.exe","javaw.exe","tomcat.exe")
or InitiatingProcessCommandLine has_any ("siveillance","video")
| where FileName in~ (suspiciousChildren)
| project TimeGenerated, DeviceName, AccountName,
InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, ProcessId, ReportId
| order by TimeGenerated desc
For network-layer visibility where VMS traffic traverses a firewall or NDR ingested into Sentinel as CommonSecurityLog, hunt for inbound connections to VMS management interfaces from unusual sources, particularly internet-facing edges:
let lookback = 14d;
CommonSecurityLog
| where TimeGenerated >= ago(lookback)
| where DeviceAction in~ ("allow","allowed","Accept") or isempty(DeviceAction)
| where DestinationHostName has_any ("SIVEILLANCE","VMS","VIDEO")
or DestinationIP in (todynamic('["10.0.0.0"]')) // replace with VMS server IPs
| where not(ipv4_is_private(SourceIP))
| summarize ConnectionCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated)
by SourceIP, DestinationIP, DestinationPort, ApplicationProtocol
| order by ConnectionCount desc
Velociraptor VQL
Use this artifact for live triage of a suspected Siveillance server. It enumerates processes with shell or script-engine ancestry tied to web/service processes, and pulls recent suspicious network connections for the same host.
-- Hunt for post-exploitation process execution and network activity on Siveillance Video VMS servers
LET suspicious_children = '(?i)(cmd\.exe|powershell\.exe|pwsh\.exe|wscript\.exe|cscript\.exe|mshta\.exe|rundll32\.exe|certutil\.exe|bitsadmin\.exe)'
LET service_parents = '(?i)(w3wp\.exe|httpd\.exe|nginx\.exe|java\.exe|javaw\.exe|tomcat\.exe|siveillance)'
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Name =~ suspicious_children
OR CommandLine =~ suspicious_children
SELECT Pid, Name, LocalAddr, LocalPort, RemoteAddr, RemotePort, Status
FROM netstat()
WHERE Status = 'ESTABLISHED'
AND NOT RemoteAddr =~ '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.)'
Verification Script
Run this on each Siveillance Video Management Server to inventory the installed version, flag vulnerable builds against the fixed baselines, and enumerate signs of post-exploitation (recent script files in web directories, suspicious service processes with shell children, and unexpected listening ports).
# CVE-2026-3014 - Siveillance Video vulnerability verification and triage
# Run elevated on each Video Management Server
$fixedBaseline = @{
'V2023 R3' = [version]'23.3.27'
'V2024 R1' = [version]'24.1.16'
'V2025' = [version]'25.1.15'
}
Write-Host "=== [1] Installed Siveillance Video version ===" -ForegroundColor Cyan
$apps = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -match 'Siveillance' } |
Select-Object DisplayName, DisplayVersion, InstallDate, Publisher
if (-not $apps) {
Write-Host "[!] No Siveillance Video installation detected on this host." -ForegroundColor Yellow
} else {
$apps | Format-Table -AutoSize
foreach ($app in $apps) {
$ver = $null
[void][version]::TryParse(($app.DisplayVersion -split ' ')[0], [ref]$ver)
if ($ver -and $ver -lt [version]'25.1.15' -and $ver -lt [version]'24.1.16' -and $ver -lt [version]'23.3.27') {
Write-Host "[VULNERABLE] $($app.DisplayName) $($app.DisplayVersion) is below ALL fixed baselines - PATCH IMMEDIATELY" -ForegroundColor Red
} elseif ($ver -and ($ver.Major -eq 23 -and $ver -lt [version]'23.3.27')) {
Write-Host "[VULNERABLE] V2023 R3 build below 23.3.27 - PATCH IMMEDIATELY" -ForegroundColor Red
} elseif ($ver -and ($ver.Major -eq 24 -and $ver -lt [version]'24.1.16')) {
Write-Host "[VULNERABLE] V2024 R1 build below 24.1.16 - PATCH IMMEDIATELY" -ForegroundColor Red
} elseif ($ver -and ($ver.Major -eq 25 -and $ver -lt [version]'25.1.15')) {
Write-Host "[VULNERABLE] V2025 build below 25.1.15 - PATCH IMMEDIATELY" -ForegroundColor Red
} else {
Write-Host "[OK] Build appears at or above a fixed baseline. Confirm release train with Siemens advisory." -ForegroundColor Green
}
}
}
Write-Host "`n=== [2] Web-accessible script files modified in last 30 days ===" -ForegroundColor Cyan
$webPaths = @("C:\inetpub\wwwroot","C:\Program Files\Siemens","C:\Program Files\Siveillance","C:\Siveillance")
foreach ($p in $webPaths) {
if (Test-Path $p) {
Get-ChildItem -Path $p -Recurse -Include *.aspx,*.ashx,*.asp,*.php,*.jsp,*.cgi -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) } |
Select-Object FullName, LastWriteTime, Length
}
}
Write-Host "`n=== [3] Service/web processes with shell children (live) ===" -ForegroundColor Cyan
Get-CimInstance Win32_Process |
Where-Object { $_.Name -match 'cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|certutil|bitsadmin' } |
ForEach-Object {
$parent = Get-CimInstance Win32_Process -Filter "ProcessId=$($_.ParentProcessId)" -ErrorAction SilentlyContinue
if ($parent -and $parent.Name -match 'w3wp|httpd|nginx|java|tomcat|siveillance') {
[PSCustomObject]@{
Child = $_.Name; ChildCmd = $_.CommandLine
Parent = $parent.Name; ParentCmd = $parent.CommandLine
}
}
} | Format-List
Write-Host "`n=== [4] Established connections to non-private IPs from service processes ===" -ForegroundColor Cyan
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
Where-Object { $_.RemoteAddress -notmatch '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.|0\.0\.0\.0)' } |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess,
@{N='Process';E={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}} |
Sort-Object RemoteAddress -Unique | Format-Table -AutoSize
Write-Host "`n=== Triage complete. Escalate any VULNERABLE flags or suspicious findings to IR immediately. ===" -ForegroundColor Cyan
Remediation
Immediate Actions (Today)
- Identify every Siveillance Video Management Server in your environment. Don't rely on your CMDB alone — VMS servers are frequently installed by physical security vendors and never registered. Sweep your network for Siemens Siveillance service banners and check with your facilities and physical security teams.
- Verify internet exposure. Confirm none of these servers are reachable from the public internet or from third-party integrator VPN paths. An unauthenticated RCE on an internet-facing VMS should be treated as likely-compromised until proven otherwise.
- Run the triage script above (or equivalent EDR sweep) on every identified server before patching — if the box is already compromised, patching alone won't evict the attacker.
Patching
Siemens has released fixed builds for all three supported release trains. Update to:
- Siveillance Video V2023 R3: version 23.3.27 or later
- Siveillance Video V2024 R1: version 24.1.16 or later
- Siveillance Video V2025: version 25.1.15 or later
Obtain the updates through your Siemens support channel and follow the vendor's installation guidance. Reference advisories:
- CISA ICS Advisory: https://www.cisa.gov/news-events/ics-advisories/icsa-26-225-09
- Siemens ProductCERT / CSAF: follow the CSAF link referenced in the CISA advisory for the authoritative Siemens security advisory and signed update packages.
Test the update against recording retention, camera driver compatibility, and any third-party integrations (access control, analytics) in a staging environment where feasible — but given a CVSS 9.1 unauthenticated RCE, do not let an extended validation cycle delay patching internet- or vendor-reachable servers.
Compensating Controls (If You Cannot Patch Immediately)
- Network segmentation: Restrict management-interface access to a dedicated jump host or admin VLAN. VMS servers should never be directly reachable from user subnets, the internet, or third-party VPNs.
- ACL/firewall lockdown: Permit inbound traffic to the management ports only from documented operator workstations and the recording/archival infrastructure that requires it.
- Service account hygiene: Verify the Siveillance service runs under a least-privilege managed service account — not SYSTEM, not a domain admin, and not a shared account with broad AD rights. Command injection executes with the service's privileges; minimize what those privileges can reach.
- Egress filtering: Block outbound internet access from VMS servers except to explicitly required vendor update endpoints. This breaks most post-exploitation C2 and payload-staging paths.
- Enhanced logging: Deploy Sysmon (or onboard servers to your EDR) with process-creation and command-line logging, and forward to your SIEM. The detections above depend on it.
- Deploy the Sigma and KQL content above scoped to your VMS asset group, and set alerting to page on the high-severity rules.
If You Suspect Prior Exploitation
Because this vulnerability requires no authentication and leaves no failed-login trail, assume that a long-exposed server has been probed. For any server that was internet- or third-party-reachable while vulnerable: capture memory and a disk image before remediation, hunt for webshells and rogue scheduled tasks/services, rotate all credentials stored in or accessible from the VMS (camera credentials, AD integration accounts, storage credentials), and review outbound connection logs for the full exposure window. Engage your IR retainer if you find artifacts you cannot cleanly attribute to legitimate maintenance.
The window between ICS disclosure and mass exploitation keeps shrinking. A 9.1 unauthenticated RCE on a server class that routinely bridges physical security and corporate networks deserves same-week remediation — not next quarter's patch cycle.
Related Resources
Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.