Funkcja random() w bibliotece libc (OpenBSD, dietlibc, Debian Linux) zawsze zwraca wartość 0, gdy zostanie zainicjowana (seeded) wartością 0. Powoduje to przewidywalność generowanych liczb pseudolosowych, co jest krytycznym błędem w kontekście bezpieczeństwa kryptograficznego.
▸ Pokaż oryginał (EN)
lib/libc/stdlib/random.c in OpenBSD returns 0 when seeded with 0.
Podatność wynika z błędnej implementacji generatora liczb pseudolosowych (CWE-335: nieprawidłowe użycie ziarna/seeda) w pliku lib/libc/stdlib/random.c. Gdy aplikacja inicjuje generator wartością 0 (np. w wyniku braku lub niepowodzenia inicjalizacji), funkcja random() deterministycznie zwraca 0 zamiast generować nieprzewidywalny ciąg wartości. Atakujący, który może przewidzieć lub wymusić użycie takiego ziarna, uzyskuje pełną kontrolę nad 'losowymi' wartościami generowanymi przez aplikację.
Atakujący może przewidywać wartości uznawane za losowe (np. tokeny sesji, klucze kryptograficzne, identyfikatory), co prowadzi do naruszenia poufności, integralności i dostępności systemów korzystających z tej biblioteki.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dla OpenBSD dostępna jest poprawka opisana w rewizji rev1.16 repozytorium CVS (src/lib/libc/stdlib/random.c). Dla dietlibc należy zapoznać się z plikiem CHANGES w repozytorium GitHub. Dla Debian Linux należy sprawdzić security-tracker.debian.org.
OpenBSD (plik src/lib/libc/stdlib/random.c), Dietlibc Project dietlibc, Debian Linux — wersje wskazane w referencjach producenta
Podatność zgłoszona i opisana publicznie na liście oss-security w dniu 23 marca 2012 roku. Pomimo daty publikacji CVE (2019-12-10), problem był znany i dyskutowany znacznie wcześniej.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDebian
OSDebian10.08.09.0Dietlibc Project Dietlibc
APPDietlibc Projectwszystkie wersjeOpenbsd
OSOpenbsdwszystkie wersje
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