GHSA-36hh-x5p5-jgc8
@hapi/content header parser has a parameter smuggling issue that allows upload-filter bypass via duplicate parameters
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @hapi/content | < 6.0.2 | 6.0.2 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
The two parsers resolved duplicates inconsistently and silently:
- `Content.disposition()` retained the last occurrence of each parameter.
- `Content.type()` retained the first occurrence of charset and boundary.
Either behavior creates a parameter-smuggling primitive when another component in the request-processing chain (a WAF, reverse proxy, security filter, or alternate parser) resolves duplicates the opposite way. The primary attack vector is upload filename allowlist bypass:
`Content-Disposition: form-data; name="file"; filename="safe.txt"; filename="shell.php"`
### Patches
The issue has been patched in 6.0.2.
### Workarounds
Pre or post validate headers looking for duplicates.
### Resources
- [RFC 6266 §4.1 — Content-Disposition syntax](https://www.rfc-editor.org/rfc/rfc6266#section-4.1)
- [RFC 7231 §3.1.1.1 — Content-Type syntax](https://www.rfc-editor.org/rfc/rfc7231#section-3.1.1.1)
- [RFC 7230 §3.2.6 — token character set](https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6)
References
External links from the advisory. They lead to third-party sites.