Skip to main content

Bouncy Castle bc-java CVE-2026-71885

| EUVDEUVD-2026-92003 CRITICAL
Improper Certificate Validation (CWE-295)
2026-10-03 bcorg GHSA-jch3-5j66-88vx
9.2
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Reach MLS group admitting external commits
  2. Delivery
    Present victim's X.509 cert with attacker key
  3. Exploit
    Pass LeafNode/KeyPackage verify as victim
  4. Execution
    Join and evict victim via commit
  5. Impact
    Derive epoch, decrypt and spoof victim messages

Vulnerability Assessment

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

Exploitation requires an MLS (RFC 9420) deployment that (1) uses X.509 credentials - deployments using only basic credentials are explicitly unaffected - and (2) admits external commits WITHOUT an independent credential-admission check that binds the presenting party to the credential. Under those conditions an unauthenticated remote attacker can present another party's certificate while signing with an unrelated key and be accepted as that party via KeyPackage.verify() and the Group leaf-validation path. Limiting factors that reduce real-world exposure: the MLS/X.509 code path must be in use (a niche, recently standardized feature), the application must not perform its own credential-admission/trust-anchor validation (certificate-chain and identity validation to a trust anchor remain the application's responsibility per RFC 9420 sec. 5.3.1, and a correct admission check blocks the attack), and the product must be on bc-java before 1.86.

Impact

This is a genuine high-priority flaw for the narrow population that uses it, but its real-world blast radius is gated by configuration. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N, VC:H/VI:H/VA:L, score 9.2 Critical) describes a remote, unauthenticated identity-impersonation defect: an attacker can be admitted under a victim's X.509 identity, decrypt the current and subsequent epoch's group messages (VC:H), send messages accepted as the victim and evict them (VI:H), with a limited availability effect from the eviction/resync (VA:L). The AT:P (Attack Requirements: Present) metric is the key honest signal - exploitation is NOT universal; it depends on a deployment that (a) uses X.509 credentials rather than basic credentials and (b) admits external commits without an independent credential-admission check, which the vector correctly reflects rather than inflating to AT:N. No EPSS score was provided, so exploitation probability cannot be quantified. The vulnerability is NOT in CISA KEV and no public exploit code was supplied, so despite the Critical rating there is no evidence of active or opportunistic exploitation - consistent with the fact that the affected code is a newly adopted MLS/RFC 9420 implementation with a small deployment base. CWE-295 (Improper Certificate Validation) matches the root cause precisely: the credential's certificate chain was stored but never checked against signature_key. Net: a real, well-characterized cryptographic authentication bypass that patch-eligible users should fix promptly, but not a widespread, mass-exploitable emergency.

Exploit ScenarioDerived

An MLS group using X.509 credentials permits external commits without an independent check that the committing party owns the credential it presents. A remote, unauthenticated attacker crafts a LeafNode/KeyPackage carrying a victim's X.509 certificate as its credential while signing with their own unrelated key; because LeafNode.verify() only checked the self-declared signature_key, the leaf is accepted under the victim's identity. The attacker then evicts the victim, derives the current epoch, and both decrypts subsequent group messages and sends messages accepted as the victim. No public exploit identified at time of analysis.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
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

Bouncy Castle for Java's Messaging Layer Security (MLS, RFC 9420) implementation before 1.86 fails to bind an X.509 credential to a LeafNode's signature_key, allowing an unauthenticated remote attacker to present a victim's certificate while signing the LeafNode and KeyPackage with an unrelated key and be accepted under the victim's identity. In an MLS deployment that uses X.509 credentials and admits external commits without an independent credential-admission check, the attacker can be admitted as the victim, evict the victim via resynchronization (which compares whole credentials rather than signing keys), derive the current epoch, decrypt subsequent group messages, and send messages accepted as the victim. The flaw is rated CVSS 9.2 (CVSS:4.0) / 9.2-equivalent high impact with the vendor patch available in 1.86; no public exploit code or confirmed active exploitation was identified at time of analysis, and deployments using only basic credentials are explicitly unaffected. Note the assessed attack complexity is High because the MLS/X.509 path must be in use and the application must lack its own credential-admission validation.

RemediationAI

Vendor-released patch: upgrade Bouncy Castle for Java (bc-java) to 1.86 or later, which makes TreeKEM.LeafNode reject an X.509 credential whose end-entity certificate's subject public key (in the cipher suite's signature encoding) does not equal signature_key, including empty chains and mismatched key types; the fix is visible in commit 77632a57edf350a7b5751fca1a5052daffa8dab2 and the vendor advisory https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%9071885. If upgrading is not immediately possible, the most effective compensating control is to add an independent application-level credential-admission check that binds the presenting party to the X.509 credential and validates the chain to a trust anchor, since RFC 9420 sec. 5.3.1 leaves this to the application and a correct admission check blocks the attack outright; organizations that cannot implement such a check should disable admission of external commits in their MLS group policy, at the cost of losing a useful group-membership feature and possibly breaking clients that rely on it, or restrict the affected deployment to basic credentials, which are explicitly unaffected by this flaw but forgo X.509-identity-backed authentication. Because validation to a trust anchor is not performed by the library even after the fix, deploying 1.86 should still be paired with application-side certificate-chain and identity validation.

Affected VersionsENISA

BC-JAVA 0 <1.86

Affected Packages

euvd bc_java fix: 1.86

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

The vulnerability is a CWE-295 improper certificate validation flaw inside the MLS module of bc-java (CPE cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java:*:*:*:*:*:*:*:*). MLS is the IETF's group key-establishment protocol (RFC 9420) built on TreeKEM; each group member is represented by a LeafNode whose signature_key authenticates the leaf, and whose credential (basic or X.509) asserts identity. RFC 9420 section 5.3 requires that for an X.509 credential, the leaf's signature_key equal the public key certified by the end-entity certificate. Before this fix, TreeKEM's LeafNode.verify() checked the leaf's signature against the signature_key carried in the leaf itself, while the X.509 credential's certificate chain was stored but never parsed or validated, so the certificate's public key was never compared to signature_key. The commit 77632a57edf350a7b5751fca1a5052daffa8dab2 adds a check, x509CredentialBindsSignatureKey(), that extracts the end-entity certificate's SubjectPublicKeyInfo (first certificate in the chain per RFC 9420 sec. 5.3.3), serializes its key in the cipher suite's signature encoding, and requires it to equal signature_key, rejecting the leaf on an empty chain, a malformed certificate, or a key type mismatched to the cipher suite. Certificate-chain and identity validation to a trust anchor remain the application's responsibility per RFC 9420 sec. 5.3.1. The patch also adds a public Certificate(byte[]) constructor and Credential.getCertificates() accessor so callers can build and inspect X.509 credentials.

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 9.2 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N/U:Amber
vuln.today AI 7.7 HIGH

Remote and unauthenticated (AV:N/PR:N); AC:H because it requires a deployment admitting external commits without a credential-admission check; impersonation yields message decryption (C:H), spoofing/eviction (I:H) and limited availability from eviction (A:L).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
SUSE 7.7 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:L

Primary rating from Vendor (bcorg).

CVSS VectorVendor: bcorg

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

DescriptionCVE.org

In Bouncy Castle for Java before 1.86, the Messaging Layer Security (MLS, RFC 9420) implementation did not bind an X.509 credential to a LeafNode's signature_key. LeafNode.verify() checked a leaf's signature against the signature_key carried in the leaf itself, while the credential's X.509 certificate chain was stored but never parsed or validated, so the end-entity certificate's public key was never required to match signature_key as RFC 9420 sec. 5.3 requires. A party could therefore present another party's certificate as its credential while signing the leaf, and the enclosing KeyPackage, with an unrelated key, and be accepted under that other party's identity through KeyPackage.verify() and the Group leaf-validation path. In a deployment that admits external commits without an independent credential-admission check, an unauthenticated attacker could be admitted under a victim's X.509 identity, evict the victim (resynchronization compares whole credentials rather than signing keys), derive the current epoch, decrypt subsequent group messages, and send messages accepted as the victim. TreeKEM.LeafNode now requires the end-entity certificate's subject public key, in the cipher suite's signature encoding, to equal signature_key for an X.509 credential and rejects the leaf otherwise, including an empty chain or a certificate whose key type does not match the cipher suite; certificate-chain and identity validation to a trust anchor remain the application's responsibility per RFC 9420 sec. 5.3.1. Deployments using only basic credentials are unaffected.

Executive ViewAI

Why It Matters

A critical flaw in Bouncy Castle for Java's Messaging Layer Security (MLS) implementation before version 1.86 allows an attacker to be admitted into an encrypted group session under another participant's identity, then evict that participant, derive the current epoch, and read and send messages as them. Organizations running MLS-based group messaging or collaboration features that rely on X.509 credentials and admit external commits are exposed, while deployments using only basic credentials are explicitly unaffected. Although no public exploit was identified at time of analysis, the severity rating and the direct risk to the confidentiality of protected group communications warrant prompt remediation.

Business Impact: High
Compensating Controls

Apply vendor patch. Until Bouncy Castle for Java 1.86 is deployed, require an independent credential-admission check for external commits and treat X.509-credentialed MLS deployments that admit external commits as untrusted.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
newly-adopted MLS module with X.509 credentials, rarely deployed in production
Social Media
4
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor CIRCL 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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
No
Human Impact
High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
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: Important
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