GHSA-6h2x-m376-mqjq: High severity npm/joi vulnerability

Published Sep 29, 2026
·
Updated

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.

Affected Software

2 affected componentsFixes available
npm/joi>=18.0.0<18.2.6
18.2.6
npm/joi>=17.2.0<17.13.7
17.13.7

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/joi to a version that resolves this vulnerability.

    Fixed in 18.2.6
  2. Upgrade

    Upgrade npm/joi to a version that resolves this vulnerability.

    Fixed in 17.13.7
  3. Upgrade

    Upgrade joi to a version that resolves this vulnerability.

    Fixed in 17.13.7
  4. Upgrade

    Upgrade joi to a version that resolves this vulnerability.

    Fixed in 18.2.6
  5. Compensating control

    Cap the length of user-supplied strings before they reach Joi.

Event History

Sep 29, 2026
Advisory Published
via GitHub·06:07 PM
Data Sourced
via GitHub·06:07 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which applications are exposed to this denial-of-service issue?

Applications are exposed if they validate user-controlled strings with Joi's Joi.string().isoDate() rule. An unauthenticated remote attacker can send a single crafted input that stalls validation.

2

What input is needed to trigger the issue?

The crafted value is a valid ISO date followed by a long sequence of fractional-second digits. The affected regular expression performs work proportional to the square of the input length, so larger inputs cause substantially longer stalls.

3

How can I mitigate the issue if I cannot upgrade immediately?

Cap the length of the string before it reaches Joi validation. No other workaround is provided.

4

Which versions contain the fix?

Upgrade to Joi 17.13.7 for the 17.x major version or 18.2.6 for the 18.x major version.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203