Skip to content

Chunked-body trailer fields promoted into Request.headers in blaze-server (front-end header-sanitization bypass)

High
rossabaker published GHSA-46q4-43ph-c6fr Jul 23, 2026

Package

maven org.http4s:blaze-http_2.12 (Maven)

Affected versions

<= 0.23.17

Patched versions

0.23.18
maven org.http4s:blaze-http_2.13 (Maven)
<= 0.23.17
>= 1.0.0-M1, <= 1.0.0-M41
0.23.18
1.0.0-M42
maven org.http4s:blaze-http_3 (Maven)
<= 0.23.17
>= 1.0.0-M1, <= 1.0.0-M42
0.23.18
1.0.0-M42

Description

Summary

blaze-server can merge HTTP/1.1 chunked-body trailer fields into Request.headers. Because trailer fields are attacker-controlled, an unauthenticated remote client can inject arbitrary header names/values (e.g. X-Forwarded-For, internal-auth headers) that a fronting proxy sanitized from the request-header section, bypassing header-based trust decisions in the application.

Impact

Any http4s application using BlazeServerBuilder over HTTP/1.1 whose routes or middleware trust proxy-set headers (e.g., X-Forwarded-For, X-Real-IP, X-Forwarded-Host, org-internal auth headers) is affected. Where a fronting proxy strips/normalizes those headers but forwards chunked bodies with trailers intact, an attacker can spoof client IP for allow-lists/rate-limits/audit, forge the https scheme, or inject internal-auth headers. A promoted Connection: close trailer is also honored, allowing attacker-controlled termination of pooled backend connections.

Workarounds

Deploy behind a proxy that removes trailer fields (or rejects requests that use trailers) before forwarding; until patched, avoid trust decisions based on headers that a proxy is relied upon to sanitize.

References

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

CVE ID

No known CVE

Weaknesses

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')

The product acts as an intermediary HTTP agent (such as a proxy or firewall) in the data flow between two entities such as a client and server, but it does not interpret malformed HTTP requests or responses in ways that are consistent with how the messages will be processed by those entities that are at the ultimate destination. Learn more on MITRE.

Credits