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

10 affected componentsFixes available
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
debian/python-webob*
debian/python-webob<1:1.8.9-1
1:1.8.9-1
debian/python-webob<1:1.8.9-1
1:1.8.9-1
debian/python-webob<=1:1.8.6-3
1:1.8.10-0+deb13u11:1.8.11-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/webob to a version that resolves this vulnerability.

    Fixed in 1.8.8
  2. Upgrade

    Upgrade debian/python-webob to a version that resolves this vulnerability.

    Fixed in 1:1.8.9-1
  3. Upgrade

    Upgrade debian/python-webob to a version that resolves this vulnerability.

    Fixed in 1:1.8.10-0+deb13u1Fixed in 1:1.8.11-1
  4. Upgrade

    Upgrade WebOb to a version that resolves this vulnerability.

    Fixed in 1.8.8
  5. Compensating control

    Rewrite any use of the Response class that includes a location so it always passes a full URI including the hostname for the redirect target.

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
Data Sourced
via OSV·09:15 PM
DescriptionSeverityAffected Software
Sep 11, 2024
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeaknessAffected 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