Dancer2 w wersjach do 2.1.0 włącznie generuje niepewne kryptograficznie identyfikatory sesji, gdy wymagane moduły CSPRNG są niedostępne. Atakujący może przewidzieć lub odgadnąć identyfikator sesji i uzyskać nieautoryzowany dostęp do systemu.
▸ Pokaż oryginał (EN)
Dancer2 versions through 2.1.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable. Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available. The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function). These are all low-entropy and easily guessed sources. The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications. Predictable session ids could allow an attacker to gain access to systems.
Gdy moduły Math::Random::ISAAC::XS oraz Crypt::URandom są niedostępne, funkcja Dancer2::Core::Role::SessionFactory::generate_id cicho przełącza się na mechanizm zastępczy oparty na wbudowanej funkcji rand(). Wygenerowany identyfikator sesji pochodzi z hasha SHA-1 obliczonego na podstawie wartości rand(), bezwzględnej ścieżki modułu, wewnętrznego licznika, identyfikatora procesu (PID), adresu pamięci instancji modułu oraz losowo przesuniętego ciągu znaków — przy czym List::Util::shuffle również korzysta z rand(). Wszystkie te składniki są niskoentropijne i łatwe do przewidzenia. Wbudowana funkcja rand() inicjalizowana jest jedynie 32-bitowym ziarnem i nie jest uznawana za bezpieczną kryptograficznie.
Atakujący może przewidzieć lub brutalnie odgadnąć aktywny identyfikator sesji innego użytkownika, co prowadzi do przejęcia sesji i nieautoryzowanego dostępu do aplikacji oraz danych użytkownika.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo należy upewnić się, że w środowisku uruchomieniowym zainstalowane są oba moduły: Math::Random::ISAAC::XS oraz Crypt::URandom, co wymusza użycie bezpiecznego kryptograficznie generatora liczb pseudolosowych (CSPRNG).
Dancer2 dla Perl w wersjach do 2.1.0 włącznie, gdy moduły Math::Random::ISAAC::XS lub Crypt::URandom nie są zainstalowane w środowisku.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H