Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable authentication bypass with no privileges or interaction (PR:N/UI:N), but AC:H reflects the non-default HAVE_RPK build and un-negotiated-type precondition; impact is integrity-only (I:H, C:N/A:N).
Primary rating from Vendor (wolfSSL).
CVSS VectorVendor: wolfSSL
Lifecycle Timeline
2DescriptionCVE.org
Un-negotiated Raw Public Key (RFC 7250) accepted in place of an X.509 certificate, bypassing chain validation. A raw public key has no chain, so ParseCertRelative() accepts it without performing any trust verification; it must therefore only be accepted when RPK was actually negotiated for that peer. The check now defaults the expected type to X.509 (per RFC 7250/8446) when no type was negotiated, comparing against the received server certificate type on the client and the selected client certificate type on the server, and rejects any mismatch, including an un-negotiated raw public key, with UNSUPPORTED_CERTIFICATE. Only affects builds with Raw Public Key support (HAVE_RPK) enabled - disabled by default in a standalone build, but included in --enable-all.
AnalysisAI
Certificate validation bypass in wolfSSL (builds compiled with HAVE_RPK) allows a peer to present an un-negotiated Raw Public Key (RFC 7250) in place of a full X.509 certificate, defeating chain-of-trust validation. Because a raw public key carries no certificate chain, ParseCertRelative() accepts it without performing any trust verification, so an attacker presenting a bare key can impersonate a server (or client) when neither side actually negotiated the RPK certificate type. No public exploit identified at time of analysis and the issue is not in CISA KEV; the high CVSS (8.2, CVSS 4.0) reflects a full authentication/integrity bypass, but exploitation is gated by the non-default HAVE_RPK build option.
Technical ContextAI
wolfSSL is a compact embedded/IoT TLS library; the affected component is its TLS certificate-message processing in src/internal.c. The root cause is CWE-295 (Improper Certificate Validation): RFC 7250 Raw Public Keys allow a peer to send only a SubjectPublicKeyInfo blob instead of an X.509 chain, and RFC 8446/7250 require both sides to explicitly negotiate the server_certificate_type / client_certificate_type extensions before an RPK may be used. wolfSSL only enforced the type match when a count of negotiated RPK types was exactly 1, leaving the no-negotiation case unguarded - so a received raw key (dCert->isRPK) slipped past trust validation, since an RPK has no chain for ParseCertRelative() to verify. The fix defaults the expected certificate type to X.509 (cType = WOLFSSL_CERT_TYPE_X509) whenever nothing was negotiated, compares it against the received server cert type on the client and the selected client cert type on the server, and rejects any mismatch - including an un-negotiated bare key - with UNSUPPORTED_CERTIFICATE. The CPE cpe:2.3:a:wolfssl:wolfssl:*:*:*:*:*:*:*:* identifies the affected product.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the change from wolfSSL pull request https://github.com/wolfSSL/wolfssl/pull/10702 and consult https://www.wolfssl.com/docs/security-vulnerabilities/ for the tagged release that contains it, then upgrade to that version. As an immediate compensating control if you cannot patch, rebuild wolfSSL without HAVE_RPK (omit --enable-all and do not enable RPK) since the vulnerability only affects RPK-enabled builds; the trade-off is loss of RFC 7250 Raw Public Key functionality for any peer that legitimately relies on it. Where RPK must remain enabled, ensure peer authentication is additionally enforced at the application layer (e.g. pin expected server public keys / certificate types) until the patched build is deployed, accepting the operational overhead of explicit pinning. Note the same PR also hardens several adjacent checks (BIO negative-length handling, intermediate-CA keyCertSign enforcement, degenerate PKCS#7 verification, and TLS 1.3 post-handshake-auth certificate requirements), so taking the full patched release is preferable to cherry-picking only the RPK change.
wolfSSL prior to version 3.12.2 provides a weak Bleichenbacher oracle when any TLS cipher suite using RSA key exchange i
A specially crafted x509 certificate can cause a single out of bounds byte overwrite in wolfSSL through 3.10.2 resulting
wolfSSL (formerly CyaSSL) before 3.6.8 allows remote attackers to cause a denial of service (resource consumption or tra
In wolfSSL before 5.5.1, malicious clients can cause a buffer overflow during a TLS 1.3 handshake. Rated high severity (
An issue was discovered in wolfSSL before 5.5.0. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita
wolfSSL 4.3.0 has mulmod code in wc_ecc_mulmod_ex in ecc.c that does not properly resist timing side-channel attacks. Ra
In wolfSSL 4.1.0 through 4.2.0c, there are missing sanity checks of memory accesses in parsing ASN.1 certificate data wh
An issue was discovered in wolfSSL before 4.5.0, when single precision is not employed. Rated high severity (CVSS 7.0).
wolfSSL before 4.5.0 mishandles TLS 1.3 server data in the WAIT_CERT_CR state, within SanityCheckTls13MsgReceived() in t
wolfSSL (formerly CyaSSL) before 3.6.8 does not properly handle faults associated with the Chinese Remainder Theorem (CR
An issue was discovered in wolfSSL before 5.5.0 (when --enable-session-ticket is used); however, only version 5.3.0 is e
wolfSSL 4.6.x through 4.7.x before 4.8.0 does not produce a failure outcome when the serial number in an OCSP request di
Same weakness CWE-295 – Improper Certificate Validation
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39545
GHSA-58fj-7xwc-45hq