Skip to main content

Bouncy Castle CVE-2026-71890

| EUVDEUVD-2026-92006 HIGH
Incorrect Authorization (CWE-863)
2026-10-03 bcorg GHSA-jc55-7frr-fv5r
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 group's public GroupInfo
  2. Delivery
    Craft external commit with Remove naming victim LeafIndex
  3. Exploit
    Submit via Group.externalJoin/Group.handle
  4. Execution
    Members apply unvalidated eviction
  5. Impact
    Victim removed and attacker takes ratchet-tree slot

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application use Bouncy Castle for Java's MLS (RFC 9420) implementation and accept external commits via the public Group.externalJoin / Group.handle API on a version before 1.86. The attacker must possess the group's public GroupInfo, which external joiners are legitimately provided, so no group membership or credential is needed; the missing credential check that would have tied the Remove to the joiner existed only in the gRPC interop harness (MLSClientImpl.externalJoinImpl) and protected no other API caller. Limiting factors: deployments not using the MLS module or not permitting external commits are unaffected, and the attacker still needs access to the public GroupInfo distribution channel. Impact is limited to membership integrity (eviction and slot takeover); it does not directly expose message confidentiality.

Impact

The vendor CVSS 4.0 base score is 8.7 (High) with vector AV:N/AC:L/AT:N/PR:N/UI:N, meaning the flaw is reachable over the network, needs no special attack requirements, no privileges, and no user interaction - a trivially reachable precondition set. Impact is scoped to integrity only (VC:N/VI:H/VA:N, no subsequent-system impact SC:N/SI:N/SA:N), consistent with the described effect: an attacker cannot read group messages but can tamper with group membership by evicting arbitrary members and seizing their ratchet-tree slot. The CWE is CWE-863 (Incorrect Authorization); note the input tag 'Authentication Bypass' is imprecise - the attacker is a protocol-legitimate external joiner and the defect is a missing authorization/credential check, not an authentication bypass. Signals are incomplete: no EPSS score, no SSVC decision data, no KEV listing, and no POC were provided, so exploitation likelihood cannot be quantified from the input - exploitation status is therefore 'no public exploit identified at time of analysis.' The 'PR:N' rating is correct in the MLS trust model because possessing the public GroupInfo (deliberately handed to external joiners) is the only prerequisite, but real-world risk is gated hard by whether a given deployment actually uses Bouncy Castle's MLS (RFC 9420) module and accepts external commits - a niche feature. Net: a genuinely serious authorization flaw where exploitable, but likely a low-population issue rather than a mass-exploitation priority; verify EPSS/KEV independently as neither was supplied.

Exploit ScenarioDerived

An attacker obtains the group's public GroupInfo - exactly what an external joiner is meant to be given - and crafts an external commit carrying a single Remove proposal naming any existing member's LeafIndex. Because Group.validateExternalCachedProposals bounded the removed leaf index but never tied the removed leaf's credential to the joiner, every member accepts the commit, evicting the targeted member and letting the attacker take over their slot in the ratchet tree. No public exploit identified at time of analysis.

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

Bouncy Castle for Java before 1.86 fails to tie a Remove proposal in an MLS (RFC 9420) external commit to the joining party, allowing any holder of the group's public GroupInfo to evict an arbitrary member and take over that member's slot in the ratchet tree. Exploitation requires only that an application use the library's MLS module and accept external commits through the public Group.externalJoin / Group.handle API on an affected version; no group membership, credential, or user interaction is needed, and the missing credential check existed only in the gRPC interop harness, protecting none of the other API callers. The vendor rates this 8.7 (CVSS 4.0 AV:N/AC:L/AT:N/PR:N/UI:N), and there is no public exploit identified at time of analysis, though the flaw is trivially reachable by anyone who legitimately receives GroupInfo.

RemediationAI

