Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach endpoint parsing multipart uploads
-
DeliverySend Content-Disposition param lacking equals sign
-
ExploitTrigger quadratic regex backtracking
-
ExecutionBlock Node.js event loop
-
ImpactService-wide denial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Regex complexity limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target application must use @hapi/content version 6.0.1 or 6.0.2 to parse Content-Disposition headers - in practice any hapi service (via @hapi/subtext) that accepts multipart/form-data uploads on a reachable route. No special configuration, authentication, or user interaction is required (PR:N/UI:N against default parsing behavior); the attacker only needs to deliver one HTTP request whose Content-Disposition contains a long parameter value with no equals sign. Limiting factors are narrow: exploitation is confined to applications that actually invoke Content.disposition() on attacker-controlled headers (i.e. multipart-accepting endpoints), and deployments already upgraded to 6.0.3 or that do not parse multipart input are not exposed. Impact is limited to availability (process hang); no data is read or modified. |
| Impact | All signals describe a remote, unauthenticated, availability-only denial of service. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms a network-reachable, low-complexity attack needing no privileges or user interaction, and the only impact set is VA:H (VC:N/VI:N/VA:N for integrity/confidentiality), so there is no data exposure or code execution - this is a process-availability issue, not a compromise. No EPSS score and no CISA KEV entry are provided in the input, so neither widespread automated exploitation nor confirmed in-the-wild use can be asserted; the vuln.today Decision label is 'this_week' (not act_now/emergency), aligning with a serious-but-not-emergency triage. The 8.7 score is driven entirely by the availability metric and the ease of reach, which is consistent with the mechanism: a single crafted request can block the Node.js event loop and stall the whole service. This is a real priority for any service that parses multipart/Content-Disposition input through @hapi/content, but it should be read as a DoS exposure rather than a high-CVSS issue masking low real risk - the risk is genuine yet bounded to availability. Note the vulnerability stems from an incomplete fix for CVE-2026-35213, so environments that believed they were patched by an earlier @hapi/content upgrade may still be exposed. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a single HTTP multipart/form-data request to any endpoint that parses the Content-Disposition header via @hapi/content, using a parameter of tens of thousands of characters that lacks an equals sign (e.g. 'form-data; name="f"; aaaa…'). The quadratic backtracking in Content.disposition()'s parsing regex consumes CPU and blocks the Node.js event loop, making the process unresponsive to all other clients. The fix PR #42 ships regression tests containing the exact malicious header (a 64,000-character parameter), so the trigger is publicly demonstrated. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Event-loop-blocking denial of service in @hapi/content 6.0.1 and 6.0.2 lets unauthenticated remote attackers stall a Node.js process by sending a single multipart upload whose Content-Disposition header carries a long parameter with no equals sign, causing quadratic regex backtracking inside Content.disposition(). The bug is an incomplete fix for CVE-2026-35213: the 6.0.1 regex tightening left one parsing path exploitable, so any hapi service that calls Content.disposition() on attacker-controlled headers (typically multipart/form-data routes handled through @hapi/subtext) is exposed with no authentication, privileges or user interaction, though the impact is availability only. Version 6.0.3 completes the fix; a public regression test in the upstream pull request demonstrates the trigger payload, but there is no CISA KEV listing and no confirmed working exploit code at time of analysis, and the vendor documents no workaround other than upgrading.
RemediationAI
Upgrade to @hapi/content 6.0.3 (npm install @hapi/content@6.0.3, or raise the resolved version of the transitive dependency in hapi stacks that pull it in through @hapi/subtext), which contains the completed fix from PR https://github.com/hapijs/content/pull/42, commit 0993851dc7234976a3fce3a7c31662b213c940fd; verify the resolved version in the lockfile rather than only the declared range, since 6.0.1 and 6.0.2 both satisfy typical caret ranges. The project advisory (https://github.com/hapijs/content/security/advisories/GHSA-jg4p-7fhp-p32p) and the VulnCheck advisory state there are no known workarounds and that upgrading is the only complete remediation. Where an immediate upgrade is not possible, the exposure can be narrowed by disabling or restricting multipart/form-data upload routes that feed attacker-controlled Content-Disposition headers into Content.disposition(), or by fronting the service with a proxy that caps header and request-line length and enforces aggressive request timeouts - at the cost of losing upload functionality, or, for the proxy controls, only reducing the size of the payload that can reach the vulnerable regex rather than eliminating the backtracking path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-1333 (inefficient regular expression complexity) in @hapi/content, the standalone header-parsing utility used across the hapi ecosystem and consumed by @hapi/subtext for multipart request handling. The vulnerable code is internals.contentDispositionParamRegex in lib/index.js (line 96 in the 6.0.2 tree), a global parameter-matching regex of the form /([^=\*\s]+)(\*)?\s*=\s*(?:...)/g: because the equals sign is mandatory in the first alternative, a long run of characters containing no '=' cannot match, and the global scan retries the pattern from every character position of that run, producing quadratic work per header - the upstream fix comment explicitly describes the global scan retrying and backtracking quadratically. The 6.0.1 release (PR #38) had already tightened three Content-Type/Content-Disposition regexes for CVE-2026-35213, which is why this CVE is scoped to 6.0.1 and 6.0.2 as a bypass of that earlier fix. PR #42 adds a trailing alternative |[^=\*\s]+ that consumes a name not followed by '=', plus a guard in Content.disposition() that returns when capture group 1 is undefined, and the accompanying tests exercise 64,000-character parameter runs both as the final parameter and before other parameters.
Know when Hapi Content gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
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
Remote single-request trigger on default multipart parsing gives AV:N/AC:L/PR:N/UI:N; only the event loop of the same process is affected, so S:U with A:H and no C/I impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
@hapi/content from 6.0.1 before 6.0.3 contains a regular expression denial of service vulnerability in Content.disposition() caused by an incomplete fix for CVE-2026-35213. Unauthenticated remote attackers can send multipart uploads with a long Content-Disposition parameter lacking an equals sign, triggering quadratic backtracking that blocks the event loop.
Articles & Coverage 1
Technical POC Analysis
CWE-1333 (Inefficient Regular Expression Complexity), the ReDoS subclass.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-115728 is a high-severity denial-of-service vulnerability in the widely used @hapi/content library (versions 6.0.1 and 6.0.2), which is a dependency in many Node.js/hapi web services. An unauthenticated attacker can send a single crafted multipart upload to stall a service, potentially disrupting availability for customers and internal users relying on affected applications. Leadership should prioritize remediation because the flaw affects the availability of business services and the library is deeply embedded in the hapi ecosystem, though no active exploitation has been observed.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
EUVD-2026-108939
GHSA-vwgx-c45f-9873
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB