Skip to main content

@hapi/content CVE-2026-115728

| EUVDEUVD-2026-108939 HIGH
Inefficient Regular Expression Complexity (ReDoS) (CWE-1333)
2026-10-23 VulnCheck GHSA-vwgx-c45f-9873
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach endpoint parsing multipart uploads
  2. Delivery
    Send Content-Disposition param lacking equals sign
  3. Exploit
    Trigger quadratic regex backtracking
  4. Execution
    Block Node.js event loop
  5. Impact
    Service-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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.8% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

@hapi/content 6.0.1 <6.0.3

Affected Packages

npm @hapi/content fix: 6.0.1
euvd hapi_content fix: 6.0.3

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

Vendor (VulnCheck) PRIMARY 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
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.8%
Top 42% exploitable
Prevalence
Medium
header-parsing library within the hapi Node.js framework ecosystem
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.8%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy