HIGH🇬🇧 English

CVE-2024-14041

Bouncy Castle Java: atak czasowy KyberSlash na klucz prywatny ML-KEM

CVSS 8.2v4.0pub. 2026-07-28upd. 2026-08-26

Biblioteka Bouncy Castle dla Java zawiera podatność klasy timing side-channel (CWE-208) w implementacji algorytmu ML-KEM (CRYSTALS-Kyber), umożliwiającą odtworzenie długoterminowego klucza prywatnego. Atakujący mierzący czas wykonania dużej liczby operacji dekapsulacji może statystycznie odtworzyć sekretny klucz.

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

W wersjach od 1.73 do przed 1.78 trzy procedury ML-KEM wykonują dzielenie współczynników wielomianów, wyprowadzonych z sekretu, przez modulus q: Poly.toMsg (dekodowanie odszyfrowanej wiadomości), Poly.compressPoly oraz PolyVec.compressPolyVec (kompresja szyfrogramu). Czas wykonania dzielenia jest zależny od wartości danych wejściowych, co tworzy mierzalny kanał boczny. Są to podatności określane jako KyberSlash1 (Poly.toMsg) i KyberSlash2 (kompresja szyfrogramu). Operacja kompresji wykonywana podczas enkapsulacji działa na wartościach wchodzących w skład publicznego szyfrogramu i nie jest podatna na ten atak.

Skutki

Atakujący zdolny do wielokrotnego mierzenia czasu operacji dekapsulacji wykonywanych z użyciem tego samego długoterminowego klucza prywatnego może odtworzyć ten klucz, co prowadzi do całkowitego ujawnienia poufnych danych chronionych tym kluczem.

Mitygacja

Należy zaktualizować Bouncy Castle dla Java do wersji 1.78 lub nowszej, w której błędne dzielenia zostały poprawione. Patche dostępne są w repozytorium projektu (commity wskazane w referencjach producenta).

Kogo dotyczy

Bouncy Castle dla Java w wersjach od 1.73 do przed 1.78 (implementacja ML-KEM/CRYSTALS-Kyber)

Uwagi

Podatność obejmuje dwie oddzielne ścieżki ataku: KyberSlash1 (procedura Poly.toMsg) i KyberSlash2 (procedury kompresji szyfrogramu), opisane szczegółowo pod adresem kyberslash.cr.yp.to. Atak wymaga możliwości wykonania dużej liczby pomiarów czasu dekapsulacji (AC:H, AT:P), co ogranicza jego praktyczność, lecz nie eliminuje zagrożenia w scenariuszach z trwałymi kluczami długoterminowymi.

CVSS 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:Amber
  • Bouncycastle Bc Java

    APP
    Bouncycastle
    1.73 – 1.78 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2026-8763CRITICAL9.3PL ✓ten sam produkt

Bouncy Castle dla Java — bypass Name Constraints przez trailing dot

CVE-2026-59650CRITICAL9.3PL ✓ten sam produkt

Bouncy Castle Java: brak walidacji wartości peer w protokole MTI/A0 DH

CVE-2026-58062CRITICAL9.3PL ✓ten sam produkt

Bouncy Castle for Java — błędna weryfikacja OCSP (CWE-295)

CVE-2026-59638CRITICAL9.3PL ✓ten sam produkt

Bouncy Castle Java: błędna weryfikacja hostname (CN-fallback) w JSSE

CVE-2018-1000613CRITICAL9.8PL ✓ten sam produkt

Niebezpieczna refleksja przy deserializacji klucza XMSS w Bouncy Castle