refuse HTTP method CONNECT #3367
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Semantics of the CONNECT method are not implemented, and URL parser does not enforce the syntactical requirement for the request-target to include the port. Refuse all such requests to shut down attempts at exploiting this parser difference. Note that the refusal happens prior to the (dangerous)
cfg.casefold_http_method
compatibility switch, so this really only applies to upper caseCONNECT
.Discussion of reply status: Replying 405 would necessitate sending an
Allow
header, which is not something Gunicorn should do, not knowing what is a valid method for a specific URL. Fortunately, any non-2XX-reponse fulfills the purpose of not triggering any special handling in proxies, thus a 400 response is okay.See Parsing issue of the CONNECT method #3363