CVE-2024-42353: WebOb's location header normalization during redirect leads to open redirect

Published Aug 14, 2024
·
Updated

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 urlparse, and joining it to the base URL. urlparse however treats a // at the start of a string as a URI without a scheme, and then treats the next part as the hostname. urljoin will then use that hostname from the second part as the hostname replacing the original one from the request.

>> parse.urlparse("//example.com/test/path") ParseResult(scheme='', netloc='example.com', path='/test/path', params='', query='', fragment='')

WebOb uses urljoin to take the request URI and joining the redirect location, so assuming the request URI is: https://example.org//example.com/some/path, and the URL to redirect to (for example by adding a slash automatically) is //example.com/some/path/ that gets turned by urljoin into:

>> parse.urljoin("https://example.org//attacker.com/some/path", "//attacker.com/some/path/") 'https://attacker.com/some/path/'

Which redirects from example.org where we want the user to stay to attacker.com

Patches

This issue is patched in WebOb 1.8.8

Older versions of WebOb continue to be vulnerable to this issue, and should be avoided.

Workarounds

Any use of the Response class that includes a location can be rewritten to make sure to always pass a full URI that includes the hostname to redirect the user to.

Thanks

- Sara Gao

This issue was reported via the Pylons Project Security List

Other sources

WebOb provides objects for HTTP requests and responses. 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 urlparse, and joining it to the base URL. urlparse however treats a // at the start of a string as a URI without a scheme, and then treats the next part as the hostname. urljoin will then use that hostname from the second part as the hostname replacing the original one from the request. This vulnerability is patched in WebOb version 1.8.8.

MITRE

WebOb's location header normalization during redirect leads to open redirect

Microsoft

Affected Software

7 affected componentsFixes available
debian/python-webob<=1:1.8.6-1.1, <=1:1.8.6-3, <=1:1.8.7-1
pip/webob<=1.8.7
1.8.8
Pylonsproject Webob<1.8.8
Microsoft azl3 python-webob 1.8.7-1
Microsoft azl3 python-webob 1.8.8-1
Microsoft cbl2 python-webob 1.8.8-1
Microsoft cbl2 python-webob 1.8.7-1

Event History

Aug 14, 2024
Advisory Published
via GitHub·05:48 PM
CVE Published
via MITRE·08:12 PM
Data Sourced
via MITRE·08:12 PM
DescriptionSeverityWeakness
Sep 11, 2024
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·07:00 AM
Affected Software
Updated
via Microsoft·07:00 AM
DescriptionSeverity
Sep 14, 2024
Data Sourced
via Ubuntu·04:52 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2024-42353?

The severity of CVE-2024-42353 is classified as high due to its potential impact on URL redirection vulnerabilities.

2

How do I fix CVE-2024-42353?

To fix CVE-2024-42353, upgrade to WebOb version 1.8.8 or later.

3

Which versions of WebOb are affected by CVE-2024-42353?

CVE-2024-42353 affects WebOb versions up to and including 1.8.7.

4

Is CVE-2024-42353 related to HTTP headers?

Yes, CVE-2024-42353 is related to the normalization of the HTTP Location header.

5

What software is impacted by CVE-2024-42353?

CVE-2024-42353 impacts multiple versions of the WebOb package, including those in pip, Debian, and Ubuntu distributions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203