CISA published ICSA-26-295-10 for Siemens' .NET Client Library for the SIMATIC S7 Webserver API. The advisory covers CVE-2026-85114 and CVE-2026-85115, rated CVSS v3 7.5, with weakness classes that matter in OT environments: improper limitation of a pathname to a restricted directory, commonly path traversal, and generation of error messages containing sensitive information. In practical terms, a vulnerable client application can be induced to write files outside its intended download directory or disclose sensitive details through verbose errors.
This is not a PLC firmware issue and it is not permission to patch S7 CPUs blindly during production. The risk sits in the .NET client-side integration layer: engineering tools, historians, custom dashboards, file-transfer utilities, and Windows services that use Siemens' library to speak to SIMATIC S7 webserver interfaces. If your organization has .NET applications that download files from S7 webserver endpoints, treat this as a high-priority exposure until the library version is verified and remediated. CISA's advisory does not state confirmed in-the-wild exploitation, public PoC, or KEV inclusion in the supplied summary; the correct posture is urgent vulnerability management plus targeted hunting, not panic.
Technical Analysis
Affected component: .NET Client Library for SIMATIC S7 Webserver API. The CISA summary lists affected version ranges as versions below 3.3.61 and below 3.3.62 for CVE-2026-85114 and CVE-2026-85115. Because CSAF version-range notation can be unintuitive, operational rule: any installed copy that is not explicitly verified against Siemens' current fixed release should be treated as suspect until inventory proves otherwise.
CVE identifiers and severity:
- CVE-2026-85114 — CVSS v3 7.5. Associated in the advisory summary with arbitrary file write outside the intended download directory through path traversal.
- CVE-2026-85115 — CVSS v3 7.5. Associated with sensitive information exposure through error messages generated by the vulnerable component.
Defender-relevant attack chain: the vulnerable code is client-side, but exploitation still requires an attacker-controlled or attacker-influenced server-side response, malicious endpoint, compromised intermediary, or poisoned content that causes the client library to process unsafe path data or emit sensitive diagnostics. The library is used by .NET software to interact with the SIMATIC S7 webserver API; if that software downloads files, writes logs, caches artifacts, or surfaces errors to operators, the vulnerable parsing path becomes an impact point. A path traversal flaw in a download client is dangerous because the exploit primitive is not code execution on the PLC; it is file placement on the Windows or Linux host running the client. That can overwrite application configuration, plant-support scripts, startup items where permissions allow, historian export locations, or operator workstation files.
The sensitive-information issue is equally relevant in OT. Error messages can reveal filesystem paths, usernames, internal hostnames, firmware/build details, tokens, request structure, or network topology. In S7 environments, those details shorten reconnaissance and make follow-on targeting of engineering workstations and jump hosts more precise.
Exploitation status: based only on the supplied CISA summary, there is no confirmed active exploitation, no named malware campaign, and no statement that the CVEs are in CISA KEV. Do not wait for exploitation evidence. CVSS 7.5 plus arbitrary file write plus OT adjacency is enough to drive same-week inventory and remediation in most environments, and faster where client apps are reachable from less-trusted networks.
Detection and Response
These detections are intentionally behavior-based because the advisory provides no file hashes, malicious domains, or exploit IoCs. Before enabling at scale, build an allowlist of approved S7 client applications, their install paths, expected download directories, and the OT subnets or hostnames they are allowed to reach. If you cannot define those four things, your first detection problem is actually an inventory problem.
---
title: DOTNET Client Path Traversal File Write Outside Download Directory
id: 8b4e7a11-6c2f-4c5a-9f1c-2a7d8e9f0011
status: experimental
description: Detects .NET or application processes creating files using traversal sequences outside approved download locations, consistent with CVE-2026-85114 impact in a client library.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-295-10
- https://attack.mitre.org/techniques/T1203/
author: Security Arsenal
date: 2026/01/15
tags:
- attack.execution
- attack.t1203
logsource:
category: file_event
product: windows
detection:
selection_traversal:
TargetFilename|contains:
- '..\\'
- '../'
- '%2e%2e'
- '%252e%252e'
selection_runtime:
Image|endswith:
- '\\dotnet.exe'
- '\\w3wp.exe'
- '\\powershell.exe'
- '\\pwsh.exe'
filter_approved_paths:
TargetFilename|startswith:
- 'C:\\Program Files\\Siemens\\'
- 'C:\\OT-Downloads\\'
- 'D:\\S7-Downloads\\'
condition: selection_traversal and selection_runtime and not filter_approved_paths
falsepositives:
- Legitimate installers, updaters, backup agents, and document processing; replace the approved paths with environment-specific download directories.
level: high
---
title: Encoded Traversal or Sensitive Error Strings in Web Logs Toward OT Assets
id: 6f1d9c44-8a20-4c30-b91a-7c6d2e5f0022
status: experimental
description: Detects HTTP request or proxy telemetry containing traversal sequences or verbose error disclosure headed toward identified SIMATIC S7 webserver or OT gateway addresses.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-295-10
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/01/15
tags:
- attack.initial_access
- attack.t1190
logsource:
category: webserver
detection:
selection_uri:
cs-uri-query|contains:
- '../'
- '..\\'
- '%2e%2e%2f'
- '%2e%2e/'
- '%252e%252e'
sc-status:
- 400
- 500
selection_body:
cs-bytes|gt: 0
condition: selection_uri or selection_body
falsepositives:
- Vulnerability scanners and broken application routing; scope to OT webserver hosts and alert only on repeated patterns or paths tied to download endpoints.
level: medium
// Hunt 1: file writes with traversal semantics outside approved download roots
let approved_roots = dynamic(['C:\\OT-Downloads\\','D:\\S7-Downloads\\']);
DeviceFileEvents
| where TimeGenerated > ago(14d)
| where FileName contains '..' or FolderPath contains '..\\' or FolderPath contains '../'
| where not(FolderPath has_any (approved_roots))
| project TimeGenerated, DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, FolderPath, FileName, SHA256
| order by TimeGenerated desc;
// Hunt 2: web/proxy/syslog telemetry with traversal or server-error disclosure toward OT hosts
let ot_hosts = dynamic(['s7-web','plc','simatic','10.10.0.0/16']);
union isfuzzy=true (CommonSecurityLog, Syslog)
| where TimeGenerated > ago(14d)
| extend msg = coalesce(Message, AdditionalExtensions, Computer)
| where msg has_any ('../','..\\','%2e%2e','%252e%252e','stack trace','exception','Internal Server Error')
| where msg has_any (ot_hosts) or DestinationIP has_any ('10.10.','172.16.','192.168.')
| project TimeGenerated, Computer, SourceIP, DestinationIP, DestinationPort, Message
| order by TimeGenerated desc;
// Hunt 3: unexpected client processes connecting to likely S7 webserver ports from workstation VLANs
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemotePort in (80,443,8080)
| where RemoteIP has_any ('10.10.','172.16.','192.168.')
| where InitiatingProcessFileName in~ ('dotnet.exe','w3wp.exe','powershell.exe','pwsh.exe') or InitiatingProcessCommandLine has_any ('s7','simatic','webserver','download')
| summarize Connections=count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), RemoteIPs=make_set(RemoteIP), Ports=make_set(RemotePort) by DeviceName, InitiatingProcessFileName, InitiatingProcessAccountName
| order by Connections desc;
-- Hunt workstations and jump hosts for traversal-style writes plus network reachability to OT web endpoints
SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE CommandLine =~ '(?i)(s7|simatic|webserver|download)'
OR Exe =~ '(?i)(dotnet|w3wp|powershell|pwsh)'
SELECT Time=uint(epoch=now()), FullPath, Size, ModTime
FROM glob(globs='C:/**', accessor='ntfs')
WHERE FullPath =~ '(?i)(\.\.|%2e%2e)' AND NOT FullPath =~ '(?i)^C:\\(OT-Downloads|Program Files\\Siemens)\\'
LIMIT 200
SELECT Pid, Name, LocalAddr, LocalPort, RemoteAddr, RemotePort, Status
FROM netstat()
WHERE RemotePort in (80,443,8080)
AND (RemoteAddr =~ '^(10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)')
# Inventory likely affected .NET client library usage without changing OT state
$roots = @('C:\Program Files','C:\Program Files (x86)','C:\inetpub','D:\','C:\Users')
$hits = foreach ($root in $roots) {
if (Test-Path $root) {
Get-ChildItem $root -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Name -match 's7|simatic|webserver|siemens' -or $_.Extension -in '.dll','.exe' } |
ForEach-Object {
$v = $_.VersionInfo
[pscustomobject]@{
Host=$env:COMPUTERNAME; Path=$_.FullName; Product=$v.ProductName; Company=$v.CompanyName;
FileVersion=$v.FileVersion; ProductVersion=$v.ProductVersion; LastWrite=$_.LastWriteTime
}
}
}
}
$hits | Where-Object { $_.Company -match 'Siemens' -or $_.Product -match 'SIMATIC|S7|Webserver' } | Export-Csv C:\s7_client_inventory.csv -NoTypeInformation
# Flag package references and assembly versions below the CISA-listed ranges
Get-ChildItem C:\,D:\ -Recurse -Filter packages.config -ErrorAction SilentlyContinue | Select-String -Pattern 'SIMATIC|S7|Webserver' -List | Select-Object Path,Line
Get-ChildItem C:\,D:\ -Recurse -Filter *.csproj -ErrorAction SilentlyContinue | Select-String -Pattern 'PackageReference|SIMATIC|S7|Webserver' -List | Select-Object Path,Line
# Hard blast radius on known download directories: deny writes except for the service account
$svc = 'DOMAIN\svc-s7client'
$dir = 'D:\S7-Downloads'
if (Test-Path $dir) { icacls $dir /inheritance:r /grant:r ('{0}:(OI)(CI)M' -f $svc) /deny 'Users:(OI)(CI)W' }
Remediation
- Inventory first. Find every .NET application, service, IIS app pool, scheduled task, historian connector, and engineering workstation utility that references Siemens, SIMATIC, S7, or Webserver API. Export installed assembly versions and NuGet/package references before patching.
- Update the .NET Client Library for SIMATIC S7 Webserver API to Siemens' current fixed release. Do not assume a version is safe because it is newer than one listed range; verify against the vendor CSAF/ProductCERT entry for ICSA-26-295-10. CISA advisory: https://www.cisa.gov/news-events/ics-advisories/icsa-26-295-10.
- Constrain file-write impact. Enforce canonical-path validation, block traversal sequences server- and client-side, pin downloads to a dedicated low-privilege directory, disable inheritable broad write rights, and run client services under a non-admin gMSA/service account. If arbitrary file write is the primitive, directory ACLs are your compensating control.
- Reduce information leakage. Disable detailed errors in production, strip stack traces from operator-facing logs, move diagnostics to authenticated local storage, and ensure logs do not capture tokens, internal paths, PLC hostnames, or request payloads.
- Segment and egress-control. Only approved S7 client hosts should reach S7 webserver interfaces on TCP 80/443/8080 or vendor-defined endpoints. Deny workstation browsing to OT web interfaces except through a jump host with logging.
- Validate after update. Regression-test downloads, error handling, and logging in a staging S7 environment; then monitor for 14 days using the hunts above. Preserve forensic copies of old assemblies and application logs before cleanup.
- Change-control discipline for OT. Coordinate with operations, but do not let production uptime become indefinite exposure. If patching must wait, apply ACL lockdown, network allowlisting, and error suppression immediately and document the residual risk.
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.