HIGH 7.5

CVE-2026-55960: wolfSSL Raw Public Key Bypass – Certificate Validation Vulnerability

CVE-2026-55960 is a certificate validation bypass vulnerability in wolfSSL that allows an attacker to present a raw public key as a valid certificate even when raw public keys were never negotiated with the peer. Normally, raw public keys have no chain of trust and should only be accepted in TLS connections where both sides explicitly agreed to use them. This vulnerability bypasses that check, potentially allowing an attacker to impersonate a legitimate server or client. The flaw only affects wolfSSL builds compiled with Raw Public Key (RPK) support enabled, which is off by default in standard builds but included when using the --enable-all compilation flag.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weaknesses (CWE)
CWE-295
Affected products
1 configuration(s)
Published / Modified
2026-06-25 / 2026-06-26

NVD description (verbatim)

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.

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability stems from improper certificate type negotiation in wolfSSL's TLS implementation. During TLS handshake, the server and client should negotiate which certificate format to use: X.509 certificates (standard) or Raw Public Keys (RFC 7250). The function ParseCertRelative() was accepting raw public keys without verifying that RPK negotiation had actually occurred. An attacker could send a raw public key during a connection where X.509 was the negotiated (or default) type, and the parser would accept it without performing chain validation—which raw public keys inherently lack. The fix implements strict type checking: when no certificate type was explicitly negotiated, the implementation now defaults to X.509 per RFC 7250 and RFC 8446 specifications, and rejects any mismatch—including unexpected raw public keys—with an UNSUPPORTED_CERTIFICATE alert.

Business impact

This vulnerability allows attackers to bypass TLS mutual authentication controls, potentially enabling man-in-the-middle attacks, credential spoofing, or unauthorized access to systems relying on wolfSSL for secure communications. Organizations using wolfSSL in IoT devices, embedded systems, or constrained environments may be particularly exposed if they compiled with RPK support enabled. The impact depends on threat model: in scenarios where certificate validation is critical (financial services, critical infrastructure), this could lead to unauthorized transaction approval or system compromise. In other deployments, the risk is lower if network-level controls or application-layer authentication provide defense-in-depth.

Affected systems

Any wolfSSL installation compiled with Raw Public Key support enabled (HAVE_RPK flag set) is affected. This includes systems built with the --enable-all configuration flag. The vulnerability does not affect standard wolfSSL builds, which have RPK support disabled by default. End users and organizations should verify their wolfSSL compilation flags by checking build configuration or contacting their vendor/supplier if wolfSSL is bundled in a third-party product.

Exploitability

This vulnerability has a network attack vector with low complexity and no authentication or user interaction required, making it exploitable by a remote unauthenticated attacker. However, exploitation is practical only in environments where: (1) wolfSSL is compiled with RPK support, (2) the attacker can perform network-level interception or DNS/BGP manipulation, and (3) the application does not implement additional certificate pinning or validation outside the TLS stack. Public exploit code is not known to exist at this time, and the vulnerability is not tracked in CISA's Known Exploited Vulnerabilities catalog.

Remediation

Organizations using wolfSSL must apply the patch that implements certificate type validation as described in the vulnerability details. For most users operating standard wolfSSL builds, no immediate action is required since RPK support is disabled by default. However, organizations should: (1) inventory builds to identify any compiled with HAVE_RPK enabled, (2) prioritize patching those builds, and (3) review whether raw public key support is actually necessary for their use cases—disabling it at compile time further reduces attack surface.

Patch guidance

Apply the security update from wolfSSL that adds certificate type negotiation validation. Users should verify the patch version against the official wolfSSL advisory or release notes, as specific version numbers should be confirmed directly from the vendor. After patching, recompile any embedded or statically-linked instances of wolfSSL in your products. If RPK support is not required for your application, consider disabling the HAVE_RPK flag at compile time to eliminate the vulnerability class entirely. Test patched versions in a staging environment before production rollout, particularly in systems where certificate-based authentication is security-critical.

Detection guidance

Monitor for TLS handshake anomalies: log UNSUPPORTED_CERTIFICATE alerts (alert code 43) which would indicate the patch is active and rejecting invalid certificate types. In unpatched systems, look for raw public keys being accepted in connections where X.509 was negotiated—this may appear in certificate logging or detailed TLS debugging. Network-level detection is difficult without TLS interception; consider enabling verbose logging in wolfSSL (if operationally acceptable) during high-risk transactions. Most importantly, verify that your wolfSSL binaries were built without RPK support via build artifact inspection or configuration review.

Why prioritize this

While the CVSS score is 7.5 (HIGH), real-world risk depends heavily on deployment context. Prioritize patching if you: (1) compiled wolfSSL with --enable-all or explicitly enabled HAVE_RPK, (2) operate in security-sensitive verticals (finance, healthcare, critical infrastructure), or (3) face advanced persistent threat actors. Lower priority for standard builds or development/testing environments. The lack of KEV inclusion and public exploits suggests this is not yet actively exploited in the wild, providing a window for measured patching.

Risk score, explained

The CVSS 3.1 score of 7.5 reflects high integrity impact (attacker can spoof authentication) over a network with no prerequisites, but the scope is unchanged (only TLS authentication affected, not system-wide). The actual operational risk is lower than the base score suggests because: exploitation requires RPK compilation flag to be set (most distributions disable it), the patch is straightforward, and there is no known public exploitation. Security leaders should weight this as a moderate-priority vulnerability to patch within standard update cycles, not an emergency—unless operating unpatched RPK-enabled builds in high-trust environments.

Frequently asked questions

Do I need to patch if I'm using standard, off-the-shelf wolfSSL?

Most likely no. The default wolfSSL build has Raw Public Key support disabled. Patching is critical only if you or your vendor explicitly compiled with --enable-all or set HAVE_RPK during the build. Check your build configuration or contact your vendor.

What is a Raw Public Key, and why would we negotiate it?

Raw Public Keys (RFC 7250) are an alternative to X.509 certificates for constrained IoT and embedded systems where certificate chain validation overhead is unacceptable. Peers must explicitly negotiate RPK support during the TLS handshake. This vulnerability allows raw keys to be accepted even when negotiation never happened, defeating that safety gate.

If an attacker sends a raw public key, what exactly can they impersonate?

In a TLS connection where X.509 was negotiated or assumed, an attacker with network-level access (MITM) could present a raw public key of their own choosing. The vulnerable code would accept it, allowing the attacker to impersonate the legitimate server or client without possessing a valid certificate signed by a trusted CA.

Does patching require recompilation of my application?

If wolfSSL is statically linked or embedded in your application, yes—you must recompile with the patched wolfSSL library. If your application links against a shared wolfSSL library, updating the system library may suffice, but always verify against your vendor's specific guidance.

This analysis is for informational purposes and reflects the state of public vulnerability information as of the publication date. Specific patch versions, affected product versions, and detailed remediation steps should be verified against the official wolfSSL security advisory and release notes. SEC.co makes no warranty regarding the completeness or accuracy of derivative data beyond the authoritative source. Organizations should conduct their own risk assessment based on their specific wolfSSL deployment, compilation flags, and threat model. This content does not constitute legal or compliance advice. Source: NVD (public-domain), retrieved 2026-08-04. Analysis generated by SEC.co (claude-haiku-4-5).