Back to Intelligence

CVE-2026-110936: Siemens Software Center DLL Sideloading Exploited in ClickFix RAT Campaigns — Detection and Remediation Guide

SA
Security Arsenal Team
October 20, 2026
13 min read

Siemens has patched a high-severity DLL sideloading vulnerability in Siemens Software Center — tracked as CVE-2026-110936 (CVSS v4: 8.4) — after confirming it was being exploited in the wild as part of ClickFix social engineering campaigns delivering remote access trojans (RATs).

This combination is what makes the story operationally significant. DLL sideloading flaws are typically post-compromise primitives: an attacker needs code execution or file write access first. ClickFix closes that gap elegantly — it convinces the user to run the initial malware themselves. The result is a full attack chain that starts with a fake browser prompt and ends with a persistent, privileged RAT living inside a trusted, signed Siemens application.

If your environment includes engineering workstations, HMI operators, or anyone administering Siemens industrial software, this is not a theoretical exposure. Those users are exactly the personas ClickFix lures target, and exactly the machines where Siemens Software Center is installed.

Technical Analysis

The Vulnerability: CVE-2026-110936

Siemens Software Center — the centralized component used to install, update, and manage Siemens industrial software portfolios (TIA Portal, WinCC, and related engineering tools) — fails to properly constrain its DLL search order. An attacker who can place a specially crafted DLL into a directory the application searches can have that DLL loaded and executed with the same privileges as the Software Center process.

Key characteristics from a defender's perspective:

  • Vulnerability class: DLL sideloading / uncontrolled search path (MITRE ATT&CK: T1574.001/T1574.002 — Hijack Execution Flow)
  • Attack vector: Local — requires the malicious DLL to be staged on the target filesystem
  • Privilege context: Code executes in the security context of Siemens Software Center, which is frequently run with elevated privileges during software installation and update workflows
  • Severity: CVSS v4 score of 8.4 (High)
  • Exploitation status: Confirmed active exploitation in the wild via ClickFix campaigns. This is not a theoretical or PoC-only bug.

The ClickFix Delivery Mechanism

ClickFix (and its variants such as ClearFake and FakeCAPTCHA) is a social engineering technique that has surged through 2025 and into 2026. The lure is a compromised or malicious web page presenting a fake error — a "browser verification," a CAPTCHA, a "fix this document" prompt — that instructs the victim to:

  1. Press Win+R to open the Run dialog
  2. Press Ctrl+V to paste a "verification string" (actually a malicious command silently copied to the clipboard by JavaScript on the page)
  3. Press Enter

That pasted string is typically a PowerShell one-liner (powershell -enc ..., mshta, or curl-based stager) executed via explorer.exe. In this campaign, the staged payload drops a malicious DLL into a directory searched by Siemens Software Center, then waits for — or triggers — the application to load it. Because the DLL is loaded by a legitimate, signed Siemens binary, many application control policies and naive EDR detections are bypassed entirely.

Why Sideloading Into Trusted Applications Matters

From an IR perspective, DLL sideloading into vendor-signed software is one of the most effective defense-evasion techniques we see in engagements:

  • The executing process is digitally signed and trusted — application whitelisting (WDAC/AppLocker rules keyed on publisher) allows it
  • Command-line telemetry shows a benign parent process (the Siemens binary), not the malware
  • The malicious logic lives in a DLL file on disk, which may be the only scannable artifact — and it often masquerades with a legitimate-sounding name
  • Persistence is inherited: every time Software Center launches (including via scheduled update checks), the payload re-executes

Detection & Response

The detections below target the three observable stages: the ClickFix initial execution, the DLL staging, and the sideload itself. Deploy them together — any single stage in isolation can have benign explanations, but the chain is unambiguous.

Sigma Rules

YAML
---
title: ClickFix-Style Execution via Run Dialog - Suspicious Child of Explorer
id: 3f8a2c91-7d4e-4b1a-9c6f-2e5d8a1b4f09
status: experimental
description: Detects ClickFix social engineering pattern where a user is tricked into pasting a malicious command into the Windows Run dialog, resulting in script interpreters or download cradles spawned directly by explorer.exe with suspicious command lines.
references:
  - https://thehackernews.com/2026/10/clickfix-attackers-exploit-siemens.html
  - https://attack.mitre.org/techniques/T1204/002/
  - https://attack.mitre.org/techniques/T1059/001/
author: Security Arsenal
date: 2026/10/20
tags:
  - attack.execution
  - attack.t1204.002
  - attack.t1059.001
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith: '\explorer.exe'
  selection_image:
    Image|endswith:
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\mshta.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\curl.exe'
      - '\cmd.exe'
  selection_cl:
    CommandLine|contains:
      - ' -enc'
      - ' -e '
      - 'iex'
      - 'Invoke-Expression'
      - 'Invoke-WebRequest'
      - 'iwr '
      - 'hidden'
      - 'bypass'
      - 'mshta http'
      - 'http://'
      - 'https://'
  condition: selection_parent and selection_image and selection_cl
falsepositives:
  - Rare legitimate administrative use of Run dialog with encoded commands
level: high
---
title: DLL Dropped in Siemens Software Center Directory by Non-Installer Process
id: 9c1e5b47-2a8d-4f36-b7e1-5d3a9c6f8210
status: experimental
description: Detects creation of DLL files in Siemens Software Center installation or search-path directories by processes other than legitimate installers/updaters, consistent with CVE-2026-110936 DLL staging for sideloading.
references:
  - https://thehackernews.com/2026/10/clickfix-attackers-exploit-siemens.html
  - https://attack.mitre.org/techniques/T1574/001/
author: Security Arsenal
date: 2026/10/20
tags:
  - attack.persistence
  - attack.privilege_escalation
  - attack.t1574.001
logsource:
  category: file_event
  product: windows
detection:
  selection_path:
    TargetFilename|contains:
      - '\Siemens\SoftwareCenter\'
      - '\Siemens\Automation\'
      - '\Program Files\Siemens\'
      - '\Program Files (x86)\Siemens\'
  selection_ext:
    TargetFilename|endswith: '.dll'
  filter_installers:
    Image|endswith:
      - '\msiexec.exe'
      - '\setup.exe'
      - '\Siemens.SoftwareCenter.exe'
      - '\TrustedInstaller.exe'
      - '\TiWorker.exe'
  condition: selection_path and selection_ext and not filter_installers
falsepositives:
  - Legitimate Siemens software deployments using non-standard installer names - baseline installer names in your environment
level: high
---
title: Siemens Software Center Loading DLL from User-Writable Path
id: 5b7d3e92-4f1a-4c68-a2d9-8e6b1f3a7c45
status: experimental
description: Detects Siemens Software Center or related Siemens processes loading DLLs from user-writable locations such as Downloads, Temp, AppData, or Public folders - a hallmark of DLL sideloading exploitation of CVE-2026-110936.
references:
  - https://thehackernews.com/2026/10/clickfix-attackers-exploit-siemens.html
  - https://attack.mitre.org/techniques/T1574/002/
author: Security Arsenal
date: 2026/10/20
tags:
  - attack.defense_evasion
  - attack.privilege_escalation
  - attack.t1574.002
logsource:
  category: image_load
  product: windows
detection:
  selection_process:
    Image|contains: '\Siemens\'
  selection_dll_path:
    ImageLoaded|contains:
      - '\Users\'
      - '\AppData\'
      - '\Temp\'
      - '\Downloads\'
      - '\Public\'
      - '\ProgramData\'
  condition: selection_process and selection_dll_path
falsepositives:
  - Developer or test builds of Siemens components - verify signature status of loaded DLL
level: critical

KQL — Microsoft Sentinel / Defender XDR

