CVE-2026-84367
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 19 - wyżej niż 19% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wpłynąć na prototyp obiektu zwracanego przez walidację, co może prowadzić do nieoczekiwanego zachowania aplikacji, ale nie modyfikuje globalnego Object.prototype.
Rekomendacja
Zaktualizuj bibliotekę joi do wersji 17.13.5 lub 18.2.4, które zawierają poprawkę.
Inne podatności w joi
Zobacz wszystkie- 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-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-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 is a schema description language and data validator for JavaScript. From 16.0.0 until 17.13.5 and 18.2.4, joi's lib/types/keys.js internals.rename() implementation used by object().rename() permits a schema that renames keys with a regular-expression source and a Joi.expression() or Joi.x() target that interpolates the pattern's own match data, combined with { multiple: true }, to derive a target from an attacker-controlled input key. An attacker can send x-__proto__ with an object value, causing the target to render as __proto__ and set the prototype of the object returned by validate() instead of creating an own key. The global Object.prototype is not modified, so the effect is confined to the object returned by that validation call. Static-string targets and schemas using the default { multiple: false } are not affected. This issue is fixed in versions 17.13.5 and 18.2.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

