{"id":"CVE-2026-11310","state":"PUBLISHED","title":"X.509 trust-chain bypass in wolfSSL_X509_verify_cert() via untrusted intermediate anchoring","description":"X.509 trust-chain bypass in the OpenSSL compatibility certificate verifier (wolfSSL_X509_verify_cert()). This affects only builds with --enable-opensslextra (OPENSSL_EXTRA) and whose application validates certificates by calling X509_verify_cert() with caller-supplied untrusted intermediate certificates; for those users it is critical, otherwise the library is unaffected. In particular, native wolfSSL TLS/DTLS usage is not impacted. wolfSSL's X509_verify_cert() temporarily loads each caller-supplied untrusted intermediate into the certificate manager but failed to drop them before the trusted-store check, so an untrusted intermediate could anchor the path itself. An attacker can present a chain that never reaches a configured trust anchor and have it accepted, resulting in acceptance of an attacker-controlled certificate. This is certificate verification independent of TLS (e.g. S/MIME/CMS, code/firmware signing, JWT/JWS x5c), is not specific to any key type or algorithm, and a single untrusted intermediate suffices. The default wolfSSL TLS handshake (WOLFSSL_VERIFY_PEER) is not affected; only TLS applications doing manual or deferred peer verification through this API are, which also requires --enable-sessioncerts.","publishedAt":"2026-06-25T19:38:19.099Z","updatedAt":"2026-06-26T14:02:37.876Z","severity":{"score":8.7,"label":"High","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","source":"wolfSSL"},"assigner":"wolfSSL","products":["wolfSSL wolfSSL"],"affected":[{"vendor":"wolfSSL","product":"wolfSSL","defaultStatus":"unaffected","versions":[{"version":"5.8.4","status":"affected","lessThanOrEqual":"5.9.1","versionType":"semver"}],"collectionURL":"https://github.com/wolfSSL/wolfssl"}],"references":["https://github.com/wolfSSL/wolfssl/pull/10674","https://www.wolfssl.com/docs/security-vulnerabilities/"],"weaknesses":["CWE-295"],"ingestedAt":"2026-10-29T20:10:52.580Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/11xxx/CVE-2026-11310.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-11310","state":"PUBLISHED","datePublished":"2026-06-25T19:38:19.099Z","dateUpdated":"2026-06-26T14:02:37.876Z","assignerShortName":"wolfSSL","assignerOrgId":"50d2cd11-d01a-48ed-9441-5bfce9d63b27","dateReserved":"2026-06-04T17:58:49.009Z"},"containers":{"cna":{"title":"X.509 trust-chain bypass in wolfSSL_X509_verify_cert() via untrusted intermediate anchoring","descriptions":[{"lang":"en","value":"X.509 trust-chain bypass in the OpenSSL compatibility certificate verifier (wolfSSL_X509_verify_cert()). This affects only builds with --enable-opensslextra (OPENSSL_EXTRA) and whose application validates certificates by calling X509_verify_cert() with caller-supplied untrusted intermediate certificates; for those users it is critical, otherwise the library is unaffected. In particular, native wolfSSL TLS/DTLS usage is not impacted. wolfSSL's X509_verify_cert() temporarily loads each caller-supplied untrusted intermediate into the certificate manager but failed to drop them before the trusted-store check, so an untrusted intermediate could anchor the path itself. An attacker can present a chain that never reaches a configured trust anchor and have it accepted, resulting in acceptance of an attacker-controlled certificate. This is certificate verification independent of TLS (e.g. S/MIME/CMS, code/firmware signing, JWT/JWS x5c), is not specific to any key type or algorithm, and a single untrusted intermediate suffices. The default wolfSSL TLS handshake (WOLFSSL_VERIFY_PEER) is not affected; only TLS applications doing manual or deferred peer verification through this API are, which also requires --enable-sessioncerts."}],"affected":[{"vendor":"wolfSSL","product":"wolfSSL","defaultStatus":"unaffected","versions":[{"version":"5.8.4","status":"affected","lessThanOrEqual":"5.9.1","versionType":"semver"}],"collectionURL":"https://github.com/wolfSSL/wolfssl"}],"references":[{"url":"https://github.com/wolfSSL/wolfssl/pull/10674","tags":["patch"]},{"url":"https://www.wolfssl.com/docs/security-vulnerabilities/"}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"NONE","subConfidentialityImpact":"NONE","vulnIntegrityImpact":"HIGH","subIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED","version":"4.0","baseSeverity":"HIGH","baseScore":8.7,"vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-295","lang":"en","description":"CWE-295 Improper Certificate Validation","type":"CWE"}]}],"providerMetadata":{"shortName":"wolfSSL","orgId":"50d2cd11-d01a-48ed-9441-5bfce9d63b27","dateUpdated":"2026-06-25T19:38:19.099Z"},"credits":[{"lang":"en","value":"Corban Villa, Sohee Kim and Austin Chu (UC Berkeley, Sky Lab)","type":"finder"}],"source":{"discovery":"UNKNOWN"},"x_generator":{"engine":"Vulnogram 1.0.2"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-06-26T14:02:17.745614Z","id":"CVE-2026-11310","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-06-26T14:02:37.876Z"}}]}}}