This query correlates the ClickFix execution pattern with subsequent suspicious DLL drops touching Siemens paths, giving you the full campaign in one hunt. Run it over a 7-day window for initial triage, then daily as a scheduled analytic rule.

KQL — Microsoft Sentinel / Defender
// Hunt: ClickFix initial execution correlated with Siemens DLL staging (CVE-2026-110936)
let Lookback = 7d;
let ClickFixExec = DeviceProcessEvents
| where Timestamp > ago(Lookback)
| where InitiatingProcessFileName =~ "explorer.exe"
| where FileName in~ ("powershell.exe", "pwsh.exe", "mshta.exe", "wscript.exe", "cscript.exe", "curl.exe", "cmd.exe")
| where ProcessCommandLine has_any ("-enc", "iex", "Invoke-Expression", "Invoke-WebRequest", "iwr ", "hidden", "bypass", "http://", "https://")
| project ClickFixTime = Timestamp, DeviceId, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName;
let SiemensDllWrites = DeviceFileEvents
| where Timestamp > ago(Lookback)
| where ActionType == "FileCreated"
| where FileName endswith ".dll"
| where FolderPath has_any ("\\Siemens\\SoftwareCenter\\", "\\Program Files\\Siemens\\", "\\Program Files (x86)\\Siemens\\", "\\Siemens\\Automation\\")
| where InitiatingProcessFileName !in~ ("msiexec.exe", "setup.exe", "TrustedInstaller.exe", "TiWorker.exe")
| project DllWriteTime = Timestamp, DeviceId, DeviceName, FolderPath, FileName, SHA256, DllWriterProcess = InitiatingProcessFileName, DllWriterCmd = InitiatingProcessCommandLine;
ClickFixExec
| join kind=inner SiemensDllWrites on DeviceId
| where DllWriteTime between (ClickFixTime .. ClickFixTime + 2h)
| project ClickFixTime, DllWriteTime, DeviceName, AccountName, ProcessCommandLine, FolderPath, FileName, SHA256, DllWriterProcess, DllWriterCmd
| sort by ClickFixTime desc;

Two supporting single-stage hunts worth running independently:

KQL — Microsoft Sentinel / Defender
// Hunt A: Siemens processes loading DLLs from user-writable paths (sideload behavior)
DeviceImageLoadEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFolderPath has "\\Siemens\\" or FolderPath has "\\Siemens\\"
| where FolderPath has_any ("\\Users\\", "\\AppData\\", "\\Temp\\", "\\Downloads\\", "\\Public\\")
| where FileName endswith ".dll"
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, FolderPath, FileName, SHA256
| sort by Timestamp desc;

// Hunt B: Any file writes into Siemens install dirs by non-installer processes
DeviceFileEvents
| where Timestamp > ago(7d)
| where ActionType in ("FileCreated", "FileModified", "FileRenamed")
| where FolderPath has "\\Siemens\\"
| where FileName endswith ".dll"
| where InitiatingProcessFileName !in~ ("msiexec.exe", "setup.exe", "TrustedInstaller.exe", "TiWorker.exe", "System")
| summarize FirstSeen = min(Timestamp), LastSeen = max(Timestamp), Devices = dcount(DeviceId)
  by InitiatingProcessFileName, InitiatingProcessFolderPath, FileName
| sort by Devices asc;

Velociraptor VQL

Use this artifact to sweep your Siemens-equipped fleet for unsigned or anomalous DLLs in Software Center directories, plus evidence of ClickFix-style execution (PowerShell spawned by explorer). Deploy as a hunt across the OU containing engineering/OT workstations.

VQL — Velociraptor
-- CVE-2026-110936 Hunt: Suspicious DLLs in Siemens paths + ClickFix execution evidence
-- Part 1: Inventory DLLs in Siemens Software Center directories with signature status
LET dll_inventory = SELECT
    FullPath,
    Mtime AS Modified,
    Size,
    hash(path=FullPath).MD5 AS MD5,
    authenticode(filename=FullPath).Status AS SignatureStatus,
    authenticode(filename=FullPath).Subject AS Signer
