CVE-2026-92599
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
joi (pakiet npm joi, hapi.js) w wersjach >=17.2.0 <17.13.7 oraz >=18.0.0 <18.2.6 jest podatny na odmowę usługi poprzez wyrażenia regularne w regule walidacji Joi.string().isoDate(). Jedno z wyrażeń regularnych zastosowanych do danych wejściowych nie jest zakotwiczone, więc prawidłowa data ISO, po której następuje długi ciąg cyfr ułamkowych sekund, powoduje, że silnik regex rozpoczyna wyszukiwanie od każdej pozycji w ciągu, co daje czas proporcjonalny do kwadratu długości danych wejściowych (około 1,4 s dla 64 KB cyfr i około 22 s dla 256 KB). Zdalny atakujący, który może dostarczyć ciąg do walidacji isoDate, może zatrzymać aplikację pojedynczym żądaniem. Naprawiono w 17.13.7 i 18.2.6; jako obejście należy ograniczyć długość ciągu przed przekazaniem go do joi.
Ocena ryzyka
Zdalny atakujący może wywołać odmowę usługi (DoS) pojedynczym żądaniem, powodując znaczne opóźnienia lub zawieszenie aplikacji. Może to prowadzić do niedostępności usługi dla legalnych użytkowników.
Rekomendacja
Należy zaktualizować pakiet joi do wersji 17.13.7 lub 18.2.6 (lub nowszej). Jako obejście zaleca się ograniczenie długości ciągów wejściowych przed przekazaniem ich do walidacji isoDate.
Inne podatności w joi
Zobacz wszystkie- CVE-2026-90771Niskie
Biblioteka joi w wersjach przed 17.13.8 i 18.2.9 zawiera podatność prototype pollution w funkcji kompilacji komunikatów, która akceptuje __proto__ jako kod błędu. Atakujący może dostarczyć klucze __proto__ w niestandardowych komunikatach, aby zastąpić prototyp zwracanego obiektu.
- CVE-2026-84368Niskie
Biblioteka joi (oraz @hapi/joi) zawiera podatność na zanieczyszczenie prototypu w pliku lib/messages.js. Funkcje exports.compile() i exports.merge() ponownie wykorzystują dziedziczone obiekty dla kluczy językowych kontrolowanych przez atakującego, co pozwala na zapis właściwości do Object.prototype.
- CVE-2026-84367Niskie
W bibliotece joi występuje podatność w implementacji internals.rename() używanej przez object().rename(). Pozwala ona na utworzenie schematu, który przy użyciu wyrażenia regularnego i celu Joi.expression() lub Joi.x() z interpolacją danych dopasowania, może ustawić prototyp obiektu zwracanego przez validate() na __proto__ zamiast utworzyć zwykły klucz.
- CVE-2026-48038Średnie
Podatność w bibliotece joi (wersje przed 17.13.4 i 18.2.1) umożliwia atak DoS poprzez przesłanie głęboko zagnieżdżonego JSON-a lub obiektu z rekurencyjnymi schematami link(). Wywołanie validate() bez try/catch w handlerze żądania może spowodować nieobsłużony wyjątek RangeError i potencjalnie crash procesu.
Oryginalny opis (angielski, źródło NVD)
joi (npm package `joi`, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the `Joi.string().isoDate()` validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

