Update dependency WebOb to v1.8.10 [SECURITY]#52
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR contains the following updates:
==1.8.8→==1.8.10WebOb: Location header normalization during redirect leads to open redirect - again
CVE-2026-44889 / GHSA-fh3h-vg37-cc95
More information
Details
Impact
When WebOb normalizes the HTTP Location header to include the request hostname, it does so by parsing the URL that the user is to be redirected to with Python's
urllib.parse, and joining it to the base URL.urlsplit(called internally byurljoin) however treats a//at the start of a string as a URI without a scheme, and then treats the next part as the hostname.urljoinwill then use that hostname from the second part as the hostname replacing the original one from the request.In a previous advisory GHSA-mg3v-6m49-jhp3 an attempt to fix this was made by forcing the replacement of
//with/%2f, however this did not take into account that since Python 3.10urlsplitinternally strips ASCII tab, carriage return, and newline characters from the string, so/\t/attacker.comgets turned into//attacker.comand the attacker is able to bypass the changes introduced in that previous advisory, thereby bringing back the problem that was attempted to be fixed.WebOb uses
urljointo take the request URI and join the redirect location to it, so assuming the request URI ishttps://example.org/and the URL to redirect to is/\t/attacker.com/some/path/:Which redirects from
example.orgwhere we want the user to stay toattacker.com.Patches
This issue has been fixed in WebOb 1.8.10.
Workarounds
Any use of the
Responseclass that includes alocationcan be rewritten to make sure to always pass a full URI that includes the hostname to redirect the user to, or to validate that the redirect target starts with a scheme (e.g.http://orhttps://) before assigning toResponse.location.References
Thanks
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.