CVE-2026-48038
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może doprowadzić do przerwania działania aplikacji (crash procesu) poprzez wysłanie specjalnie spreparowanego żądania z głęboko zagnieżdżonymi danymi, co skutkuje odmową usługi (DoS).
Rekomendacja
Należy niezwłocznie zaktualizować bibliotekę joi do wersji 17.13.4 lub 18.2.1 (lub nowszej). W międzyczasie zaleca się stosowanie try/catch wokół wywołań validate() oraz ograniczenie głębokości zagnieżdżenia danych wejściowych.
Inne podatności w joi
Zobacz wszystkie- 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.
Oryginalny opis (angielski, źródło NVD)
joi is a schema description language and data validator for JavaScript. Prior to 17.13.4 and 18.2.1, denial of service is possible via an untrapped exception in services validating user-supplied JSON or object input with recursive link() schemas. When validate() is called without try/catch in a request handler, deeply nested input can trigger an unhandled RangeError and potentially crash the process; lower-impact paths using validateAsync() or try/catch produce a RangeError instead of a structured ValidationError. This issue is fixed in versions 17.13.4 and 18.2.1.

