W Node.js 18 wykryto podatność polegającą na użyciu kryptograficznie słabego źródła losowości podczas generowania kluczy przez interfejs WebCrypto. Może to prowadzić do tworzenia kluczy kryptograficznych o niedostatecznej entropii, co znacząco obniża ich odporność na ataki.
▸ Pokaż oryginał (EN)
A weak randomness in WebCrypto keygen vulnerability exists in Node.js 18 due to a change with EntropySource() in SecretKeyGenTraits::DoKeyGen() in src/crypto/crypto_keygen.cc. There are two problems with this: 1) It does not check the return value, it assumes EntropySource() always succeeds, but it can (and sometimes will) fail. 2) The random data returned byEntropySource() may not be cryptographically strong and therefore not suitable as keying material.
Problem tkwi w funkcji SecretKeyGenTraits::DoKeyGen() w pliku src/crypto/crypto_keygen.cc, gdzie wywołanie EntropySource() nie sprawdza wartości zwracanej — kod zakłada, że funkcja zawsze się powiedzie, podczas gdy może ona zawieść. Dodatkowo dane losowe zwracane przez EntropySource() mogą nie być kryptograficznie silne, co oznacza, że nie nadają się jako materiał kluczowy. W rezultacie wygenerowane klucze mogą być przewidywalne lub powtarzalne, co podważa bezpieczeństwo całego systemu kryptograficznego opartego na WebCrypto API.
Atakujący może być w stanie odtworzyć lub przewidzieć wygenerowane klucze kryptograficzne, co prowadzi do naruszenia poufności i integralności danych chronionych tymi kluczami.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dla dystrybucji Debian dostępna jest aktualizacja opisana w DSA-5326. Użytkownicy Siemens SINEC INS powinni zapoznać się z biuletynem SSA-332410.
Node.js 18 (oraz produkty oparte na tej wersji, m.in. Siemens SINEC INS — szczegółowe wersje wskazane w referencjach producenta)
Podatność zgłoszona za pośrednictwem platformy HackerOne (raport #1690000). Dotyczy wyłącznie Node.js 18 w związku ze zmianą wprowadzoną w EntropySource().
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NDebian
OSDebian11.0Node.js
APPNodejs16.0.0 – 16.12.016.13.0 – 16.17.1 (bez)15.0.0 – 15.14.018.0.0 – 18.9.1 (bez)Siemens Sinec Ins
APPSiemens1.0< 1.0
Powiązane podatności
GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER
Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)
RCE przez deserializację PHP w Roundcube Webmail (parametr _from)
Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)
Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki