Skip to main content

Bouncy Castle EUVDEUVD-2026-91990

| CVE-2026-71889 HIGH
Improper Certificate Validation (CWE-295)
2026-10-03 bcorg GHSA-hqqj-v58h-gr7x
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain leaf cert from name-constrained CA
  2. Delivery
    Craft leaf violating NameConstraints subtrees
  3. Exploit
    Present chain to reviewer-based trust check
  4. Execution
    Reviewer skips leaf, returns valid
  5. Impact
    Impersonate unauthorized identity / MITM

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
Exploitation Conditions

Exploitation requires BOTH: (1) the application uses org.bouncycastle.pkix.jcajce.PKIXCertPathReviewer (or legacy org.bouncycastle.x509.PKIXCertPathReviewer) and relies on its isValidCertPath() result to make the trust decision - not the unaffected CertPathValidator "PKIX"/"BC", and not merely for per-certificate diagnostics; and (2) the trust chain contains an issuing CA carrying an X.509 NameConstraints extension that the end-entity (leaf) certificate's subject DN or subjectAltName actually violates. LIMITING FACTORS: this is a non-default API choice (the standard PKIX validator is not vulnerable), name-constrained CA hierarchies are relatively uncommon, and the bug only affects the leaf - intermediate CA constraint checks still worked. No authentication is required of the attacker (PR:N), but the vulnerability window is defined entirely by the victim's validation architecture rather than by any attacker-controlled configuration.

Impact

This is a certificate-validation bypass (CWE-295) in Bouncy Castle's PKIXCertPathReviewer, scored CVSS 4.0 8.7 (High) by the vendor with vector AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H - i.e. a remote, unauthenticated integrity impact with no confidentiality or availability loss. The raw score looks alarming, but the exploitation signals temper it sharply: no EPSS score, KEV status, or POC was provided (treat as no public exploit identified), and crucially the flaw only matters when an application uses the reviewer's isValidCertPath() to MAKE the trust decision rather than for per-certificate diagnostics alongside a real validation. The standard, recommended API - CertPathValidator.getInstance("PKIX","BC") - shares no code with the reviewer and correctly rejects the same chain, so correctly-architected consumers are NOT affected. This means real-world risk is a narrow API-misuse pattern rather than a blanket library flaw: high severity where the misuse exists, but low population of truly exploitable deployments. CONFLICT TO NOTE: the official vector sets VC:N, yet a certificate-trust bypass can enable TLS MITM with downstream confidentiality loss - the direct scored impact is integrity (accepting a forged identity), with confidentiality a possible second-order consequence not reflected in the base score. Overall: credible but conditional - prioritize only if you know you consume the reviewer for trust decisions.

Exploit ScenarioDerived

An attacker obtains an end-entity (leaf) certificate from a CA that is subject to a NameConstraints extension, where the leaf's subject DN or subjectAltName falls outside the CA's permitted/excluded subtrees. If the victim application uses PKIXCertPathReviewer.isValidCertPath() as its actual trust gate, the reviewer returns true with an empty error list and accepts the unauthorized certificate, enabling the attacker to impersonate an identity the constrained CA was never authorised to vouch for (e.g. TLS server impersonation / MITM). No public exploit code was identified at time of analysis; exploitation hinges on the application's choice of validation API.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 03, 2026

Certificate-validation bypass in Bouncy Castle for Java lets a PKIXCertPathReviewer accept an end-entity certificate that violates a NameConstraints extension imposed by its own issuing CA, causing isValidCertPath() to return true with an empty error list for a chain the real PKIX validator rejects. Affected are BC-Java before 1.86, BC-LTS-Java before 2.73.13, and BC-FJA (bcpkix-fips) before 1.0.13 / 2.0.13 / 2.1.13; exploitation requires an application that uses org.bouncycastle.pkix.jcajce.PKIXCertPathReviewer (or the legacy org.bouncycastle.x509 copy) to make the trust decision rather than the unaffected CertPathValidator "PKIX"/"BC", and a chain whose leaf actually breaches the CA's permitted or excluded subtrees. No public exploit code has been identified at time of analysis, the vulnerability is unauthenticated (CVSS PR:N) per the vendor vector, and the vendor scores it CVSS 4.0 8.7 (High) for high integrity impact; note that an independent assessment rates attack complexity higher (CVSS 3.1 AV:N/AC:H) because the exposure depends entirely on non-default application architecture rather than on anything the attacker controls.

RemediationAI

Vendor-released patches exist: upgrade Bouncy Castle for Java to 1.86 or later, BC-LTS-Java to 2.73.13 or later, and BC-FJA (bcpkix-fips) to 1.0.13 on the 1.0.X series, 2.0.13 on the 2.0.X series or 2.1.13 on the 2.1.X series; see the advisory at https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%9071889 and the fixing commit https://github.com/bcgit/bc-java/commit/06dcff2f51037095de126986285c998e3455ab85. Where an immediate upgrade is not possible, the most effective compensating control is architectural: stop using PKIXCertPathReviewer's isValidCertPath() as the trust decision and instead rely on the unaffected CertPathValidator.getInstance("PKIX", "BC"), whose name-constraint processing already covered the target certificate - the trade-off is that the reviewer's per-certificate diagnostic output (its intended use) must be retained separately if it is still wanted, and any code branching on isValidCertPath() must be refactored so exceptions from the validator, not a boolean, drive the decision. Because the defect only manifests when the leaf actually breaches a NameConstraints extension issued by its CA, disabling or not issuing name-constrained CAs in the trust set removes the exposure entirely, at the cost of losing the scope-limiting protection that name constraints provide for subordinate CAs. Audit existing trust stores and configuration for CAs that carry NameConstraints extensions and treat certificates issued by them as unvalidated if they were previously approved via the reviewer; no network- or port-level mitigation is applicable because this is a client-side validation logic defect, not a remotely reachable service.

Affected VersionsENISA

BC-LTS-JAVA 2.73.0 <2.73.13
BC-FJA 1.0.4 <1.0.13
BC-FJA 2.1.0 <2.1.13
BC-FJA 2.0.0 <2.0.13
BC-JAVA 0 <1.86

Affected Packages

euvd bc_fja fix: 1.0.13, 2.0.13, 2.1.13
euvd bc_java fix: 1.86
euvd bc_lts_java fix: 2.73.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is in X.509 path validation logic (CWE-295, improper certificate validation) implementing RFC 5280 section 6.1.3 (b) and (c). Both copies of PKIXCertPathReviewer - org.bouncycastle.pkix.jcajce.PKIXCertPathReviewer and the legacy org.bouncycastle.x509.PKIXCertPathReviewer - iterated the certificate path in checkNameConstraints() with a loop bound of index > 0. That bound is correct for the CA-only processing steps, but under standard CertPath ordering index 0 is the target (leaf) certificate, so the permitted-subtree and excluded-subtree comparisons were never performed against the leaf's subject DN or its subjectAltName. As a result the reviewer reported isValidCertPath() true with an empty error list for a chain whose leaf violated a NameConstraints extension imposed by its issuing CA, while CertPathValidator.getInstance("PKIX", "BC") - which shares no code with the reviewer and walks index >= 0 through RFC3280CertPathUtilities.processCertBC - rejected the identical chain against the identical trust anchor. The fix makes both copies check every certificate in the path including the target, waives the RFC 5280 section 4.2.1.10 self-issued exemption for the final certificate as section 6.1.3 requires, and skips the section 6.1.4 (g) constraint-accumulation step for the target since no next certificate exists to accumulate into. Intermediate CA constraint checks were never broken, so the defect is confined to the leaf; name-constrained CA hierarchies are relatively uncommon, and the standard PKIX validator path is unaffected, which limits real-world exposure. CPE data confirms four affected product lines: bc-java, bc-lts-java and bc-fja under Legion of the Bouncy Castle Inc.

Know when Java gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (bcorg) PRIMARY 8.7 HIGH
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/U:Amber
vuln.today AI 5.9 MEDIUM

AV:N and PR:N since an unauthenticated remote attacker presents a crafted cert; AC:H because success depends on the victim using the reviewer for trust plus a name-constrained CA chain (conditions beyond attacker control); I:H trust bypass, C:N/A:N per direct impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N

Primary rating from Vendor (bcorg).

CVSS VectorVendor: bcorg

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

In Bouncy Castle for Java before 1.86, neither copy of PKIXCertPathReviewer - org.bouncycastle.pkix.jcajce.PKIXCertPathReviewer nor the legacy org.bouncycastle.x509.PKIXCertPathReviewer - applied X.509 name constraints to the end-entity certificate. checkNameConstraints walked the path with a loop bound of index greater than zero, which is the bound the CA-only steps require, but index zero is the target certificate under the standard CertPath ordering, so the permitted and excluded subtree checks of RFC 5280 sec. 6.1.3 (b) and (c) never ran against the leaf's subject DN or its subjectAltName. A chain whose leaf violated a NameConstraints extension imposed by its own issuing CA therefore reported isValidCertPath() true with an empty error list, while CertPathValidator.getInstance("PKIX", "BC"), which shares no code with the reviewer, rejected the identical chain against the identical trust anchor. An application using the reviewer to make the trust decision rather than for diagnostics alongside a real validation accepted a certificate the constrained CA was never authorised to issue. Both copies now check every certificate in the path including the target, waive the sec. 4.2.1.10 self-issued exemption for the final certificate as sec. 6.1.3 requires, and skip the sec. 6.1.4 (g) constraint-accumulation step for the target. This issue also affects Bouncy Castle for Java LTS before 2.73.13, which carries only the org.bouncycastle.pkix.jcajce copy of the reviewer. It also affects Bouncy Castle for Java FIPS (BC-FJA) before bcpkix-fips 1.0.13 (1.0.X series), 2.0.13 (2.0.X series) and 2.1.13 (2.1.X series).

Executive ViewAI

Why It Matters

A certificate-validation bypass in Bouncy Castle for Java - a cryptography library embedded in a large share of enterprise Java applications, API gateways, and signing services - can cause affected software to accept a certificate that its own issuing authority explicitly prohibited, while reporting validation success with no errors. Organizations are exposed wherever an application delegates its trust decision to the affected PKIXCertPathReviewer class rather than the standard validator, meaning a single unpatched service could admit an unauthorized identity into TLS, authentication, or code-signing workflows and undermine trust in downstream systems. Leadership should treat this as a trust-integrity risk rather than a routine library update, and prioritize remediation accordingly, since no public exploit identified at time of analysis and the vulnerability is unauthenticated per the vendor CVSS vector.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
High
Bouncy Castle is a very widely deployed Java cryptography library
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Module for Development Tools 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Server 16.0 Affected
SUSE Linux Enterprise Server 16.1 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy