CVE-2026-72888
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 36 - wyżej niż 36% wszystkich znanych CVE
Streszczenie
Net::OAuth przed wersją 0.32 dla Perla pozwala na wyczerpanie pamięci poprzez nieograniczone buforowanie nieudanych ładowań modułów w smart_require. smart_require przechowuje wyniki w globalnym hashu procesu bez limitu i bez usuwania, zachowując wpis dla każdej nazwy klasy, o którą zapytano, w tym nazw, które nie załadowały się, ponieważ wartość zwracana przez nieudane eval jest przechowywana przed sprawdzeniem błędu. Klucz pochodzi z sieci po stronie serwera: _signature_method_class buduje nazwę klasy z parametru signature_method przychodzącej wiadomości, a verify rozwiązuje ją przed sprawdzeniem podpisu. Zdalny klient wybiera zarówno liczbę wpisów, jak i długość każdego klucza. W trwałym serwerze hash rośnie przez cały czas życia procesu roboczego, aż do wyczerpania pamięci. Limity rozmiaru nagłówka ograniczają długość klucza w ścieżce nagłówka Authorization, ale nie w treści POST.
Ocena ryzyka
Ryzyko polega na możliwości zdalnego wyczerpania pamięci serwera, co prowadzi do niedostępności usługi (denial of service). Atakujący może wysyłać wiele żądań z różnymi parametrami, powodując niekontrolowany wzrost zużycia pamięci.
Rekomendacja
Zaleca się aktualizację Net::OAuth do wersji 0.32 lub nowszej, która zawiera poprawkę ograniczającą buforowanie. Należy również rozważyć wprowadzenie limitów na rozmiar i liczbę żądań oraz monitorowanie zużycia pamięci.
Inne podatności w Net::OAuth
Zobacz wszystkie- CVE-2026-72889Krytyczne
W bibliotece Net::OAuth dla Perla przed wersją 0.33 nadawca wiadomości może wybrać algorytm podpisu używany do weryfikacji. Parametr signature_method jest wymagany w każdym żądaniu, więc strona weryfikująca nie może narzucić metody. Jeśli wiadomość wskazuje HMAC-SHA1 lub HMAC-SHA256, klucz jest wyprowadzany z consumer_secret i token_secret, a nie z klucza dostawcy. Dostawca używający RSA-SHA1 posiada tylko publiczny klucz konsumenta, a RFC 5849 nie używa consumer_secret dla tej metody, więc wymagany parametr jest wypełniany wartością zastępczą. Klient, który zamiast tego użyje HMAC-SHA1, ma sprawdzany podpis względem tej wartości zastępczej, więc łatwa do odgadnięcia wartość wystarczy do sfałszowania żądań dla dowolnego klucza konsumenta i tokena.
- CVE-2026-75589Wysokie
Net::OAuth dla Perla przed wersją 0.33 sprawdza podpisy HMAC-SHA1, HMAC-SHA256 i PLAINTEXT za pomocą porównania nie w stałym czasie w funkcji verify. Każde z trzech porównań używa operatora eq, który zwraca wynik natychmiast po wykryciu różnicy, co pozwala na odtworzenie podpisu bajt po bajcie na podstawie czasu odpowiedzi. W przypadku PLAINTEXT porównywana wartość to sam klucz podpisu, co umożliwia odzyskanie consumer_secret i token_secret.
Oryginalny opis (angielski, źródło NVD)
Net::OAuth versions before 0.32 for Perl allow memory exhaustion via unbounded caching of failed module loads in smart_require. smart_require stores results in a process-global hash with no bound and no eviction, and keeps an entry for every class name it is asked about, including names that failed to load, because the return value of the failed eval is stored before the error is checked. The key comes off the wire on the server side: _signature_method_class builds the class name from the signature_method parameter of the incoming message, and verify resolves it before any signature is checked. A remote client chooses both how many entries are created and how long each key is. In a persistent server the hash grows for the life of the worker process until it exhausts memory. Header size limits bound the key length on the Authorization header path, but not on a POST body.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

