joi: Uncaught RangeError on deeply nested input through recursive `link()` schemas
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · Low
- Fix status
- Partial Red Hat: 6 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-248.
Summary
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| hapijs | joi | before 17.13.4; 18.0.0 to before 18.2.1 | 17.13.4, 18.2.1 | Patch available | CNA |
| — | joi (npm) | 18.0.0 to before 18.2.1 | 18.2.1 | Patch available | GHSA-q7cg-457f-vx79 |
| — | joi (npm) | before 17.13.4 | 17.13.4 | Patch available | GHSA-q7cg-457f-vx79 |
- joi Vendorhapijs Affected before 17.13.4; 18.0.0 to before 18.2.1 Fixed in 17.13.4, 18.2.1 Patch available CNA
- joi (npm) Vendor— Affected 18.0.0 to before 18.2.1 Fixed in 18.2.1 Patch available GHSA-q7cg-457f-vx79
- joi (npm) Vendor— Affected before 17.13.4 Fixed in 17.13.4 Patch available GHSA-q7cg-457f-vx79
Remediation
- Fix · CNA joi (hapijs) Fixed in 17.13.4, 18.2.1
- Fix · GHSA-q7cg-457f-vx79 joi (npm) Fixed in 18.2.1 Advisory →
- Fix · GHSA-q7cg-457f-vx79 joi (npm) Fixed in 17.13.4 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Gatekeeper 3 | Affected | No fix yet: Fix deferred |
| Migration Toolkit for Containers | Affected | No fix yet: Fix deferred |
| Red Hat Build of Podman Desktop | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift AI (RHOAI) | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 4 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Dev Spaces | Affected | No fix yet: Fix deferred |
Not affected: 2 products
- Cryostat 4
- Red Hat Data Grid 8
Timeline
- 2026-10-02 Threatist record created from CVE-2026-48038
- 2026-10-03 Alias added: GHSA-q7cg-457f-vx79
References
Other 6
- https://github.com/hapijs/joi/security/advisories/GHSA-q7cg-457f-vx79
- https://github.com/hapijs/joi/pull/3113
- https://github.com/hapijs/joi/commit/97bd51de94d595a2d8949eb3bec0dbdd2f8a7a74
- https://github.com/hapijs/joi/commit/fc146a628ab9cc250854407722d9f8738c9548e7
- https://github.com/hapijs/joi/commit/2392713d3e9dd91ba752ac0c96e0eaf3d24b9a11
- https://github.com/hapijs/joi
More hapijs vulnerabilities
- TI-2026-82752 Quadratic-time parsing in @hapi/content allows denial of service CVSS 3.1HIGH 7.5
- TI-2026-82716 Quadratic-time split in joi email rule allows denial of service CVSS 3.1HIGH 7.5
- TI-2026-61678 joi before 17.13.8 and 18.2.9 Prototype Pollution via messages CVSS 4.0MEDIUM 6.3
- TI-2018-02726 Prototype pollution in @hapi hoek node module CVSS 3.0HIGH 8.8
- TI-2026-79747 Regular expression denial of service in @hapi/content disposition parsing CVSS 4.0HIGH 8.7
- TI-2026-62455 Joi before 17.13.7 and 18.2.6 ReDoS via isoDate CVSS 4.0HIGH 8.7
Sources
- CVE-2026-48038 · CVE Program
- CVE-2026-48038 · NVD
- FIRST EPSS
- GHSA-q7cg-457f-vx79 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-48038 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences