Medium severity · published Jul 14, 2026
CVE-2026-48038
joi: Uncaught RangeError on deeply nested input through recursive `link()` schemas
5.3
CVSS
0.5%
EPSS
No
On KEV
Description
joi is a schema description language and data validator for JavaScript. Prior to 17.13.4 and 18.2.1, denial of service is possible via an untrapped exception in services validating user-supplied JSON or object input with recursive link() schemas. When validate() is called without try/catch in a request handler, deeply nested input can trigger an unhandled RangeError and potentially crash the process; lower-impact paths using validateAsync() or try/catch produce a RangeError instead of a structured ValidationError. This issue is fixed in versions 17.13.4 and 18.2.1.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Confidentiality
None
Integrity
None
Availability
Low
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.5% · higher than 44% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
JO
joi · hapijs
< 17.13.4; >= 18.0.0, < 18.2.1 · source: vendor
Affected product
JO
joi
hapijs
More from joi
7.5
CVE-2026-118772
joi: quadratic-time split in `string().email({ multiple: true })` allows denial of service
7.5
CVE-2026-92599
Joi before 17.13.7 and 18.2.6 ReDoS via isoDate
3.7
CVE-2026-90771
joi before 17.13.8 and 18.2.9 Prototype Pollution via messages
3.7
CVE-2026-84368
joi: Prototype pollution via a `__proto__` language key in custom messages
3.7
CVE-2026-84367
joi: object().rename() with a template target can set the validated object's prototype