CRITICAL🇬🇧 English

CVE-2023-46233

Krytycznie słabe ustawienia domyślne PBKDF2 w bibliotece crypto-js

CVSS 9.1v3.1pub. 2023-10-25upd. 2026-06-23

Biblioteka crypto-js w wersjach przed 4.2.0 implementuje funkcję PBKDF2 z domyślnymi ustawieniami czyniącymi ją co najmniej 1 300 000 razy słabszą niż wymaga obecny standard branżowy. Podatność stanowi poważne zagrożenie dla bezpieczeństwa haseł i podpisów kryptograficznych chronionych za pomocą tej biblioteki.

Pokaż oryginał (EN)

crypto-js is a JavaScript library of crypto standards. Prior to version 4.2.0, crypto-js PBKDF2 is 1,000 times weaker than originally specified in 1993, and at least 1,300,000 times weaker than current industry standard. This is because it both defaults to SHA1, a cryptographic hash algorithm considered insecure since at least 2005, and defaults to one single iteration, a 'strength' or 'difficulty' value specified at 1,000 when specified in 1993. PBKDF2 relies on iteration count as a countermeasure to preimage and collision attacks. If used to protect passwords, the impact is high. If used to generate signatures, the impact is high. Version 4.2.0 contains a patch for this issue. As a workaround, configure crypto-js to use SHA256 with at least 250,000 iterations.

🤖 Analiza AI
Jak działa

Problem wynika z dwóch jednoczesnych błędów w domyślnej konfiguracji PBKDF2: użycia algorytmu SHA1 (uznawanego za kryptograficznie niepewny co najmniej od 2005 roku) oraz ustawienia liczby iteracji na zaledwie 1, podczas gdy specyfikacja z 1993 roku zakładała 1 000 iteracji, a aktualne standardy branżowe wymagają wartości rzędu setek tysięcy. Funkcja PBKDF2 opiera swoje bezpieczeństwo właśnie na liczbie iteracji jako mechanizmie utrudniającym ataki preimage i kolizyjne. Tak skonfigurowana funkcja jest 1 000 razy słabsza niż zakładała oryginalna specyfikacja z 1993 roku i drastycznie podatna na ataki siłowe oraz słownikowe.

Skutki

Atakujący uzyskujący dostęp do skrótów (hashy) haseł lub kluczy kryptograficznych wygenerowanych za pomocą podatnej konfiguracji PBKDF2 może je złamać w znacznie krótszym czasie niż zakładano. W zależności od zastosowania może to prowadzić do przejęcia kont użytkowników (ujawnienie haseł) lub sfałszowania podpisów kryptograficznych (naruszenie integralności danych).

Mitygacja

Należy zaktualizować crypto-js do wersji 4.2.0, która zawiera patch eliminujący problem. Jako obejście (workaround) bez aktualizacji: skonfigurować jawnie użycie algorytmu SHA256 oraz ustawić liczbę iteracji na co najmniej 250 000.

Kogo dotyczy

Biblioteka crypto-js (projekt Crypto-Js Project) we wszystkich wersjach przed 4.2.0, wszędzie tam gdzie wykorzystywana jest funkcja PBKDF2 z domyślnymi ustawieniami.

Uwagi

Podatność dotyczy wyłącznie funkcji PBKDF2 — pozostałe funkcje kryptograficzne biblioteki crypto-js nie są objęte tym zgłoszeniem. Ryzyko jest szczególnie wysokie w aplikacjach przechowujących hashe haseł użytkowników lub generujących podpisy kryptograficzne przy użyciu domyślnych ustawień PBKDF2.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Crypto Js Project Crypto Js

    APP
    Crypto-Js Project
    < 4.2.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2020-36732MEDIUM5.3ten sam produkt

The crypto-js package before 3.2.1 for Node.js generates random numbers by concatenating the string "0." with ...