CVE-2026-118772: joi · quadratic-time split in `string().email({ multiple: true })` allows denial of service
Affects joiSource GCVE Database
Not known to be exploited · CVSS 7.5 High : upgrade to 17.13.9 soon.
Data as of 31 Oct 2026, 01:54 UTC
Thin evidence
One scorer or none| CNA (GitHub_M) | CVSS 3.1 | 7.5 |
|---|
- Patch
- Available – fixed in 17.13.9, 18.3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HExploitation evidence
Disclosed: evidence found.
CVE published 29 Oct 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade joi to 17.13.9; joi to 18.3.1.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| npmjoi | Affected
| Fixed in
|
| npm@hapi/joi | Affected
| Fixed in– |
| npmjoi | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
A fix is available in joi versions 17.13.9 and 18.3.1. Users should upgrade to these or later versions to resolve the vulnerability. For users unable to upgrade immediately, applying a .max() length constraint before the .email({ multiple: true }) validation can prevent long inputs from reaching the vulnerable code. Avoid using the abortEarly: false option with this schema, as it causes the email rule to run even if the max rule fails. Using .trim() is not an effective workaround as it only removes whitespace at the start and end of the input.
Description
A denial of service vulnerability exists in the joi library's string email validation when using the multiple option. The email validation splits input strings using a regular expression that performs in quadratic time on long runs of whitespace, causing the Node.js event loop to block for several seconds with large whitespace inputs. This affects joi versions from 16.0.0 through 17.13.8 and 18.0.0 through 18.3.0. The issue is fixed in joi versions 17.13.9 and 18.3.1.
References
- github.com/hapijs/joi/security/advisories/GHSA-4528-x5fx-h6hg (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-118772 (opens in a new tab)
- github.com/hapijs/joi/pull/3162 (opens in a new tab)
- github.com/hapijs/joi/pull/3163 (opens in a new tab)
- github.com/hapijs/joi/commit/03dc1d909818503b06240dadc81e9227ed2649cf (opens in a new tab)
- github.com/hapijs/joi/commit/807858d7480f5075b0610817e3e44230890fb18e (opens in a new tab)
- github.com/hapijs/joi (opens in a new tab)
- github.com/hapijs/joi/releases/tag/v17.13.9 (opens in a new tab)
- github.com/hapijs/joi/releases/tag/v18.3.1 (opens in a new tab)