Description
Under WOLFSSL_SMALL_CERT_VERIFY, ProcessPeerCertParse() runs the certificate signature check separately from the parse to keep peak memory down, then merges the two results, but it merged the signature result back only when the parse returned 0, so any parse error hid it. ParseCertRelative() reaches its validity-date, name-constraint and critical-extension checks only after ConfirmSignature() has passed, so splitting the signature check out inverts the precedence that makes "override date errors" a sound policy, and ASN_SIG_CONFIRM_E is never surfaced anywhere. The attacker needs no key material from the real PKI and no CA compromise: a self-made certificate carrying the expected subject name, the trusted CA's subject as its issuer, arbitrary bytes where the signature goes, a validity window in the past and the attacker's own key pair is sufficient. Affected builds define WOLFSSL_SMALL_CERT_VERIFY, which is off by default, is not set implicitly by any platform or preset header, and is not reachable from any CMake option; the autotools routes are --enable-lowresource, --enable-leantls, --enable-tinytls13=cert and --enable-tinytls13=mutualauth, and examples/configs/user_settings_embedded.h reaches it through WC_CFG_SMALL_CERT_VERIFY, which ships as 0, while neither --enable-all nor --enable-distro enables it at all. The application must additionally install a verify callback through wolfSSL_CTX_set_verify() or wolfSSL_set_verify() with WOLFSSL_VERIFY_PEER that returns 1 for ASN_BEFORE_DATE_E or ASN_AFTER_DATE_E; wolfSSL ships this exact shape as myVerify() in wolfssl/test.h under VERIFY_OVERRIDE_DATE_ERR, which examples/client -D selects. An application with no callback, or whose callback returns preverify for date errors, still fails the handshake, and wolfSSL_CertManagerVerifyBuffer() and wc_CheckCertSignature() report ASN_SIG_CONFIRM_E correctly in the same binary. TLS 1.2 and TLS 1.3 are affected in both directions, and DTLS reaches the same function; where the forged certificate is a chain certificate the callback's consent causes it to be cached in the WOLFSSL_CTX certificate manager, so an exposed deployment must restart the context or the process rather than merely reconnect.
Published: 2026-09-27
Score: 2.3 Low
EPSS: < 1% Very Low
KEV: No
Impact: Certificate authentication bypass potentially enabling impersonation
Action: Patch
AI Analysis

Impact

The vulnerability originates from the WOLFSSL_SMALL_CERT_VERIFY feature in wolfSSL, which separates certificate signature verification from parsing to reduce peak memory usage. The library merges the two results, but mistakenly ignores a signature‑verification failure when the parsing step fails. Consequently a certificate that would normally fail signature validation can slip through if a parse error, such as an invalid date, occurs. This flaw allows an attacker to craft a self‑signed certificate that lists the trusted CA as the issuer, inserts arbitrary bytes into the signature field, and sets a validity window in the past. With a permissive verify callback that treats date errors as acceptable, the forged certificate can be accepted, effectively bypassing peer authentication.

Affected Systems

The flaw affects any installation of the wolfSSL library in which the WOLFSSL_SMALL_CERT_VERIFY option is enabled. The option is off by default and not enabled through standard CMake configurations, but it can be activated through autotools flags or by defining WC_CFG_SMALL_CERT_VERIFY in the user settings header. Applications that link to such builds and employ a verify callback that allows date errors (for example, using the VERIFY_OVERRIDE_DATE_ERR implementation) are susceptible. The problem exists in wolfSSL’s TLS 1.2, TLS 1.3, and DTLS implementations for both client and server peer verification.

Risk and Exploitability

The CVSS score of 2.3 indicates low severity, and the vulnerability is not listed in CISA’s KEV catalogue. EPSS is currently not available, so no quantitative exploitation likelihood is provided. Despite its low score, the flaw does not require access to private keys or a compromised certificate authority. An attacker can simply generate a forged certificate with the trusted CA’s subject as the issuer, an invalid signature placeholder, and an expired validity period. If an application accepts such a certificate because its verification callback treats date errors as successful, the attacker can impersonate the peer or perform a man‑in‑the‑middle attack. The risk is therefore highly dependent on the deployment’s configuration—enabling the flag or allowing permissive date handling increases exposure, while disabling the flag or enforcing strict signature checks mitigates the threat.

Generated by OpenCVE AI on September 27, 2026 at 10:52 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Disable the WOLFSSL_SMALL_CERT_VERIFY compile flag or remove the WC_CFG_SMALL_CERT_VERIFY definition from configuration headers.
  • Ensure the application’s verify callback strictly validates signature errors; do not allow ASN_BEFORE_DATE_E or ASN_AFTER_DATE_E to be treated as success.
  • Update the wolfSSL library to the latest release that addresses this issue, or apply the patch referenced in the advisory to correct the result merging logic.

Generated by OpenCVE AI on September 27, 2026 at 10:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 02 Oct 2026 19:15:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:wolfssl:wolfssl:*:*:*:*:*:*:*:*
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N'}


Tue, 29 Sep 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Sun, 27 Sep 2026 11:00:00 +0000

Type Values Removed Values Added
First Time appeared Wolfssl
Wolfssl wolfssl
Vendors & Products Wolfssl
Wolfssl wolfssl

Sun, 27 Sep 2026 09:00:00 +0000

Type Values Removed Values Added
Description Under WOLFSSL_SMALL_CERT_VERIFY, ProcessPeerCertParse() runs the certificate signature check separately from the parse to keep peak memory down, then merges the two results, but it merged the signature result back only when the parse returned 0, so any parse error hid it. ParseCertRelative() reaches its validity-date, name-constraint and critical-extension checks only after ConfirmSignature() has passed, so splitting the signature check out inverts the precedence that makes "override date errors" a sound policy, and ASN_SIG_CONFIRM_E is never surfaced anywhere. The attacker needs no key material from the real PKI and no CA compromise: a self-made certificate carrying the expected subject name, the trusted CA's subject as its issuer, arbitrary bytes where the signature goes, a validity window in the past and the attacker's own key pair is sufficient. Affected builds define WOLFSSL_SMALL_CERT_VERIFY, which is off by default, is not set implicitly by any platform or preset header, and is not reachable from any CMake option; the autotools routes are --enable-lowresource, --enable-leantls, --enable-tinytls13=cert and --enable-tinytls13=mutualauth, and examples/configs/user_settings_embedded.h reaches it through WC_CFG_SMALL_CERT_VERIFY, which ships as 0, while neither --enable-all nor --enable-distro enables it at all. The application must additionally install a verify callback through wolfSSL_CTX_set_verify() or wolfSSL_set_verify() with WOLFSSL_VERIFY_PEER that returns 1 for ASN_BEFORE_DATE_E or ASN_AFTER_DATE_E; wolfSSL ships this exact shape as myVerify() in wolfssl/test.h under VERIFY_OVERRIDE_DATE_ERR, which examples/client -D selects. An application with no callback, or whose callback returns preverify for date errors, still fails the handshake, and wolfSSL_CertManagerVerifyBuffer() and wc_CheckCertSignature() report ASN_SIG_CONFIRM_E correctly in the same binary. TLS 1.2 and TLS 1.3 are affected in both directions, and DTLS reaches the same function; where the forged certificate is a chain certificate the callback's consent causes it to be cached in the WOLFSSL_CTX certificate manager, so an exposed deployment must restart the context or the process rather than merely reconnect.
Title Signature failure masked by date error under WOLFSSL_SMALL_CERT_VERIFY
Weaknesses CWE-347
References
Metrics cvssV4_0

{'score': 2.3, 'vector': 'CVSS:4.0/AV:A/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: wolfSSL

Published:

Updated: 2026-09-29T16:45:58.115Z

Reserved: 2026-09-21T15:16:43.917Z

Link: CVE-2026-94418

cve-icon Vulnrichment

Updated: 2026-09-29T16:45:46.327Z

cve-icon NVD

Status : Analyzed

Published: 2026-09-27T09:16:36.260

Modified: 2026-10-02T18:59:27.017

Link: CVE-2026-94418

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-27T11:00:12Z

Weaknesses
  • CWE-347

    Improper Verification of Cryptographic Signature