Katalog CVE

CVE-2026-118772

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.47%

Percentyl 40 - wyżej niż 40% wszystkich znanych CVE

Streszczenie

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.

Ocena ryzyka

Atakujący może wysłać jedno żądanie z długim ciągiem białych znaków, aby zablokować pętlę zdarzeń Node.js na kilka sekund i uniemożliwić obsługę innych operacji. Prowadzi to do odmowy usługi w aplikacjach walidujących niezaufane adresy e-mail z opcją multiple.

Rekomendacja

Zaktualizuj joi do wersji 17.13.9 lub 18.3.1 (lub nowszej). Dodatkowo wprowadź skuteczny limit długości walidowanych wartości przed regułą email, pamiętając, że .max() może nie wystarczyć przy abortEarly: false.

Inne podatności w joi

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

joi is a schema description language and data validator for JavaScript. From 17.1.1 until 17.13.9 and 18.3.1, the Joi.string().email({ multiple: true }) rule uses a separator regular expression whose leading whitespace quantifier is retried at every position in a long whitespace run that contains no separator, causing quadratic work during String.prototype.split. The behavior applies to the default separator and every custom separator. Applications that validate attacker-controlled values with the multiple option and no effective prior length limit can have the Node.js event loop blocked for seconds by one request, preventing other work. A .max() rule is not sufficient when abortEarly: false allows the email rule to run after the maximum-length check fails. This vulnerability is fixed in versions 17.13.9 and 18.3.1.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS