Biblioteka Starch w wersji 0.14 i wcześniejszych generuje identyfikatory sesji w sposób kryptograficznie niezabezpieczony, co umożliwia ich przewidzenie przez atakującego. Podatność jest krytyczna, ponieważ może pozwolić na przejęcie aktywnych sesji użytkowników bez znajomości hasła.
▸ Pokaż oryginał (EN)
Starch versions 0.14 and earlier generate session ids insecurely. The default session id generator returns a SHA-1 hash seeded with a counter, the epoch time, the built-in rand function, the PID, and internal Perl reference addresses. The PID will come from a small set of numbers, and the epoch time may be guessed, if it is not leaked from the HTTP Date header. The built-in rand function is unsuitable for cryptographic usage. Predicable session ids could allow an attacker to gain access to systems.
Domyślny generator identyfikatorów sesji w bibliotece Starch tworzy skrót SHA-1 na podstawie przewidywalnych danych wejściowych: licznika, czasu epoki (epoch time), wbudowanej funkcji rand języka Perl, identyfikatora procesu (PID) oraz wewnętrznych adresów referencji Perl. PID pochodzi z ograniczonego zakresu wartości, czas epoki może zostać odczytany z nagłówka HTTP Date lub odgadnięty, natomiast wbudowana funkcja rand w Perl nie jest przeznaczona do zastosowań kryptograficznych. Połączenie tych słabych źródeł entropii sprawia, że wygenerowane identyfikatory sesji są przewidywalne i możliwe do odtworzenia przez atakującego.
Atakujący może przewidzieć lub odtworzyć ważne identyfikatory sesji i w ten sposób uzyskać nieautoryzowany dostęp do systemów oraz kont innych użytkowników bez konieczności podawania danych uwierzytelniających.
Należy zaktualizować bibliotekę Starch do wersji zawierającej poprawkę opisaną w commit 5573449e64e0660f7ee209d1eab5881d4ccbee3b dostępnym w repozytorium GitHub projektu (pull request #5). Szczegóły patcha dostępne są pod adresem: https://github.com/bluefeet/Starch/commit/5573449e64e0660f7ee209d1eab5881d4ccbee3b.patch
Biblioteka Starch w wersji 0.14 i wcześniejszych (język Perl)
Podatność klasyfikowana jako CWE-338 (użycie kryptograficznie słabego generatora liczb pseudolosowych) oraz CWE-340 (przewidywalne generowanie liczb). Czas epoki może być dodatkowo ułatwiony do odgadnięcia przez wyciek z nagłówka HTTP Date.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N