CVE-2026-118772 json
joi: quadratic-time split in `string().email({ multiple: true })` allows denial of service
published 2026-10-29 10 d ago modified 2026-11-04 5 d ago also GHSA-4528-x5fx-h6hg , EUVD-2026-113320
- cvss
- 7.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 40%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- npm joi 17.13.9, 18.3.1
- github.com/hapijs/joi@03dc1d9 commit
- github.com/hapijs/joi@807858d commit
- github.com/hapijs/joi#3162 pull request
- github.com/hapijs/joi#3163 pull request
- github.com/hapijs/joi/releases/tag/v17.13.9 release
- github.com/hapijs/joi/releases/tag/v18.3.1 release
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-118772 updated cvss 7.5
joi: joi: Denial of Service via inefficient regular expression in email validation
-
Red Hat Cryostat 4 cryostat/cryostat-openshift-console-plugin-rhel9 Red Hat Migration Toolkit for Containers rhmtc/openshift-migration-ui-rhel8 Red Hat OpenShift Serverless openshift-serverless-1/logic-rhel9-operator Red Hat Enterprise Linux 8 grafana-pcp Red Hat Enterprise Linux 9 grafana, grafana-selinux, grafana 12.4.3-2.el10 Red Hat Hardened Images grafana13.1 13.1.8-0.5.hum1, grafana13.2 13.2.4-0.4.hum1, grafana12.4 12.4.13-0.5.hum1affected: workaround, no fix available
+4 more productsfewer
Red Hat OpenShift AI (RHOAI) rhoai/odh-dashboard-rhel9, rhoai/odh-mod-arch-maas-rhel9, rhoai/odh-mod-arch-automl-rhel9, rhoai/odh-mod-arch-gen-ai-rhel9, rhoai/odh-mod-arch-mlflow-rhel9, rhoai/odh-mod-arch-autorag-rhel9, +2 more Red Hat OpenShift Container Platform 4 openshift4/ose-agent-installer-ui-rhel9 Red Hat OpenShift Container Platform 5 openshift5/ose-agent-installer-ui-rhel9 Red Hat OpenShift Dev Spaces devspaces/dashboard-rhel9 -
Red Hat Data Grid 8 redhat-datagrid-maven-repository.zip 8.6.1.CR1not affected: vulnerable code not in execute path
-
Red Hat Enterprise Linux 8 grafana, grafana-loki, grafana-mssql, grafana-mysql, grafana-selinux, grafana-graphite, +9 more Red Hat Enterprise Linux 10 grafana 12.4.3-2.el10not affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 5 d ago
Exploit prediction
0.47% chance of exploitation in the next 30 days, higher than 40% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/hapijs/joi/security/advisories/GHSA-4528-x5fx-h6hg referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | joi | >=17.1.1, <17.13.9 >=18.0.0, <18.3.1 |
17.13.9 18.3.1 |
| npm | @hapi/joi | >=16.0.0, <=17.1.1 |
no fix listed |
Affected products
- hapijs joi
- @hapi joi
Classification
- Weakness
-
- CWE-1333 Inefficient Regular Expression Complexity
References
-
github.com
/hapijs/joi/pull/3162
web
-
github.com
/hapijs/joi/pull/3163
web
-
github.com
/hapijs/joi/commit/03dc1d909818503b06240dadc81e9227ed2649cf
web
-
github.com
/hapijs/joi/commit/807858d7480f5075b0610817e3e44230890fb18e
web
-
github.com
/hapijs/joi/security/advisories/GHSA-4528-x5fx-h6hg
exploit, web
-
github.com
/hapijs/joi/releases/tag/v17.13.9
web
-
github.com
/hapijs/joi/releases/tag/v18.3.1
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-118772
advisory
-
github.com
/hapijs/joi
package
Sources
- CVE List CVE-2026-118772
- GitHub Advisory GHSA-4528-x5fx-h6hg
- NVD CVE-2026-118772
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.