Description
@hapi/content provided HTTP Content-* headers parsing. Prior to 6.0.2, Content.disposition() retained the last occurrence of each duplicate parameter while Content.type() retained the first occurrence of duplicate charset and boundary parameters, creating a parameter-smuggling primitive when another component in the request-processing chain resolves duplicates the opposite way. This can allow an upload filename allowlist bypass in headers such as Content-Disposition: form-data; name="file"; filename="safe.txt"; filename="shell.php". This issue is fixed in version 6.0.2.
Published: 2026-07-17
Score: 7.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability is a parameter‑smuggling flaw in @hapi/content's HTTP header parser. Prior to version 6.0.2, the Content.disposition() parser kept the last duplicate occurrence of each header parameter, whereas Content.type() retained the first duplicate for charset and boundary parameters. This inconsistent handling creates a primitive that can be exploited when another component of the request‑processing chain resolves duplicate parameters differently. An attacker can craft a Content‑Disposition header containing duplicate filename parameters such as "file="safe.txt"; filename="shell.php". Because the parser ultimately keeps the last duplicate, the malicious filename bypasses the upload allowlist, enabling the controlled upload of files that should otherwise be rejected. The issue is fixed in version 6.0.2.

Affected Systems

The affected product is hapijs:content, used in the Hapi.js framework. Versions older than 6.0.2 are vulnerable; the issue is fixed in version 6.0.2 and later.

Risk and Exploitability

The CVSS score of 7.7 indicates a high severity. The EPSS score is less than 1%, suggesting a low probability of widespread exploitation at the time of analysis. The vulnerability is not listed in CISA KEV. Exploitation requires an attacker to send a specially crafted HTTP request with duplicate Content‑Disposition parameters, which can be performed over the network from an unauthenticated source. The impact is limited to environments that allow file uploads without additional server‑side validation independent of the header parser.

Generated by OpenCVE AI on July 30, 2026 at 23:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade hapijs content to version 6.0.2 or later.
  • Configure network or application‑level controls to reject or block HTTP requests that contain duplicate parameters in Content-Disposition or other Content-* headers.
  • Ensure that upload handlers perform separate server‑side filename validation that does not rely solely on the parsed header values.

Generated by OpenCVE AI on July 30, 2026 at 23:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-36hh-x5p5-jgc8 @hapi/content header parser has a parameter smuggling issue that allows upload-filter bypass via duplicate parameters
History

Tue, 21 Jul 2026 03:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 17 Jul 2026 22:00:00 +0000

Type Values Removed Values Added
First Time appeared Hapijs
Hapijs content
Vendors & Products Hapijs
Hapijs content

Fri, 17 Jul 2026 20:15:00 +0000

Type Values Removed Values Added
Description @hapi/content provided HTTP Content-* headers parsing. Prior to 6.0.2, Content.disposition() retained the last occurrence of each duplicate parameter while Content.type() retained the first occurrence of duplicate charset and boundary parameters, creating a parameter-smuggling primitive when another component in the request-processing chain resolves duplicates the opposite way. This can allow an upload filename allowlist bypass in headers such as Content-Disposition: form-data; name="file"; filename="safe.txt"; filename="shell.php". This issue is fixed in version 6.0.2.
Title Parameter smuggling in @hapi/content header parser allows upload-filter bypass via duplicate parameters
Weaknesses CWE-436
References
Metrics cvssV4_0

{'score': 7.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:H/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-21T02:16:04.352Z

Reserved: 2026-05-08T16:23:33.263Z

Link: CVE-2026-44974

cve-icon Vulnrichment

Updated: 2026-07-21T02:15:58.679Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T23:45:05Z

Weaknesses