Skip to content

Be strict around chunk sizes#218

Open
DemiMarie wants to merge 4 commits intoseanmonstar:masterfrom
DemiMarie:strict-chunk-exts
Open

Be strict around chunk sizes#218
DemiMarie wants to merge 4 commits intoseanmonstar:masterfrom
DemiMarie:strict-chunk-exts

Conversation

@DemiMarie
Copy link
Contributor

RFC9112 does not allow them bare LF in chunk extensions, and an endpoint that allows bare LF in chunk extensions is necessary for certain vulnerabilities in other components to be exploitable. In particular, old versions of Apache Traffic Server may still exist in the wild.

Currently it is allowed in chunk extensions, but not if there is no
extension.
Old versions of Google Frontend, Akamai Global Host, and Apache Traffic
Server (ATS) considered a bare '\n' to end the extension and forwarded
it unchainged.  If a server allows '\n' inside a chunk extension and is
behind one of these, the combination is vulnerable to request smuggling.
If a client allows '\n' inside a chunk extension and is in front of one
of these, the combination is vulnerable to response splitting.  Google
Frontend and Akamai Global Host are cloud-only, but old ATS versions may
still exist in the wild.

Thanks to Ben Kallus for pointing out that old versions of ATS,
Google Frontend, and Akamai Global Host had this bug.
Right now, a chunk size with no hex digits is considered equivalent to a
chunk size with only zeros.
A chunk size must have at least one hex digit.  If there are no hex
digits at all, the chunk size is invalid.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant