Back to Intelligence

CVE-2026-34223: Siemens Desigo CC Client Code Execution — Detection and Remediation Guide for Building Automation Operators

SA
Security Arsenal Team
September 22, 2026
11 min read

On September 22, 2026, CISA published ICS advisory ICSA-26-265-05 covering a Client Code Execution (CCE) vulnerability in the Siemens Desigo CC building management platform. Tracked as CVE-2026-34223 with a CVSS v3 base score of 8.2 (High), the flaw allows malicious actors to execute arbitrary code on client devices through specially crafted graphics documents containing embedded scripts. In plain terms: an attacker who can get a weaponized graphic into your Desigo CC environment can compromise the operator workstation that renders it — and from there, pivot laterally across your organization.

Desigo CC is Siemens' flagship building automation and management platform, deployed across critical infrastructure sectors including healthcare facilities, airports, data centers, manufacturing campuses, and government buildings. Operator workstations running Desigo CC clients frequently sit at the IT/OT boundary with elevated privileges and network paths into both environments. That makes this vulnerability a high-value initial-access and lateral-movement vector, not just a workstation bug. Every organization running Desigo CC V6 or V7 needs to treat this as a priority remediation item.

Technical Analysis

Affected Products

ProductAffected VersionsCVE
Siemens Desigo CC familyV6 — all versionsCVE-2026-34223
Siemens Desigo CC familyV7 — all versionsCVE-2026-34223

Note that all versions of both major release trains are affected. There is no "safe" V6 or V7 build — remediation requires applying Siemens' updated release once available or implementing compensating controls immediately.

Vulnerability Mechanics

The root cause is classified as CWE-94: Improper Control of Generation of Code ('Code Injection'). Desigo CC supports user-defined graphics — custom visualization documents used to build operator dashboards, floor-plan views, and equipment schematics. These graphics documents can contain embedded scripts. The vulnerable component executes those embedded scripts on the client application instance without adequate validation, sanitization, or sandboxing.

The attack chain from a defender's perspective:

  1. Weaponization — The attacker crafts a Desigo CC graphics document with a malicious embedded script.
  2. Delivery — The crafted graphic is introduced into the environment. Realistic vectors include: a compromised project/engineering file imported by an integrator, a malicious graphic uploaded through the Desigo CC management interface by an attacker with stolen credentials, supply-chain delivery via a third-party contractor's project package, or an insider threat.
  3. Execution — When a Desigo CC client loads/renders the graphic, the embedded script executes in the context of the client application — and therefore with the privileges of the logged-in operator user.
  4. Impact — Arbitrary code execution on the client OS. The advisory explicitly notes potential compromise of the client operating system and lateral movement within the organization. Given that Desigo CC clients often run on Windows workstations with domain credentials, BACnet/IP connectivity to controllers, and trusted paths into OT segments, the downstream risk is severe.

This is a client-side vulnerability — exploitation requires the malicious graphic to be loaded by a client instance. It is not remotely wormable against an unpatched server in isolation, but the social-engineering and supply-chain delivery vectors are entirely plausible in environments where project files are routinely exchanged with external integrators.

Exploitation Status

As of the advisory publication, there is no confirmed public proof-of-concept and no confirmed in-the-wild exploitation, and CVE-2026-34223 has not been added to the CISA Known Exploited Vulnerabilities (KEV) catalog. Siemens disclosed this through coordinated channels. However, the 8.2 CVSS score, the ubiquity of Desigo CC in critical infrastructure, and the attractiveness of BMS operator workstations as IT/OT pivot points mean defenders should assume adversaries will develop exploitation capability. Treat "no known exploitation" as a grace period, not a safety margin.

Detection & Response

Client-side code execution in Desigo CC will most reliably manifest as the client application process spawning unexpected child processes — the embedded script launching cmd.exe, PowerShell, rundll32, mshta, or wscript — or writing executables/scripts to disk. Desigo CC client processes typically include binaries under the Siemens installation path (e.g., C:\Program Files\Siemens\Desigo CC or similar). Validate exact process names in your environment before tuning; the rules below key on the parent-path and parent-name pattern of Desigo CC client components spawning script interpreters or shells, which should be near-zero in a healthy environment.

YAML
---
title: Desigo CC Client Process Spawning Script Interpreter or Shell
id: 3f9c1a72-8b4d-4e6f-9a21-c7e5d3b8f012
status: experimental
description: Detects Siemens Desigo CC client application processes spawning command shells or script interpreters, consistent with exploitation of CVE-2026-34223 via crafted graphics documents with embedded scripts.
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-265-05
  - https://attack.mitre.org/techniques/T1059/
  - https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/09/22
tags:
  - attack.execution
  - attack.t1059
  - attack.t1203
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|contains:
      - '\Siemens\Desigo'
      - '\Desigo CC\'
    ParentImage|endswith:
      - '\desigocc.exe'
      - '\desigoccclient.exe'
      - '\smc.exe'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
      - '\wmic.exe'
      - '\msbuild.exe'
      - '\csc.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Legitimate Desigo CC maintenance scripts launched via vendor tooling (verify with Siemens documentation and change records)
level: high
---
title: Executable or Script Dropped into Desigo CC Graphics or Project Directories
id: 8d2e4b61-1f7a-4c93-b5e8-9f6a2d4c7e31
status: experimental
description: Detects creation of executable or script files within Desigo CC installation, project, or graphics directories, which may indicate delivery of a crafted graphics document or post-exploitation staging related to CVE-2026-34223.
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-265-05
  - https://attack.mitre.org/techniques/T1105/
author: Security Arsenal
date: 2026/09/22
tags:
  - attack.command_and_control
  - attack.t1105
logsource:
  category: file_event
  product: windows
detection:
  selection_path:
    TargetFilename|contains:
      - '\Desigo CC\'
      - '\Siemens\Desigo\'
  selection_ext:
    TargetFilename|endswith:
      - '.exe'
      - '.dll'
      - '.ps1'
      - '.bat'
      - '.cmd'
      - '.vbs'
      - '.js'
      - '.hta'
  condition: selection_path and selection_ext
falsepositives:
  - Siemens software updates and hotfix installation (correlate with maintenance windows and signed installer activity)
level: medium
---
title: Desigo CC Client Process Making Unusual Network Connections
id: 5c7f2e94-3a8b-4d12-9f67-1b8e6c3a9d45
status: experimental
description: Detects Desigo CC client processes establishing outbound network connections to non-OT, non-corporate destinations, potentially indicating command-and-control activity following CVE-2026-34223 exploitation.
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-265-05
  - https://attack.mitre.org/techniques/T1071/
author: Security Arsenal
date: 2026/09/22
tags:
  - attack.command_and_control
  - attack.t1071
logsource:
  category: network_connection
  product: windows
detection:
  selection:
    Image|contains:
      - '\Desigo CC\'
      - '\Siemens\Desigo\'
    DestinationPort:
      - 80
      - 443
      - 8080
      - 4444
  filter_private:
    DestinationIp|startswith:
      - '10.'
      - '172.16.'
      - '172.17.'
      - '172.18.'
      - '172.19.'
      - '172.2'
      - '172.30.'
      - '172.31.'
      - '192.168.'
  condition: selection and not filter_private
falsepositives:
  - Siemens license validation or cloud telemetry endpoints (whitelist known Siemens infrastructure)
level: medium

Microsoft Sentinel / Defender KQL

This hunt surfaces Desigo CC client processes spawning shells or script engines, plus rare child processes generally — useful even where your exact client binary names differ, since it profiles by parent path:

KQL — Microsoft Sentinel / Defender
let ScriptEngines = dynamic(["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","certutil.exe","wmic.exe","msbuild.exe","bitsadmin.exe"]);
let DesigoParents = DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where InitiatingProcessFolderPath has_any ("Desigo", "Siemens")
| summarize by InitiatingProcessFileName;
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFolderPath has_any ("Desigo CC", "Siemens\\Desigo")
   or InitiatingProcessFileName in~ (DesigoParents)
| extend ChildIsScriptEngine = FileName in~ (ScriptEngines)
| project TimeGenerated, DeviceName, AccountName,
          ParentProcess = InitiatingProcessFileName,
          ParentPath = InitiatingProcessFolderPath,
          ChildProcess = FileName, ChildCommandLine = ProcessCommandLine,
          ChildIsScriptEngine, SHA256, ReportId
| order by ChildIsScriptEngine desc, TimeGenerated desc

Complementary network hunt for C2 staging from operator workstations:

KQL — Microsoft Sentinel / Defender
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFolderPath has_any ("Desigo CC", "Siemens\\Desigo")
| where RemoteIP !startswith "10." and RemoteIP !startswith "192.168." and RemoteIP !startswith "172."
| summarize ConnectionCount = count(), Ports = make_set(RemotePort), RemoteIPs = make_set(RemoteIP)
    by DeviceName, InitiatingProcessFileName, RemoteUrl
| where ConnectionCount > 3
| order by ConnectionCount desc

Velociraptor VQL

For IR scoping on a suspected operator workstation, hunt child processes of Desigo CC client binaries and any recent binaries staged in the application directories:

VQL — Velociraptor
-- Hunt for suspicious child processes spawned by Desigo CC client processes
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Ppid IN (
    SELECT Pid FROM pslist()
    WHERE Exe =~ '(?i)desigo|siemens'
)
VQL — Velociraptor
-- Inventory recently created executables and scripts in Desigo CC directories
SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs=[
  'C:/Program Files/Siemens/**/*.exe',
  'C:/Program Files (x86)/Siemens/**/*.exe',
  'C:/Program Files/Siemens/**/*.ps1',
  'C:/Program Files/Siemens/**/*.js',
  'C:/Program Files/Siemens/**/*.vbs',
  'C:/Program Files/Siemens/**/*.bat'
])
WHERE Mtime > now() - 60*60*24*14
ORDER BY Mtime DESC

Verification and Hardening Script

Use this PowerShell script (run elevated) to inventory Desigo CC installations, capture version data for patch verification, and baseline child-process behavior on operator workstations:

PowerShell
# CVE-2026-34223 - Desigo CC inventory, version check, and hardening audit
# Run elevated on operator workstations and engineering stations

Write-Host "=== Desigo CC Installation Inventory ===" -ForegroundColor Cyan
$paths = @(
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
)
Get-ItemProperty $paths -ErrorAction SilentlyContinue |
    Where-Object { $_.DisplayName -match 'Desigo' } |
    Select-Object DisplayName, DisplayVersion, InstallDate, Publisher |
    Format-Table -AutoSize

Write-Host "=== Desigo CC Running Processes ===" -ForegroundColor Cyan
Get-Process | Where-Object { $_.Path -match 'Desigo|Siemens' } |
    Select-Object Name, Id, Path | Format-Table -AutoSize

Write-Host "=== Child Process Audit (last 24h, if Sysmon installed) ===" -ForegroundColor Cyan
if (Get-WinEvent -ListLog 'Microsoft-Windows-Sysmon/Operational' -ErrorAction SilentlyContinue) {
    Get-WinEvent -FilterHashtable @{
        LogName = 'Microsoft-Windows-Sysmon/Operational'
        Id = 1
        StartTime = (Get-Date).AddDays(-1)
    } -ErrorAction SilentlyContinue | Where-Object {
        $_.Message -match '(?i)ParentImage.*(desigo|siemens)' -and
        $_.Message -match '(?i)Image.*(cmd\.exe|powershell|wscript|cscript|mshta|rundll32)'
    } | Select-Object TimeCreated, Message | Format-List
} else {
    Write-Host "Sysmon not installed. Deploy Sysmon with process-creation logging for detection coverage." -ForegroundColor Yellow
}

Write-Host "=== AppLocker / WDAC Policy Presence ===" -ForegroundColor Cyan
Get-AppLockerPolicy -Effective -ErrorAction SilentlyContinue | Out-Null
if ($?) { Write-Host "AppLocker effective policy present - verify script rules cover Siemens paths." }
else { Write-Host "No effective AppLocker policy found - consider WDAC/AppLocker to block script execution under user context." -ForegroundColor Yellow }

Write-Host "=== Network Exposure Check (listening services on host) ===" -ForegroundColor Cyan
Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |
    Where-Object { $_.OwningProcess -in (Get-Process | Where-Object { $_.Path -match 'Desigo|Siemens' }).Id } |
    Select-Object LocalAddress, LocalPort, OwningProcess | Format-Table -AutoSize

Remediation

1. Patch as the primary action. All versions of Desigo CC V6 and V7 are affected by CVE-2026-34223. Consult the Siemens ProductCERT advisory referenced in ICSA-26-265-05 for the fixed release versions and update procedure. Coordinate patching through your change-control process — for BMS platforms supporting 24/7 facilities, plan maintenance windows but do not defer beyond your high-severity SLA (recommended: 14 days maximum given CVSS 8.2 and client-side exposure).

2. Restrict graphics document sources. Until patched, enforce strict provenance controls on Desigo CC graphics and project files:

  • Only accept project/graphics packages from trusted, verified integrators; hash and archive received packages for forensic provenance.
  • Require engineering review of any newly imported user-defined graphics before deployment to production client instances.
  • Disable or restrict the import of user-defined graphics on production operator workstations if your operational workflow permits.

3. Harden operator workstations. These are your blast-radius controls:

  • Apply least privilege: Desigo CC operators should not hold local admin rights or privileged domain credentials on BMS workstations.
  • Deploy AppLocker or WDAC policies restricting script execution (PowerShell Constrained Language Mode, block unsigned scripts) on operator workstations.
  • Ensure EDR coverage on every Desigo CC client machine — these endpoints are frequently excluded from standard IT tooling; close that gap now.

4. Segment the BMS network. Enforce IEC 62443-style zoning: Desigo CC servers and clients in a dedicated zone, with no direct internet egress, restricted east-west traffic to the corporate LAN (broker through jump hosts), and monitored conduits to field-level BACnet/Modbus segments. A compromised operator workstation should not be able to reach domain controllers or internet C2 infrastructure.

5. Verify third-party access. Audit all integrator and vendor remote-access paths into the Desigo CC environment. The most realistic delivery vector for a crafted graphics document is a trusted project-file exchange. Require MFA, time-bound access, and file-transfer logging for all external engineering parties.

6. Hunt retroactively. Run the KQL and VQL hunts above across at least 30 days of telemetry on all workstations with Desigo CC clients installed. Child-process anomalies from Siemens-path binaries are high-signal indicators and warrant full IR scoping.

Reference: CISA ICSA-26-265-05 — https://www.cisa.gov/news-events/ics-advisories/icsa-26-265-05. Monitor the Siemens ProductCERT portal for the vendor advisory, patch releases, and any updated CVE metadata via the published CSAF document.

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.