CVE-2026-92599
Joi before 17.13.7 and 18.2.6 ReDoS via isoDate
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
Joi before 17.13.7 and 18.2.6 ReDoS via isoDate
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
CVE-2026-92599- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
EUVDEUVD-2026-81299
8.7
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
EUVD-2026-81299- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-6h2x-m376-mqjq
8.7
joi: Quadratic regular-expression backtracking in `Joi.string().isoDate()`
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.
- Record
GHSA-6h2x-m376-mqjq- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mrx9-2rrp-rhpx
8.7
Duplicate Advisory: joi: Quadratic regular-expression backtracking in `Joi.string().isoDate()`
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-6h2x-m376-mqjq. This link is maintained to preserve external references.
Original Description
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
GHSA-mrx9-2rrp-rhpx- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
NVD
8.7
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
CVE-2026-92599- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSV
8.7
Joi before 17.13.7 and 18.2.6 ReDoS via isoDate
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
CVE-2026-92599- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-1333
- Updated
- 2026-11-02
Show 9 moreShow less
OSVGHSA-6h2x-m376-mqjq
8.7
joi: Quadratic regular-expression backtracking in `Joi.string().isoDate()`
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.
- Record
GHSA-6h2x-m376-mqjq- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSVGHSA-mrx9-2rrp-rhpx
8.7
Duplicate Advisory: joi: Quadratic regular-expression backtracking in `Joi.string().isoDate()`
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-6h2x-m376-mqjq. This link is maintained to preserve external references.
Original Description
joi (npm package joi, hapi.js) versions >=17.2.0 <17.13.7 and >=18.0.0 <18.2.6 are vulnerable to regular expression denial of service in the Joi.string().isoDate() validation rule. One of the regular expressions the rule applies to the input is unanchored, so a valid ISO date followed by a long run of fractional-second digits causes the regex engine to restart its search from every position in the string, yielding time proportional to the square of the input length (about 1.4 s for 64 KB of digits and about 22 s for 256 KB). A remote attacker who can supply a string to an isoDate validation can stall the application with a single request. Fixed in 17.13.7 and 18.2.6; as a workaround, cap the length of the string before it reaches joi.
- Record
GHSA-mrx9-2rrp-rhpx- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSVRHSA-2026:68778
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:68778- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:68821
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:68821- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:68926
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:68926- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1790719586 No score
TuxCare security update for joi (1 CVE)
TuxCare rebuilt joi to address 1 CVE. Fixed in 17.13.6-tuxcare.1.
- Record
CLSA-2026-1790719586- Updated
- 2026-11-02
OSVCLSA-2026-1792510126 No score
TuxCare security update for joi (4 CVEs)
TuxCare rebuilt joi to address 4 CVEs. Fixed in 17.13.4-tuxcare.1.
- Record
CLSA-2026-1792510126- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-92599 No score
CVE-2026-92599 in joi - Patched by Root
Root has patched CVE-2026-92599 in the joi package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-92599- Updated
- 2026-11-02
OSVROOT-APP-NPM-GHSA-6h2x-m376-mqjq No score
GHSA-6h2x-m376-mqjq in joi - Patched by Root
Root has patched GHSA-6h2x-m376-mqjq in the joi package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-GHSA-6h2x-m376-mqjq- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
joinpm |
17.2.0 up to 17.13.7 | 17.13.7 |
joinpm |
18.0.0 up to 18.2.6 | 18.2.6 |
joiTuxCare:npm |
17.13.6-tuxcare.0 up to 17.13.6-tuxcare.1, plus listed versions 17.13.6 |
17.13.6-tuxcare.1 |
joiTuxCare:npm From an advisory covering 4 CVEs |
17.13.4-tuxcare.0 up to 17.13.4-tuxcare.1, plus listed versions 17.13.4 |
17.13.4-tuxcare.1 |
grafana13.2Red Hat:hummingbird:1 From an advisory covering 14 CVEs |
before 0:13.2.1-0.5.hum1 | 0:13.2.1-0.5.hum1 |
grafana12.4Red Hat:hummingbird:1 From an advisory covering 14 CVEs |
before 0:12.4.10-0.6.hum1 | 0:12.4.10-0.6.hum1 |
grafana13.1Red Hat:hummingbird:1 From an advisory covering 4 CVEs |
before 0:13.1.6-0.2.hum1 | 0:13.1.6-0.2.hum1 |
joiRoot:npm |
before 17.13.4-aikido.2 | 17.13.4-aikido.217.13.6-aikido.217.13.3-aikido.417.13.5-aikido.2 |
@rootio/joiRoot:npm |
before 17.13.4-root.io.2 | 17.13.4-root.io.217.13.6-root.io.217.13.3-root.io.417.13.5-root.io.2 |
joiRoot:npm |
before 18.2.3-aikido.1 | 18.2.3-aikido.117.13.6-aikido.117.13.4-aikido.117.13.5-aikido.117.13.3-aikido.217.13.3-aikido.317.13.4-aikido.217.13.6-aikido.217.13.3-aikido.417.13.5-aikido.2 |
@rootio/joiRoot:npm |
before 18.2.3-root.io.1 | 18.2.3-root.io.117.13.6-root.io.117.13.4-root.io.117.13.5-root.io.117.13.3-root.io.217.13.3-root.io.317.13.4-root.io.217.13.6-root.io.217.13.3-root.io.417.13.5-root.io.2 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-92599 is a high vulnerability (CVSS 8.7) in Hapijs Joi, published September 16, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.58%, the 48th percentile. Fixed in joi 17.13.7.
References
github.com/hapijs/joi/security/advisories/GHSA-6h2x-m376-mqjq
vulncheck.com/advisories/joi-before-17.13.7-and-18.2.6-redos-via-isodate
github.com/hapijs/joi/pull/3143
github.com/hapijs/joi/pull/3145
github.com/hapijs/joi/commit/115e7b58d5eaaecc5e9b7093d41899ad6fb053ec
github.com/hapijs/joi/commit/e70df424c367f2976db63b089504413744a21245
Show 99 moreShow less
nvd.nist.gov/vuln/detail/CVE-2026-92599
github.com/advisories/GHSA-6h2x-m376-mqjq
github.com/advisories/GHSA-mrx9-2rrp-rhpx
github.com/CVEProject/cvelistV5/tree/main/cves/2026/92xxx/CVE-2026-92599.json
github.com/hapijs/joi
access.redhat.com/errata/RHSA-2026:68778
access.redhat.com/security/cve/CVE-2026-81871
access.redhat.com/security/updates/classification
images.redhat.com
access.redhat.com/security/cve/CVE-2026-33380
access.redhat.com/security/cve/CVE-2026-33378
access.redhat.com/security/cve/CVE-2026-28374
access.redhat.com/security/cve/CVE-2026-33377
access.redhat.com/security/cve/CVE-2026-28380
access.redhat.com/security/cve/CVE-2026-33381
access.redhat.com/security/cve/CVE-2026-28376
access.redhat.com/security/cve/CVE-2026-28379
access.redhat.com/security/cve/CVE-2026-33376
access.redhat.com/security/cve/CVE-2026-28383
access.redhat.com/security/cve/CVE-2026-81872
access.redhat.com/security/cve/CVE-2026-92599
access.redhat.com/security/cve/CVE-2026-42127
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_68778.json
bugzilla.redhat.com/show_bug.cgi?id=2477253
cve.org/CVERecord?id=CVE-2026-28374
nvd.nist.gov/vuln/detail/CVE-2026-28374
grafana.com/security/security-advisories/cve-2026-28374
bugzilla.redhat.com/show_bug.cgi?id=2477259
cve.org/CVERecord?id=CVE-2026-28376
nvd.nist.gov/vuln/detail/CVE-2026-28376
grafana.com/security/security-advisories/cve-2026-28376
bugzilla.redhat.com/show_bug.cgi?id=2477264
cve.org/CVERecord?id=CVE-2026-28379
nvd.nist.gov/vuln/detail/CVE-2026-28379
grafana.com/security/security-advisories/cve-2026-28379
bugzilla.redhat.com/show_bug.cgi?id=2477240
cve.org/CVERecord?id=CVE-2026-28380
nvd.nist.gov/vuln/detail/CVE-2026-28380
grafana.com/security/security-advisories/cve-2026-28380
bugzilla.redhat.com/show_bug.cgi?id=2477255
cve.org/CVERecord?id=CVE-2026-28383
nvd.nist.gov/vuln/detail/CVE-2026-28383
grafana.com/security/security-advisories/cve-2026-28383
bugzilla.redhat.com/show_bug.cgi?id=2477262
cve.org/CVERecord?id=CVE-2026-33376
nvd.nist.gov/vuln/detail/CVE-2026-33376
grafana.com/security/security-advisories/cve-2026-33376
bugzilla.redhat.com/show_bug.cgi?id=2477246
cve.org/CVERecord?id=CVE-2026-33377
nvd.nist.gov/vuln/detail/CVE-2026-33377
grafana.com/security/security-advisories/cve-2026-33377
bugzilla.redhat.com/show_bug.cgi?id=2477269
cve.org/CVERecord?id=CVE-2026-33378
nvd.nist.gov/vuln/detail/CVE-2026-33378
grafana.com/security/security-advisories/cve-2026-33378
bugzilla.redhat.com/show_bug.cgi?id=2477248
cve.org/CVERecord?id=CVE-2026-33380
nvd.nist.gov/vuln/detail/CVE-2026-33380
grafana.com/security/security-advisories/cve-2026-33380
bugzilla.redhat.com/show_bug.cgi?id=2477239
cve.org/CVERecord?id=CVE-2026-33381
nvd.nist.gov/vuln/detail/CVE-2026-33381
grafana.com/security/security-advisories/cve-2026-33381
bugzilla.redhat.com/show_bug.cgi?id=2491449
cve.org/CVERecord?id=CVE-2026-42127
nvd.nist.gov/vuln/detail/CVE-2026-42127
grafana.com/security/security-advisories/cve-2026-42127
bugzilla.redhat.com/show_bug.cgi?id=2535725
cve.org/CVERecord?id=CVE-2026-81871
nvd.nist.gov/vuln/detail/CVE-2026-81871
github.com/open-telemetry/opentelemetry-go/commit/c65d435b43e5e6b82310e6b18dd4cdcb8ac63a0c
github.com/open-telemetry/opentelemetry-go/releases/tag/exporters/otlp/otlplog/otlploggrpc/v0.21.0
github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-w34q-cm8f-9c5x
bugzilla.redhat.com/show_bug.cgi?id=2535727
cve.org/CVERecord?id=CVE-2026-81872
nvd.nist.gov/vuln/detail/CVE-2026-81872
github.com/open-telemetry/opentelemetry-go/commit/ba71b09e6ed272e93a669aeaec1e98b1df4cc582
github.com/open-telemetry/opentelemetry-go/issues/6797
github.com/open-telemetry/opentelemetry-go/pull/8620
github.com/open-telemetry/opentelemetry-go/releases/tag/sdk/log/v0.21.0
github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-hjf4-fphr-2h65
bugzilla.redhat.com/show_bug.cgi?id=2538354
cve.org/CVERecord?id=CVE-2026-92599
access.redhat.com/errata/RHSA-2026:68821
access.redhat.com/security/cve/CVE-2026-61709
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_68821.json
bugzilla.redhat.com/show_bug.cgi?id=2535473
cve.org/CVERecord?id=CVE-2026-61709
nvd.nist.gov/vuln/detail/CVE-2026-61709
github.com/openfga/openfga/commit/171806c93b86bca29e0212ceb8b6ee9c48eb9ac3
github.com/openfga/openfga/releases/tag/v1.18.1
github.com/openfga/openfga/security/advisories/GHSA-g3pg-frfm-pr2m
access.redhat.com/errata/RHSA-2026:68926
access.redhat.com/security/cve/CVE-2026-14199
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_68926.json
bugzilla.redhat.com/show_bug.cgi?id=2521850
cve.org/CVERecord?id=CVE-2026-14199
nvd.nist.gov/vuln/detail/CVE-2026-14199
grafana.com/security/security-advisories/cve-2026-14199