Live › vulnerability › CVE-2026-118772
Joi's email validator with the multiple option uses a regular expression that runs in quadratic time on long whitespace runs. A single crafted request can block the Node.js event loop for seconds, stalling other work in the server.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-29 19:26 UTC. All times on this page are UTC.
Applications that call Joi.string().email({ multiple: true }) on attacker-controlled values. A length limit only protects the code if it runs first; with abortEarly: false the email rule can still run on an oversized value. Projects that do not use the multiple option, or validate only trusted input, are not exposed.
No product ranges from the sources yet.
npm ls joi; affected versions are from 17.1.1 up to but not including 17.13.9, and 18.3.1.email({ multiple: true }) or email({multiple: true to find validators that accept attacker-controlled input..max() length limit runs before the email rule, and whether abortEarly: false is set.17.x: move to 17.13.918.x: move to 18.3.1Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
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.
This page as .md · .json · in your agent: get_signal("CVE-2026-118772")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.