Skip to main content

Apache PLC4X CVE-2026-102508

| EUVDEUVD-2026-89674 CRITICAL
Improper Verification of Cryptographic Signature (CWE-347)
2026-09-30 apache GHSA-f4cq-mfh7-4385
9.2
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain on-path position on OT network
  2. Delivery
    Intercept OPC UA GetEndpoints/handshake
  3. Exploit
    Substitute attacker server certificate
  4. Execution
    Client encrypts credentials to attacker
  5. Impact
    Forge signatures and modify secure-channel traffic

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Requires the application to use the OPC UA driver of Apache PLC4X (PLC4J) at versions 0.9.0 through 0.13.1, and the attacker must hold a man-in-the-middle network position between the OPC UA client and server (the AT:P attack requirement). Exploitation is aided by insecure defaults rather than misconfiguration: the default security policy is None across all affected versions; from 0.12.0 the driver silently downgrades to a weaker-than-configured security policy; and from 0.13.0 endpoint selection prefers the weakest matching endpoint. Critically, even operators who explicitly enabled signing/encryption remain exposed because 0.9.0-0.11.0 only log failed signature checks while 0.12.0-0.13.1 invert the check (rejecting valid, accepting invalid) and accept server certificates with no trust anchor. The limiting factors are the required on-path position and that the fully-fixed behavior only exists in 1.0.0.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H) scores 9.2 (Critical), reflecting an unauthenticated network attacker who can fully compromise confidentiality, integrity and availability of the OPC UA secure channel. The single meaningful brake is AT:P - the attacker must already hold a man-in-the-middle position between the PLC4X client and the OPC UA server, which is a real precondition rather than a trivial one. No EPSS score, no CISA KEV listing, and no public exploit code were supplied, so exploitation status is: no public exploit identified at time of analysis. This is a genuine priority for OT/ICS environments despite the missing exploitation telemetry, because the flaw defeats exactly the cryptographic protections operators believe they have enabled and directly harvests user credentials; the version-dependent behavior (inverted signature check in 0.12.0-0.13.1) is particularly insidious because it silently converts a security control into an anti-control. The residual limiter is the on-path requirement - on a flat, unauthenticated OT segment (common for PLC traffic) that requirement is weak, but across routed/segmented networks it is a substantial barrier. Reported by Apache directly, so the affected-version range and fix are authoritative.

Exploit ScenarioDerived

An attacker who has gained a foothold on the OT/industrial LAN carrying PLC4X-to-OPC-UA traffic (e.g., via ARP spoofing or a compromised switch) positions themselves between the PLC4J client and the OPC UA server. They intercept the unauthenticated GetEndpoints discovery response and substitute their own certificate, so the client encrypts the operator password to the attacker; forged or invalid message signatures are either only logged (0.9.0-0.11.0) or actively accepted (0.12.0-0.13.1), letting the attacker impersonate the server and read, forge, or modify secure-channel traffic. No public proof-of-concept is identified, but the attack requires only a standard on-path toolkit.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 30, 2026

Man-in-the-middle attackers can impersonate the OPC UA server to Apache PLC4X (PLC4J) client applications and read, forge or modify secure-channel traffic - including the user credentials the client sends - affecting versions 0.9.0 through 0.13.1, with the fix landing in 1.0.0. Unauthenticated network attackers holding an on-path position (the AT:P requirement) benefit from insecure defaults: the security policy defaults to None in every affected release, 0.9.0-0.11.0 only log failed message-signature checks and never verify the server certificate taken from the unauthenticated GetEndpoints response, while 0.12.0-0.13.1 invert the signature check (rejecting valid signatures and accepting invalid ones) and accept server certificates with no trust anchor; from 0.12.0 the driver also silently continues at a weaker policy than configured, and from 0.13.0 endpoint selection prefers the weakest matching endpoint. Rated 9.2 (Critical) under CVSS 4.0 and high-severity under the independent CVSS 3.1 assessment (AV:N/AC:H/PR:N/UI:N/C:H/I:H/A:H); no public exploit code identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade Apache PLC4X to 1.0.0, which verifies message signatures correctly, refuses to connect unless the server certificate validates against a configured trust store or a pinned certificate, defaults to Basic256Sha256 with SignAndEncrypt, and aborts the connection when the negotiated security policy is weaker than the one configured. Deployments still on 0.9.0-0.11.0 cannot be made safe by enabling signing or encryption, because failed signature checks are only logged and the server certificate is never validated; versions 0.12.0-0.13.1 are likewise unreliable because the signature check is inverted, so upgrading is the only complete fix - see the advisory at https://lists.apache.org/thread.html/o076mcnsx6wnqpdy780m7s6hddbbnjfw. If immediate upgrade is impossible, compensating controls are limited and should be treated as risk reduction rather than a fix: explicitly configure a security policy and pin the expected server certificate so at least one verification path is enforced (partially effective only on 0.12.0-0.13.1, ineffective on 0.9.0-0.11.0, and it breaks connections if the server certificate rotates without updating the pin); explicitly set the endpoint and security policy rather than relying on discovery or automatic selection, since 0.13.0 prefers the weakest matching endpoint (side effect: legitimate servers offering only weaker endpoints will fail to connect); confine OPC UA traffic to a trusted, segmented network or tunnel it over a mutually authenticated transport such as TLS/IPsec or an SSH tunnel so an on-path attacker cannot reach the channel (this adds infrastructure and latency and does not protect traffic that is already exposed on flat industrial networks); and monitor client logs for signature-check failures, policy-downgrade notices, or unexpected GetEndpoints responses, while remembering that on 0.9.0-0.11.0 these events are logged without blocking the connection and should be treated as evidence of possible compromise requiring credential rotation.

Affected VersionsENISA

Apache PLC4X 0.9.0 <1.0.0

Affected Packages

euvd apache_plc4x fix: 1.0.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OPC UA is an industrial machine-to-machine protocol whose SecureChannel and Session layers rely on X.509 server certificates, trust anchors and application-message signatures to give clients confidentiality, integrity and server authentication. Apache PLC4X is a library for industrial protocols (PLC4J is the Java binding) and its OPC UA driver implements the client side of that handshake. The defect is rooted in CWE-347 (Improper Verification of Cryptographic Signature), compounded by improper certificate validation: in 0.9.0-0.11.0 a failed signature check is only written to the log rather than terminating the connection, and no mechanism exists to validate the server certificate, which is instead lifted from the unauthenticated GetEndpoints discovery response and then used to encrypt the user's password. In 0.12.0-0.13.1 the verification logic is inverted so valid signatures are rejected and invalid ones accepted, and certificates are accepted without a trust anchor. Across all affected releases the default security policy is None (no signing or encryption), 0.12.0 adds a silent downgrade to a policy weaker than the one configured, and 0.13.0 makes endpoint selection prefer the weakest matching endpoint. The CPE cpe:2.3:a:apache_software_foundation:apache_plc4x identifies the affected package. Because each version family fails in a different mechanism, an operator who confirms only one control (for example, that signing is configured) can wrongly conclude they are protected.

Know when Apache Plc4X gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (apache) PRIMARY 9.2 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

AC:H reflects the required man-in-the-middle on-path position; PR:N/UI:N as no auth or victim interaction is needed; C:H/I:H/A:H for credential theft plus forging and modifying control traffic.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 30, 2026 - 09:01 EUVD
CVE Published
Sep 30, 2026 - 07:42 cve.org
CRITICAL 9.2

DescriptionCVE.org

Improper Verification of Cryptographic Signature and Improper Certificate Validation in the OPC UA driver of Apache PLC4X (PLC4J) allows an attacker in a network position between client and server to impersonate the OPC UA server and to read, forge or modify secure-channel traffic, including user credential ssent by the client.

The defect manifests differently depending on the version:

  • In 0.9.0 through 0.11.0 a failed message-signature check is only logged and never enforced, and there is no mechanism to verify the server certificate: it is taken from the unauthenticated GetEndpoints discovery response and used to encrypt the user's password.
  • In 0.12.0 through 0.13.1 the signature check is inverted (valid signatures are rejected, invalid ones accepted), and server certificates are accepted without a trust anchor by default.
  • In all affected versions the default security policy is None. Starting with 0.12.0 the driver additionally continues silently at a weaker security policy than the one configured, and starting with 0.13.0 endpoint selection prefers the weakest matching endpoint.

Users checking only for one of these mechanisms may wrongly conclude they are unaffected.

This issue affects Apache PLC4X: from 0.9.0 before 1.0.0.

Users are recommended to upgrade to version 1.0.0, which fixes the issue. Version 1.0.0 verifies message signatures correctly, refuses to connect unless the server certificate can be verified against a configured trust store or pinned certificate, defaults to Basic256Sha256 with SignAndEncrypt, and fails the connection if the negotiated security policy is weaker than the configured one.

Executive ViewAI

Why It Matters

Apache PLC4X (PLC4J) client libraries, versions 0.9.0 through 0.13.1, can be impersonated by an attacker who holds a position on the network path, allowing that attacker to read, forge or alter OPC UA secure-channel traffic, including the user credentials the client sends to the server. Any organization using these libraries to bridge industrial control systems with monitoring or business applications should treat affected deployments as a credential-exposure and data-integrity risk that reaches both OT operations and the enterprise systems they feed. Because the libraries do not verify server identity securely by default, leadership should plan on a version upgrade to 1.0.0 rather than assuming a configuration change will close the gap.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: deny untrusted hosts any on-path position between PLC4J clients and OPC UA servers (dedicated VLANs/segments, IPsec or encrypted tunnels, strict ingress and egress filtering); rotate credentials, session secrets and certificates used by affected clients as they must be assumed exposed; enable centralized logging of OPC UA session and certificate-validation errors and alert on unexpected server endpoints; pin server certificates and enforce Basic256Sha256 or stronger policies where the release honours them, but do not treat configuration as remediation, because 0.12.0-0.13.1 can silently continue at a weaker policy than configured and endpoint selection can prefer the weakest matching endpoint; validate and deploy 1.0.0 as soon as the vendor confirms availability.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Low
niche Java library for industrial PLC/OPC UA integration, OT-specific footprint
Social Media
4
Sightings
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy