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.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-1333"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/118xxx/CVE-2026-118772.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "16.0.0"
},
{
"last_affected": "17.1.1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "18.0.0"
},
{
"fixed": "18.3.1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "03dc1d909818503b06240dadc81e9227ed2649cf"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "807858d7480f5075b0610817e3e44230890fb18e"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "v17.13.9",
"range": [
{
"fixed": "5af45306226782035951fdc49f10fab5ebe021a2"
}
],
"source": "REFERENCES_TAG"
},
{
"original_tag": "v18.3.1",
"range": [
{
"fixed": "4009bfb93639b7da53b7cb1de2e2d8617d36d5f5"
}
],
"source": "REFERENCES_TAG"
}
]
}