CVE Catalog

CVE-2024-14041

MediumCVSS 5.9
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.28%

19th percentile - higher than 19% of all known CVEs

Summary

In Bouncy Castle for Java (versions 1.73 to 1.78), three ML-KEM (CRYSTALS-Kyber) routines divide polynomial coefficients by the modulus q, allowing an attacker who measures the timing of many decapsulations with the same private key to recover that key. This affects Poly.toMsg (KyberSlash1) and ciphertext compression functions (KyberSlash2).

Risk Assessment

An attacker can recover the long-term private key, enabling decryption of all previously and subsequently intercepted messages, compromising communication confidentiality.

Recommendation

Immediately update Bouncy Castle to version 1.78 or later, which fixes this vulnerability. Consider using alternative Kyber implementations not vulnerable to timing attacks.

Other vulnerabilities in Bouncy Castle

See all
Original NVD description (English source)

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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS