Skip to content

public security bugs - #4

Open
pajod wants to merge 9 commits into
masterfrom
gunicorn23-security
Open

public security bugs#4
pajod wants to merge 9 commits into
masterfrom
gunicorn23-security

Conversation

@pajod

@pajod pajod commented Apr 8, 2025

Copy link
Copy Markdown
Owner

This contains only publicly documented security-sensitive parser issues in Gunicorn 23.0.0

This PR is meant to simplify testing patches and gather feedback on edge cases until decisions are made upstream.

pajod added 7 commits April 7, 2025 16:32
Has special syntax and meaning for proxies, neither of which we fully
implement, possibly confusing proxies.
being strict about how to parse the T-E header (if in doubt, refuse)
avoids security implications of non-compliant HTTP proxies
as python url parser is not strict, something inside the url might be
sufficient for framing disagreements with HTTP proxies
demand case-insensitive match of duplicate headers,
 or host header sent in url with absolute-form target

UNFINISHED:
This patch is not compliant with
https://datatracker.ietf.org/doc/html/rfc9112#section-3.2.2-6

"When a proxy receives a request with an absolute-form of request-target, the proxy MUST ignore the received Host header field (if any) and instead replace it with the host information of the request-target."
@pajod
pajod force-pushed the gunicorn23-security branch from 38b728b to d2033b0 Compare April 8, 2025 16:33
pajod pushed a commit that referenced this pull request Jun 10, 2026
gunicorn_h1c 0.6.4 ships the RFC 9110/9112 hardening added in h1c #4,
benoitc#6, and benoitc#7: control chars in header values, request-target form/method
pairing, and forbidden trailer field-names. All the corresponding
fixtures now pass against the C parser, so their python_only markers
are removed.

The CL list form fixture stays marked — the C parser does not yet
reject Content-Length: "5, 5".
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