Data Access · OPC Foundation

OPC Classic vs OPC UA Security

OPC (OLE for Process Control) is the dominant standard for ICS data exchange between SCADA servers, historians, and PLCs. OPC Classic (1996) is built on Windows DCOM/RPC — a complex, historically vulnerable middleware that introduces a large attack surface. OPC UA (Unified Architecture, 2006) replaced DCOM with a platform-independent stack and added TLS transport security and X.509 certificate authentication.

OPC Classic — DCOM Attack Surface

OPC Classic requires Windows DCOM (Distributed COM) which opens dynamic RPC ports (typically 1024–65535) in addition to port 135. This makes firewall policy nearly impossible to enforce at a protocol level. Known DCOM vulnerabilities include:

Industroyer/Crashoverride (Ukraine 2016) included an OPC DA (Data Access) module specifically to interact with OPC servers at power substation control networks.

OPC UA — Security Architecture

OPC UA uses a dedicated binary TCP protocol (port 4840) or HTTPS (port 443), eliminating DCOM entirely. Security is built into the specification:

FeatureOPC ClassicOPC UA
TransportDCOM/RPC (dynamic ports)Binary TCP (4840) or HTTPS (443)
AuthenticationWindows NTLM/KerberosX.509 certificates or username/password
EncryptionNone in protocolTLS 1.3 (Basic256Sha256 security policy)
Message signingNoYes — HMAC per message
PlatformWindows onlyCross-platform

OPC UA Security Modes

Warning: Many OPC UA servers are deployed in None security mode with anonymous access enabled — providing no security improvement over OPC Classic despite the protocol's capabilities.

Defences

ControlSRAction
Migrate to OPC UASR 3.1Eliminate DCOM attack surface entirely
Enforce SignAndEncryptSR 4.1TLS + message signing on all UA sessions
Certificate managementSR 1.8PKI with short-lived certificates, CRL enforcement
Firewall port 4840SR 5.2Allow only SCADA server IPs to reach UA port
⚡ Explore OPC in ICSora Labs

Compare OPC Classic DCOM architecture against OPC UA's security stack and simulate the DCOM exploitation path used in Industroyer.

Open OPC Protocol Lab →