Description
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.
Published: 2026-10-03
Score: 9.2 Critical
EPSS: n/a
KEV: No
Impact: Impersonation via credential binding bypass
Action: Immediate Patch
AI Analysis

Impact

The flaw lies in the MLS (RFC 9420) implementation in Bouncy Castle for Java, where an X.509 credential is not bound to the LeafNode’s signature key. LeafNode.verify() checked the signature against the key stored in the leaf itself, but the certificate chain was never parsed or validated. As a consequence, an attacker could present a different party’s certificate while signing a leaf and be accepted under that other party’s identity. The attacker would then obtain membership, evict a victim, derive the current epoch, decrypt future messages, and impersonate the victim in group communications.

Affected Systems

Legion of the Bouncy Castle Inc.’s BC-JAVA libraries before version 1.86 are affected. Systems that deploy MLS and rely on Bouncy Castle for cryptographic operations may be vulnerable if they do not perform independent credential admission checks.

Risk and Exploitability

The vulnerability scores a CVSS of 9.2, indicating critical severity. EPSS data is not available, and the flaw is not listed in the CISA KEV catalog. The likely attack vector is the network, where an adversary crafts malicious MLS KeyPackage messages that exploit the missing certificate-key binding check. Successful exploitation allows an unauthenticated attacker to be admitted under a valid X.509 identity, enabling full impersonation and confidentiality compromise of subsequent group traffic.

Generated by OpenCVE AI on October 3, 2026 at 10:22 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the BC-JAVA library to version 1.86 or later where TreeKEM.LeafNode requires the end‑entity certificate’s key to match the signature key.
  • If the application processes MLS packets, add explicit credential admission validation to ensure that only trusted certificates are accepted, rather than relying solely on the library’s internal checks.
  • Audit existing MLS deployments that accept external commits and confirm that they perform independent credential verification before adding a member.

Generated by OpenCVE AI on October 3, 2026 at 10:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 03 Oct 2026 10:45:00 +0000

Type Values Removed Values Added
First Time appeared Legion Of The Bouncy Castle Inc.
Legion Of The Bouncy Castle Inc. bc-java
Vendors & Products Legion Of The Bouncy Castle Inc.
Legion Of The Bouncy Castle Inc. bc-java

Sat, 03 Oct 2026 09:00:00 +0000

Type Values Removed Values Added
Description 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.
Title MLS X.509 credential not bound to the LeafNode signature key
Weaknesses CWE-287
CWE-295
References
Metrics cvssV4_0

{'score': 9.2, 'vector': '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'}


Subscriptions

Legion Of The Bouncy Castle Inc. Bc-java
cve-icon MITRE

Status: PUBLISHED

Assigner: bcorg

Published:

Updated: 2026-10-03T08:51:53.292Z

Reserved: 2026-08-08T00:06:06.982Z

Link: CVE-2026-71885

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-03T09:17:04.730

Modified: 2026-10-03T09:17:04.730

Link: CVE-2026-71885

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-03T10:30:19Z

Weaknesses
  • CWE-287

    Improper Authentication

  • CWE-295

    Improper Certificate Validation