Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-118772— joi: quadratic-time split in `string().email({ multiple: true })` allows denial of service

Quick assessment

Affected
hapijs joi
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Joi 是用于 JavaScript 的模式描述语言和数据验证库。在 17.1.1 至 17.13.9 以及 18.3.1 版本中, 规则所使用的分隔符正则表达式,其前导空白字符的量词会在不包含分隔符的长空白序列中,于每个位置重复尝试匹配,从而导致 执行二次方(O(n²))复杂度的操作。该行为既适用于默认分隔符,也适用于任何自定义分隔符。若应用程序使用 选项验证由攻击者控制的数据,且未实施有效的输入长度限制,则单个请求即可阻塞 Node.js 事件循环数秒,致使其他任务无法执行。仅添加 规则并不足够,因为当 时,即

CVSS 7.5 · High

Possible ATT&CK Techniques 1 AI

T1190 · Exploit Public-Facing Application

Affected Version Matrix 3

VendorProduct Version RangeStatus
@hapi joi >= 16.0.0, <= 17.1.1 affected
hapijs joi >= 16.0.0, <= 17.1.1 affected
>= 18.0.0, < 18.3.1 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-118772

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
joi: quadratic-time split in `string().email({ multiple: true })` allows denial of service
Source: CVE Program / CVE List V5
Vulnerability Description
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.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
CWE-1333
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
hapijs joi >= 16.0.0, <= 17.1.1 -
@hapi joi >= 16.0.0, <= 17.1.1 -

II. Public POCs for CVE-2026-118772

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-118772

请登录查看更多情报信息。

Patches & Fixes for CVE-2026-118772 (3)

Vendor Advisories for CVE-2026-118772 (1)

Vendor Pages for CVE-2026-118772 (2)

IV. Related Vulnerabilities