hapi DoS fixes: @hapi/content 6.0.3 (one multipart request can block Node for minutes) and joi 17.13.9 / 18.3.1 (email list whitespace)
The hapi.js project published two denial-of-service advisories, reviewed by GitHub on Oct 30:
- @hapi/content CVE-2026-119202 (GHSA-8494-f6mr-cjpv, CVSS 7.5):
Content.disposition()uses an unanchored global regex, so a parameter that is a long run of name characters without=is rescanned from every position.@hapi/pezcalls it on every part of amultipart/form-databody on any route withpayload.multipartenabled, before the handler and validation run. The only default limit ispayload.maxBytes(1 MB), and the advisory says even a 64 KB token blocks the process for over a second. Affected:content3.0.6 to 4.0.6 and@hapi/contentup to 6.0.2. Fix: 6.0.3. No workaround removes the risk. - joi CVE-2026-118772 (GHSA-4528-x5fx-h6hg, CVSS 7.5):
Joi.string().email({ multiple: true })splits on\s*[,]\s*, which backtracks quadratically through long whitespace runs. The advisory says 100 KB of spaces blocks the event loop for several seconds. Fixed in joi 17.13.9 and 18.3.1; the deprecated@hapi/joipackage (16.0.0 to 17.1.1) has no patched release.
What to do: update @hapi/content (usually transitive via @hapi/subtext/@hapi/hapi, so check your lockfile) and joi, migrate off @hapi/joi, and in the meantime set a low payload.maxBytes on multipart routes and cap the length of email-list fields before validation.
Sources: hapijs/content advisory GHSA-8494-f6mr-cjpv (CVE-2026-119202) · hapijs/joi advisory GHSA-4528-x5fx-h6hg (CVE-2026-118772)