FROM glob(globs=[
    'C:/Program Files/Siemens/**/*.dll',
    'C:/Program Files (x86)/Siemens/**/*.dll',
    'C:/Program Files/Siemens/SoftwareCenter/*.dll'
])
WHERE SignatureStatus != 'trusted'
   OR Signer !~ 'Siemens'

-- Part 2: Recent ClickFix-pattern process execution (script interpreter child of explorer)
LET clickfix_procs = SELECT
    Pid,
    Name,
    CommandLine,
    Exe,
    Username,
    CreateTime
FROM pslist()
WHERE Name =~ '(?i)powershell|pwsh|mshta|wscript|cscript|curl'
  AND CommandLine =~ '(?i)(-enc|iex|invoke-expression|invoke-webrequest|hidden|bypass|http)'

SELECT * FROM dll_inventory
UNION ALL
SELECT * FROM clickfix_procs

Note: run the two parts as separate artifacts in production if your VQL version complains about the schema mismatch in the UNION — the DLL inventory alone is the highest-value output.

Verification & Hardening Script

This PowerShell script (run as Administrator) reports the installed Siemens Software Center state, flags unsigned DLLs in Siemens directories, and checks for ClickFix-style artifacts. It is read-only — safe for broad deployment via your RMM or Intune.

PowerShell
# CVE-2026-110936 Assessment Script - Security Arsenal
# Verifies Siemens Software Center state and hunts for sideloaded DLLs / ClickFix artifacts

$report = [ordered]@{}

# 1. Locate Siemens Software Center installations
$siemensPaths = @(
    "$env:ProgramFiles\Siemens",
    "${env:ProgramFiles(x86)}\Siemens"
) | Where-Object { Test-Path $_ }

$report['SiemensInstalled'] = ($siemensPaths.Count -gt 0)
Write-Host "[+] Siemens directories found: $($siemensPaths -join '; ')"

# 2. Enumerate installed Siemens software and versions (verify against patched baseline)
$installed = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,
             HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue |
             Where-Object { $_.DisplayName -match 'Siemens' } |
             Select-Object DisplayName, DisplayVersion, InstallDate
$installed | Format-Table -AutoSize
Write-Host "[!] ACTION: Compare DisplayVersion values against the fixed versions in the Siemens ProductCERT advisory for CVE-2026-110936."

# 3. Scan for unsigned / non-Siemens DLLs in Siemens installation directories
$suspiciousDlls = foreach ($path in $siemensPaths) {
    Get-ChildItem -Path $path -Recurse -Filter *.dll -ErrorAction SilentlyContinue |
    ForEach-Object {
        $sig = Get-AuthenticodeSignature $_.FullName
        if ($sig.Status -ne 'Valid' -or $sig.SignerCertificate.Subject -notmatch 'Siemens') {
            [PSCustomObject]@{
                Path       = $_.FullName
                LastWrite  = $_.LastWriteTime
                SigStatus  = $sig.Status
                Signer     = $sig.SignerCertificate.Subject
            }
        }
    }
}

if ($suspiciousDlls) {
    Write-Host "[-] SUSPICIOUS: Unsigned or non-Siemens-signed DLLs found (potential sideload staging):" -ForegroundColor Red
    $suspiciousDlls | Format-Table -AutoSize
    $report['SuspiciousDllCount'] = $suspiciousDlls.Count
} else {
    Write-Host "[+] No unsigned DLLs detected in Siemens directories."
    $report['SuspiciousDllCount'] = 0
}

# 4. Check for DLLs in user-writable paths referencing Siemens (dropper staging)
$userWritableHits = Get-ChildItem "$env:USERPROFILE\Downloads", "$env:TEMP", "$env:LOCALAPPDATA\Temp" -Recurse -Filter *.dll -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
    Select-Object FullName, LastWriteTime
if ($userWritableHits) {
    Write-Host "[!] Recent DLLs in user-writable paths - review for staging activity:" -ForegroundColor Yellow
    $userWritableHits | Format-Table -AutoSize
}

# 5. Review recent Run dialog history (MRU) for ClickFix-style pasted commands
$runMru = Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -ErrorAction SilentlyContinue
if ($runMru) {
    $runMru.PSObject.Properties | Where-Object { $_.Name -match '^[a-z]$' } |
    ForEach-Object {
        if ($_.Value -match '(?i)powershell|mshta|curl|iex|-enc|http') {
            Write-Host "[-] CLICKFIX INDICATOR in Run dialog history: $($_.Value)" -ForegroundColor Red
        }
    }
}

Write-Host "`n[+] Assessment complete. Escalate any RED findings to IR immediately."

Remediation

1. Patch immediately. Apply the updated Siemens Software Center release referenced in the Siemens ProductCERT advisory for CVE-2026-110936. Siemens publishes security advisories through its ProductCERT portal — pull the advisory and fixed-version matrix directly from the vendor:

Given confirmed in-the-wild exploitation, treat this as an emergency change for any internet-adjacent or user-interactive workstation running Siemens software — do not wait for the next patch cycle. Monitor CISA KEV for inclusion; Siemens ICS advisories with active exploitation are routinely added, which would impose a BOD 22-01 remediation deadline for federal agencies and serve as a de facto deadline for everyone else.

2. Constrain the DLL search path where patching lags. As an interim mitigation on unpatched systems:

  • Enable SafeDllSearchMode (enabled by default, but verify it hasn't been disabled) and consider deploying the CWDIllegalInDllSearch registry value set to 2 to block DLL loads from the current working directory for network/USB-sourced paths
  • Audit NTFS permissions on all Siemens installation directories — standard users must not have write access. The ClickFix chain works because the staged payload runs in the user's context; if the user can't write to the search path, sideloading fails
  • Remove Siemens Software Center from devices that don't require it — every installation is attack surface

3. Blunt the ClickFix vector itself. This is the highest-leverage systemic fix:

  • Disable or restrict the Run dialog for non-admin users via GPO (Remove Run menu from Start Menu) — ClickFix is almost entirely dependent on Win+R. This single policy breaks the technique's primary delivery path
  • Block script interpreters for standard users via AppLocker/WDAC where operationally feasible, or at minimum constrain PowerShell with Constrained Language Mode for non-admins
  • Train users on the ClickFix pattern specifically. Generic phishing training does not cover "paste this into your Run dialog." Add a ClickFix scenario to your next awareness cycle — the tell is any website asking you to press Win+R or paste anything

4. Hunt before you assume you're clean. Because the sideloaded DLL persists across application restarts, patching alone does not evict an already-planted payload. Run the VQL sweep and the PowerShell assessment across all Siemens-bearing endpoints before declaring remediation complete. Any unsigned DLL in a Siemens path is an IR ticket, not a cleanup task.

5. Network-layer compensating controls. RATs need C2. Enforce egress filtering on engineering workstations (which should have tightly scoped internet access anyway), and alert on Siemens processes initiating outbound network connections — Siemens Software Center has a narrow, well-documented set of legitimate update endpoints. Anything else from that process tree is worth a second look.

The Bottom Line

CVE-2026-110936 is a reminder that "local-only" vulnerabilities become remote compromises the moment a social engineer supplies the delivery mechanism. ClickFix is prolific precisely because it converts the most reliable exploit in the industry — the user — into initial access. Patch Siemens Software Center now, restrict the Run dialog, verify no unsigned DLLs are already sitting in your Siemens directories, and treat engineering workstations as the high-value targets they are.

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.