CVE Catalog

CVE-2026-118772

HighCVSS 7.5
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.47%

40th percentile - higher than 40% of all known CVEs

Summary

In joi 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. This 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.

Risk Assessment

An attacker can send a single request with a long whitespace run to block the Node.js event loop for seconds and prevent handling of other operations. This results in denial of service in applications validating untrusted email addresses with the multiple option.

Recommendation

Update joi to version 17.13.9 or 18.3.1 (or later). Additionally enforce an effective length limit on validated values before the email rule, noting that .max() may not suffice with abortEarly: false.

Other vulnerabilities in joi

See all
Original NVD description (English source)

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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS