Description
In Bouncy Castle for Java from 1.73 to before 1.78, three ML-KEM (CRYSTALS-Kyber) routines divided secret-derived polynomial coefficients by the modulus q: Poly.toMsg, which decodes the decrypted message, and the ciphertext compression routines Poly.compressPoly and PolyVec.compressPolyVec. An attacker able to measure the timing of a large number of decapsulations performed with the same long-term private key can recover that key. These are the KyberSlash1 (Poly.toMsg) and KyberSlash2 (ciphertext compression) divisions. Compression performed during encapsulation operates on values that become the public ciphertext and is not affected.
Published: 2026-07-28
Score: 8.2 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Three functions in the ML‑KEM (Kyber) routines of Bouncy Castle for Java perform non‑constant‑time division of secret‑derived polynomial coefficients by the modulus q. When an attacker can measure the time taken for many decapsulations using the same privately held key, the leaked timing differences enable reconstruction of the private key. This vulnerability does not directly give code execution or denial of service; its primary impact is the loss of cryptographic confidentiality through key exposure. Based on the description, the likelihood of key extraction is inferred from the specified need to observe timing across multiple decapsulations.

Affected Systems

Bouncy Castle Java libraries from version 1.73 up to, but not including, 1.78 are affected. The vulnerability occurs in the Poly.toMsg, Poly.compressPoly, and PolyVec.compressPolyVec routines used in ML‑KEM (CRYSTALS‑Kyber) implementations. Applications that rely on these libraries for secure key encapsulation and decapsulation should be reviewed to determine whether they have the vulnerable code paths. The affected systems are inferred to be any Java applications employing these specific Bouncy Castle library versions.

Risk and Exploitability

The CVSS score of 8.2 indicates severe risk, while the EPSS score of less than 1% suggests that exploitation is currently unlikely, though possible if an attacker gains access to an environment where many decapsulations can be measured. The vulnerability is not listed in the CISA KEV catalog. The attacker must control or closely observe the environment performing decapsulations to collect timing data, making the attack likely to rely on a covert side‑channel from a dedicated server or compromised client that performs large numbers of decapsulations. Based on the description, the likely attack vector requires an adversary who can measure the timing of many decapsulations performed with the same private key, and the inference about low exploitation likelihood is drawn from the EPSS value.

Generated by OpenCVE AI on August 3, 2026 at 15:25 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Bouncy Castle crypto library to version 1.78 or later to replace the affected routines with constant‑time implementations.
  • If an upgrade is temporarily infeasible, isolate all operations that perform ML‑KEM decapsulation to a dedicated, internally trusted environment with restricted bandwidth and minimal background noise.
  • Consider replacing the library or disabling the ML‑KEM functionality entirely if the application can tolerate an alternate key encapsulation mechanism.

Generated by OpenCVE AI on August 3, 2026 at 15:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 03 Aug 2026 16:15: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

Tue, 28 Jul 2026 16:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 28 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In Bouncy Castle for Java from 1.73 to before 1.78, three ML-KEM (CRYSTALS-Kyber) routines divided secret-derived polynomial coefficients by the modulus q: Poly.toMsg, which decodes the decrypted message, and the ciphertext compression routines Poly.compressPoly and PolyVec.compressPolyVec. An attacker able to measure the timing of a large number of decapsulations performed with the same long-term private key can recover that key. These are the KyberSlash1 (Poly.toMsg) and KyberSlash2 (ciphertext compression) divisions. Compression performed during encapsulation operates on values that become the public ciphertext and is not affected.
Title ML-KEM (Kyber) decapsulation leaks private key information through non-constant-time division in message decoding and ciphertext compression (KyberSlash)
Weaknesses CWE-208
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/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-08-09T20:56:37.119Z

Reserved: 2026-07-28T05:07:53.475Z

Link: CVE-2024-14041

cve-icon Vulnrichment

Updated: 2026-07-28T12:55:00.550Z

cve-icon NVD

Status : Undergoing Analysis

Published: 2026-07-28T08:17:12.367

Modified: 2026-07-30T16:27:52.133

Link: CVE-2024-14041

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T15:52:56Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy