joi: Quadratic regular-expression backtracking in `Joi.string().isoDate()`
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- —
- Fix status
- Fixed
No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-1333.
Summary
### Impact Any application that validates a user-supplied string with `Joi.string().isoDate()` can be stalled by a single request. One of the regular expressions the rule runs over the input was unanchored, so a valid ISO date followed by a long run of fractional-second digits made the regex engine restart its search from every position in the string, costing time proportional to the square of the input length. 64 KB of digits costs about 1.4 s and 256 KB about 22 s. ### Patches Upgrade to version 17.13.7 or 18.2.6 depending on your current major version. ### Workarounds None except capping the length of the string before it reaches joi.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| — | joi (npm) | 17.2.0 to before 17.13.7 | 17.13.7 | Patch available | GHSA-6h2x-m376-mqjq |
| — | joi (npm) | 18.0.0 to before 18.2.6 | 18.2.6 | Patch available | GHSA-6h2x-m376-mqjq |
- joi (npm) Vendor— Affected 17.2.0 to before 17.13.7 Fixed in 17.13.7 Patch available GHSA-6h2x-m376-mqjq
- joi (npm) Vendor— Affected 18.0.0 to before 18.2.6 Fixed in 18.2.6 Patch available GHSA-6h2x-m376-mqjq
Remediation
- Fix · GHSA-6h2x-m376-mqjq joi (npm) Fixed in 17.13.7 Advisory →
- Fix · GHSA-6h2x-m376-mqjq joi (npm) Fixed in 18.2.6 Advisory →
Timeline
- 2026-10-03 Threatist record created from GHSA-6h2x-m376-mqjq
References
Other 6
- https://github.com/hapijs/joi/security/advisories/GHSA-6h2x-m376-mqjq
- https://github.com/hapijs/joi/pull/3143
- https://github.com/hapijs/joi/pull/3145
- https://github.com/hapijs/joi/commit/115e7b58d5eaaecc5e9b7093d41899ad6fb053ec
- https://github.com/hapijs/joi/commit/e70df424c367f2976db63b089504413744a21245
- https://github.com/hapijs/joi
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences