Makro GENERATE_SEED w PHP generuje niewystarczającą ilość entropii (24 bity zamiast oczekiwanej) na systemach 64-bitowych, co znacząco osłabia jakość liczb losowych produkowanych przez funkcje rand i mt_rand. Ułatwia to atakującym przeprowadzenie ataku brute force na mechanizmy ochronne oparte na tych funkcjach.
▸ Pokaż oryginał (EN)
The GENERATE_SEED macro in PHP 4.x before 4.4.8 and 5.x before 5.2.5, when running on 64-bit systems, performs a multiplication that generates a portion of zero bits during conversion due to insufficient precision, which produces 24 bits of entropy and simplifies brute force attacks against protection mechanisms that use the rand and mt_rand functions.
Na systemach 64-bitowych makro GENERATE_SEED wykonuje mnożenie, podczas którego z powodu niewystarczającej precyzji arytmetycznej część bitów wyniku przyjmuje wartość zero. Skutkuje to tym, że wygenerowane ziarno (seed) zawiera jedynie 24 bity rzeczywistej entropii zamiast wartości oczekiwanej dla danej architektury. Zmniejszona przestrzeń możliwych ziaren sprawia, że przewidzenie kolejnych wartości zwracanych przez rand i mt_rand staje się praktycznie wykonalne za pomocą ataku brute force.
Atakujący może przewidzieć wartości generowane przez funkcje rand i mt_rand, co pozwala na obejście mechanizmów bezpieczeństwa opartych na losowości — np. tokenów sesji, tokenów CSRF, jednorazowych haseł lub linków do resetowania hasła.
Należy zaktualizować PHP do wersji 4.4.8 lub nowszej (dla gałęzi 4.x) albo do wersji 5.2.5 lub nowszej (dla gałęzi 5.x). Użytkownicy dystrybucji Fedora i Ubuntu powinni zastosować patche dostępne u producenta dystrybucji zgodnie z referencjami. Dodatkowo zaleca się zastąpienie funkcji rand i mt_rand kryptograficznie bezpiecznymi źródłami losowości (np. openssl_random_pseudo_bytes) wszędzie tam, gdzie losowość ma znaczenie dla bezpieczeństwa.
PHP 4.x przed wersją 4.4.8 oraz PHP 5.x przed wersją 5.2.5, działające na systemach 64-bitowych. Dotyczy również dystrybucji Fedora oraz Canonical Ubuntu Linux zawierających podatne wersje PHP.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCanonical Ubuntu
OSCanonical6.067.047.108.04Debian
OSDebian4.0Fedora Project Fedora
OSFedoraproject89PHP
APPPhp5.0.0 – 5.2.5 (bez)4.0.0 – 4.4.8 (bez)
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