CRITICAL🇬🇧 English

CVE-2026-71851

crypto-js: słaby generator losowości umożliwia odtworzenie kluczy prywatnych

CVSS 9.0v3.1pub. 2026-08-07upd. 2026-08-08

Biblioteka crypto-js w wersjach przed 4.0.0 generuje losowość przy użyciu kryptograficznie niebezpiecznego generatora pseudolosowego opartego na Math.random(), co drastycznie redukuje przestrzeń możliwych wartości. Atakujący może w praktyce wyliczyć wszystkie możliwe wyniki i odtworzyć klucze prywatne portfeli kryptowalutowych opartych na tej bibliotece.

Pokaż oryginał (EN)

crypto-js is a JavaScript library of crypto standards. Versions of crypto-js prior to 4.0.0 generate randomness in CryptoJS.lib.WordArray.random() using a custom variation of the Multiply-With-Carry pseudorandom number generator, seeded from Math.random(), instead of a cryptographically secure source. This generator was introduced in version 3.1.2-4 and remained present in nearly every 3.x release. Nominal requests for 128 or 256 bits of entropy through this function produce effective search spaces of approximately 2 to the 39th and 2 to the 47th possibilities, small enough to enumerate on commodity hardware. Downstream wallet applications that used CryptoJS.lib.WordArray.random() as the entropy source for BIP39 recovery phrases are affected, and an attacker who enumerates the reduced output space can recover the resulting private keys and control the associated funds. This issue is fixed in version 4.0.0.

🤖 Analiza AI
Jak działa

Funkcja CryptoJS.lib.WordArray.random() od wersji 3.1.2-4 używa własnej odmiany algorytmu Multiply-With-Carry (MWC) zasilanego wartościami z Math.random() — źródła nieprzeznaczonego do zastosowań kryptograficznych. Nominalne żądania 128 lub 256 bitów entropii skutkują w praktyce przestrzenią poszukiwań rzędu odpowiednio 2^39 i 2^47 możliwości. Przestrzenie te są na tyle małe, że możliwe do wyczerpującego przeszukania na ogólnodostępnym sprzęcie. Aplikacje portfelowe korzystające z tej funkcji do generowania fraz odtworzeniowych BIP39 są szczególnie narażone, ponieważ atakujący może odtworzyć frazy i przejąć kontrolę nad środkami.

Skutki

Atakujący może odtworzyć klucze prywatne portfeli kryptowalutowych wygenerowanych przy użyciu podatnej funkcji i przejąć pełną kontrolę nad powiązanymi środkami finansowymi. Dotyczy to każdej aplikacji, która polegała na CryptoJS.lib.WordArray.random() jako źródle entropii do celów kryptograficznych.

Mitygacja

Należy zaktualizować crypto-js do wersji 4.0.0 lub nowszej, która korzysta z kryptograficznie bezpiecznego źródła losowości zamiast Math.random(). Dodatkowo wszelkie klucze prywatne i frazy odtworzeniowe BIP39 wygenerowane przy użyciu podatnych wersji biblioteki należy uznać za skompromitowane i niezwłocznie zastąpić nowymi, wygenerowanymi z użyciem bezpiecznej entropii.

Kogo dotyczy

Biblioteka crypto-js w wersjach od 3.1.2-4 do wszystkich wydań z gałęzi 3.x (przed wersją 4.0.0). Szczególnie narażone są downstream'owe aplikacje portfelowe kryptowalut generujące frazy BIP39 przy użyciu tej biblioteki.

Uwagi

Podatność wprowadzona w wersji 3.1.2-4 była obecna przez prawie wszystkie wydania gałęzi 3.x. Szczegółowa analiza opublikowana została przez firmę Coinspect pod adresem wskazanym w referencjach. Problem zgłoszony w ramach GitHub Security Advisory GHSA-rg76-677x-56q9.

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje