VYPR
Medium severity5.6NVD Advisory· Published Jun 9, 2026

CVE-2026-6899

CVE-2026-6899

Description

S2OPC library's certificate revocation check incorrectly accepts revoked certificates by only considering the first CRL.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

S2OPC library's certificate revocation check incorrectly accepts revoked certificates by only considering the first CRL.

Vulnerability

The crt_verifycrl_and_check_revocation function within the S2OPC library's CycloneCrypto cryptographic wrapper incorrectly checks for certificate revocation. It only considers the first Certificate Revocation List (CRL) it finds for a given Certificate Authority (CA) and ignores any subsequent valid CRLs. This affects versions prior to the fix committed at a442f47200aaf3e58194b209e0738a4f9056393a [1].

Exploitation

An attacker could exploit this vulnerability by presenting a revoked certificate to an OPC UA client or server. The system, due to the flawed check, would fail to identify the revocation if a valid CRL indicating revocation appears after the first CRL that does not list the certificate as revoked. This could allow a client with a revoked certificate to establish or maintain a connection [1].

Impact

Successful exploitation allows an attacker to connect to an OPC UA server or client using a certificate that should have been revoked. This bypasses security controls, potentially leading to unauthorized access or actions, as the connection is established despite the certificate's revoked status [1].

Mitigation

A fix has been implemented by updating the crt_verifycrl_and_check_revocation function to iterate through all valid CRLs associated with a CA, ensuring a certificate is rejected if any CRL indicates its revocation. The specific commit addressing this is a442f47200aaf3e58194b209e0738a4f9056393a [1]. No information on specific patched versions or EOL status is available in the provided references.

AI Insight generated on Jun 9, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

2
  • Systerel/S2opcreferences2 versions
    (expand)+ 1 more
    • (no CPE)
    • (no CPE)

Patches

0

No patches discovered yet.

Vulnerability mechanics

Root cause

"The certificate revocation check incorrectly stops after the first matching CRL, ignoring subsequent valid CRLs."

Attack vector

An attacker can exploit this vulnerability by using a revoked certificate. The S2OPC library's cryptographic wrapper, CycloneCrypto, will only check against the first Certificate Revocation List (CRL) it finds. If this first CRL does not list the certificate as revoked, but a subsequent, valid CRL for the same Certificate Authority (CA) does, the server will incorrectly accept the connection. This allows a revoked certificate to be accepted, potentially leading to unauthorized access [ref_id=1].

Affected code

The vulnerability resides in the `crt_verifycrl_and_check_revocation` function within the CycloneCrypto cryptographic wrapper of the S2OPC library. This function is responsible for verifying certificate validity against CRLs. The issue stems from its behavior of only considering the first matching CRL, rather than evaluating all available CRLs for a given CA [ref_id=1].

What the fix does

The fix modifies the `crt_verifycrl_and_check_revocation` function to iterate through all valid CRLs associated with a given CA. Previously, it would stop after the first match. The updated logic ensures that a certificate is only accepted if none of the CRLs indicate it has been revoked. If any CRL flags the certificate as revoked, the connection will be rejected, thereby addressing the security impact [ref_id=1].

Preconditions

  • configThe S2OPC library must be configured to use certificate revocation checks.
  • inputA certificate that has been revoked by a Certificate Authority (CA) but is not listed in the first CRL encountered by the S2OPC library.

Reproduction

The test `push_server_revoke` is identified as a reproducer. The steps involve starting a push server, connecting two clients (A and B), and then revoking the certificate of client B. If the vulnerability is present, client B's connection should be closed but it remains activated, indicating the revoked certificate was not properly rejected [ref_id=1].

Generated on Jun 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

News mentions

0

No linked articles in our index yet.