Upgrade Bouncy Castle for Java to 1.86 or later, which contains the upstream fix (commit 7e8bb10eb90baddf3f10b8679f627462b9522d24); see the vendor advisory at https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%9071890 for the full release guidance. If immediate upgrade is not possible, stop accepting external commits on affected versions - i.e. reject or do not route incoming external-commit messages into Group.handle and do not expose Group.externalJoin to untrusted parties - since the defect only manifests when an external commit carrying a Remove is processed; the trade-off is that legitimate external joins (including resync of a joiner's own stale leaf) will fail until the library is patched. A second option is an application-layer pre-check that inspects each incoming external commit and rejects any that carries a Remove unless the credential in the commit's path LeafNode is identical to the credential of the removed leaf, encoded rather than via Credential.getIdentity(); this replicates the upstream logic and is easy to implement incorrectly, especially for x509 credentials, so it should be treated as temporary. Reducing the audience for GroupInfo through a separate out-of-band membership channel lowers exposure but does not fix the bug, since external joiners are by design given GroupInfo, and any holder is a valid attacker. No compensating control can restore integrity for a member already evicted, so patched versions should be deployed as the primary action.

Affected VersionsENISA

BC-JAVA 1.73 <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

Bouncy Castle for Java implements Messaging Layer Security (MLS, RFC 9420), a protocol whose external-join mechanism is designed to let a new participant join a group using only the group's public GroupInfo. These libraries follow this relatively new standard, and its group secrets are used in the coordination mechanism that lets allowlisted libraries participate in a multicloud architecture in a decentralized way. In org.bouncycastle.mls.protocol.Group.validateExternalCachedProposals, the validator counted proposals by type and bounds-checked the removed leaf index but never verified that the removed leaf actually belonged to the joiner. RFC 9420 section 12.2 permits at most one Remove proposal in an external commit (allowing a joiner to remove a stale copy of itself) and requires the LeafNode in the commit's path field to satisfy the criteria an Update for the removed leaf would require, notably that its credential present identifiers acceptable for the removed participant. Because the ordinary proposal-list validator's self-remove rule is intentionally skipped on this path to accommodate legitimate resync commits, nothing replaced that check, so a commit naming any member's LeafIndex is applied by all members. This is fundamentally an authorization defect (CWE-863): the receiving side lacks any binding between the acting principal and the resource it manipulates. The fix adds the joiner's own leaf (from the commit's update path, mandatory per RFC 9420 section 12.4.3.2) into inferCommitType and accepts a Remove only when the removed leaf's credential is identical to the one in the joiner's new leaf, on both sending and receiving sides, comparing credential encodings rather than Credential.getIdentity() because that accessor is populated only for basic credentials and would have matched any two x509 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 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 7.5 HIGH

Network-reachable MLS handler with only public GroupInfo needed, so PR:N/AC:L; integrity high from arbitrary member eviction and slot takeover, no confidentiality and availability modeled per vendor, scope unchanged.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/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, validation of an MLS (RFC 9420) external commit's proposal list, org.bouncycastle.mls.protocol.Group.validateExternalCachedProposals, counted the proposals by type and bounded the removed leaf index but never established that the removed leaf had anything to do with the joiner. RFC 9420 sec. 12.2 permits at most one Remove proposal in an external commit, with which the joiner removes an old version of themselves, and requires that where one is present the LeafNode in the commit's path field meet the criteria it would have to meet in an Update for the removed leaf, in particular that its credential present identifiers acceptable for the removed participant. The ordinary proposal-list validator's self-remove rule is deliberately not applied on this path, because a resync commit legitimately removes a leaf the joiner owns, but nothing was put in its place. Any party holding the group's public GroupInfo, which is precisely what an external joiner is meant to be given, could therefore commit a Remove naming any member's LeafIndex and have every member apply it, evicting that member and taking over their slot in the ratchet tree. The credential check that should have prevented this existed only in the gRPC interop harness and so protected no other caller of the public Group.externalJoin and Group.handle API. An external commit carrying a Remove is now accepted only when the removed leaf's credential is identical to the one in the joiner's own new leaf, on both the sending and the receiving side.

Executive ViewAI

Why It Matters

Organizations running Bouncy Castle for Java versions prior to 1.86 face a high-severity flaw in the library's MLS (RFC 9420) messaging module that allows any outside party holding a group's public GroupInfo to evict a legitimate member and seize that member's position in the group's ratchet tree. Because no group membership, credential, or user interaction is required, any application that accepts external commits through the public Group.externalJoin or Group.handle APIs is exposed to silent, unauthorized group takeover. Leadership should care because affected collaboration and secure-messaging channels can lose both confidentiality and integrity of communications without any visible alarm, and remediation requires a coordinated library upgrade and rebuild across every dependent application.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Low
niche RFC 9420 MLS module rarely used despite ubiquitous Bouncy Castle crypto 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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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