CVE-2026-84368
NiskieCVSS 3.7Streszczenie
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.
Ocena ryzyka
Aplikacje, które polegają na obecności dziedziczonych właściwości, mogą podejmować błędne decyzje dla każdego obiektu, co może prowadzić do nieprawidłowego działania lub naruszenia logiki bezpieczeństwa.
Rekomendacja
Zaktualizuj bibliotekę joi do wersji 17.13.6 lub 18.2.5. Dla @hapi/joi nie ma dostępnej poprawki, więc rozważ migrację do joi.
Inne podatności w joi
Zobacz wszystkie- 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 is a schema description language and data validator for JavaScript. From 16.0.0 until 17.13.6 and 18.2.5, the @hapi/joi package through 17.1.1 and the successor joi package contain prototype pollution in lib/messages.js, where exports.compile() and exports.merge() reuse inherited objects for attacker-controlled language keys supplied through messages(), message(), prefs({ messages }), Joi.extend({ messages }), or rule({ message }). A language key named __proto__ writes properties onto Object.prototype, and constructor writes to the Object function's static properties. A consuming application that gates on the presence of an inherited property can take the wrong branch for every inspected object. The flaw is not reachable from data that joi validates and requires an application to feed untrusted input directly into schema-construction configuration. This issue is fixed in joi versions 17.13.6 and 18.2.5; no fixed @hapi/joi version is available.

