Biblioteka Maypole dla języka Perl w wersjach 2.10–2.13 generuje identyfikatory sesji w sposób przewidywalny, opierając się na łatwo dostępnych danych. Podatność umożliwia atakującemu odgadnięcie lub odtworzenie aktywnych identyfikatorów sesji i przejęcie sesji użytkowników.
▸ Pokaż oryginał (EN)
Maypole versions from 2.10 through 2.13 for Perl generates session ids insecurely. The session id is seeded with the system time (which is available from HTTP response headers), a call to the built-in rand() function, and the PID.
Identyfikator sesji jest generowany na podstawie trzech elementów: czasu systemowego serwera, wyniku wbudowanej funkcji rand() oraz identyfikatora procesu (PID). Czas systemowy jest dostępny publicznie w nagłówkach odpowiedzi HTTP, funkcja rand() w Perlu nie jest kryptograficznie bezpieczna, a PID można zgadnąć lub wyliczyć metodą brute-force. Połączenie tych słabych źródeł entropii (CWE-338 — użycie kryptograficznie słabego generatora liczb pseudolosowych) sprawia, że przestrzeń możliwych identyfikatorów sesji jest drastycznie ograniczona i przewidywalna.
Atakujący zdalny, nieuwierzytelniony może odgadnąć lub odtworzyć ważne identyfikatory sesji, co prowadzi do przejęcia sesji zalogowanych użytkowników, a w konsekwencji do nieautoryzowanego dostępu do ich kont i danych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu aktualizacji zaleca się rozważenie wdrożenia zewnętrznego mechanizmu zarządzania sesjami opartego na kryptograficznie bezpiecznym generatorze liczb losowych.
Teejay Maypole dla Perl w wersjach od 2.10 do 2.13 włącznie
Podatność jest technicznie trywializowana przez fakt, że czas systemowy serwera jest bezpośrednio ujawniany w nagłówkach odpowiedzi HTTP, co znacząco zawęża przestrzeń poszukiwań identyfikatora sesji. Kod podatnej funkcji jest publicznie dostępny w repozytorium CPAN (Maypole::Session, linia 43).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HTeejay Maypole
APPTeejay2.1112.1212.10 – 2.13