CVE-2024-14041: Bouncy Castle for Java timing side-channel in ML-KEM

CVE-2024-14041 · Severity: info · CVSS 8.2 · Published 2026-07-28

Bouncy Castle for Java, a widely used library for secure communications and data encryption, contains a flaw in its implementation of the ML-KEM (Kyber) algorithm. This vulnerability allows an attacker to potentially recover a server's long-term private encryption key by measuring the time it takes to process a large number of requests. If successful, this would allow the attacker to decrypt sensitive communications or impersonate the affected service.

Technologies: Legion of the Bouncy Castle Inc. BC-JAVA (bcprov). Vendors: Legion of the Bouncy Castle Inc..

Quick answers

Is CVE-2024-14041 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2024-14041 being exploited in the wild.
How severe is CVE-2024-14041?
Informational severity, with a CVSS score of 8.2, published 28 July 2026.
Which products and versions are affected?
Legion of the Bouncy Castle Inc. BC-JAVA (bcprov) 1.73 to before 1.78.
Is there a fix for CVE-2024-14041?
A patch was published: Fixed in Bouncy Castle for Java 1.78 Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2024-14041 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2024-14041?
Check whether you run Legion of the Bouncy Castle Inc. BC-JAVA (bcprov) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

A timing side-channel vulnerability (CWE-208), known as KyberSlash, exists in Bouncy Castle for Java's ML-KEM (CRYSTALS-Kyber) implementation. The routines Poly.toMsg, Poly.compressPoly, and PolyVec.compressPolyVec perform division of secret-derived polynomial coefficients by the modulus q. Because these division operations are not constant-time on many CPU architectures, the execution time varies based on the secret values. A remote attacker who can perform a large number of decapsulations using the same long-term private key and accurately measure the timing differences can statistically recover the private key. The issue was addressed in version 1.78 by implementing constant-time division routines.

Affected products

  • Legion of the Bouncy Castle Inc. BC-JAVA (bcprov) 1.73 to before 1.78

Timeline

  • 2026-07-28: advisory: NVD publication date
  • 2024-06-24: other: KyberSlash research published
  • patched: Fixed in Bouncy Castle for Java 1.78

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.