CVE-2026-90771
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 30 - wyżej niż 30% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Zastąpienie prototypu obiektu może zepsuć kod aplikacji polegający na metodach Object.prototype, prowadząc do błędów działania lub potencjalnie dalszych ataków w zależności od kontekstu użycia.
Rekomendacja
Zaktualizuj joi do wersji 17.13.8 lub 18.2.9 (lub nowszej), aby wyeliminować możliwość wstrzyknięcia klucza __proto__ w komunikatach.
Inne podatności w joi
Zobacz wszystkie- CVE-2026-118772Wysokie
W bibliotece joi od wersji 17.1.1 do 17.13.9 oraz w wersji 18.3.1 reguła Joi.string().email({ multiple: true }) używa wyrażenia regularnego separatora, którego kwantyfikator wiodących białych znaków jest ponawiany na każdej pozycji długiego ciągu białych znaków bez separatora. Powoduje to kwadratowe zużycie czasu podczas String.prototype.split, zarówno dla separatora domyślnego, jak i niestandardowego. Aplikacje walidujące wartości kontrolowane przez atakującego z opcją multiple i bez skutecznego limitu długości mogą zostać zablokowane na kilka sekund przez jedno żądanie.
- CVE-2026-92599Wysokie
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.
- 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 before versions 17.13.8 and 18.2.9 contains a prototype pollution vulnerability in the messages compilation function that accepts __proto__ as an error code. Attackers can supply __proto__ keys in custom messages to replace the returned object's prototype, breaking downstream code relying on Object.prototype methods.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

