CVE-2026-44889: WebOb: Location header normalization during redirect leads to open redirect

Published Jun 4, 2026
·
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 urllib.parse, and joining it to the base URL. urlsplit (called internally by urljoin) 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.

In a previous advisory https://github.com/Pylons/webob/security/advisories/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.10 urlsplit internally strips ASCII tab, carriage return, and newline characters from the string, so /\t/attacker.com gets turned into //attacker.com and the attacker is able to bypass the changes introduced in that previous advisory, thereby bringing back the problem that was attempted to be fixed.

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

WebOb uses urljoin to take the request URI and join the redirect location to it, so assuming the request URI is https://example.org/ and the URL to redirect to is /\t/attacker.com/some/path/:

>> parse.urljoin("https://example.org/", "/\t/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 has been fixed in WebOb 1.8.10.

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, or to validate that the redirect target starts with a scheme (e.g. http:// or https://) before assigning to Response.location.

References

- https://github.com/Pylons/webob/security/advisories/GHSA-mg3v-6m49-jhp3 - CVE-2024-42353

Thanks

- Caleb Brown of Google

Other sources

WebOb provides objects for HTTP requests and responses. Prior to 1.8.10, the normalization of the HTTP Location header during a redirect is vulnerable to an open redirect: WebOb joins the redirect target to the request URI using Python's urljoin, and since Python 3.10 the underlying urlsplit strips ASCII tab, carriage return, and newline characters before parsing, so a redirect target containing such characters can be reinterpreted as a protocol-relative URL whose authority is an attacker-controlled host. This bypasses the CVE-2024-42353 fix that escaped a leading double slash, allowing an attacker who influences the redirect location to send users to an arbitrary external site instead of the intended one. This vulnerability is fixed in 1.8.10.

MITRE

WebOb: Location header normalization during redirect leads to open redirect

Microsoft

Affected Software

3 affected componentsFixes available
pip/webob<=1.8.9
1.8.10
Pylonsproject Webob<1.8.10
Microsoft azl3 python-webob 1.8.8-1<1.8.10-1
1.8.10-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.10
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 1.8.10-1
  3. Upgrade

    Upgrade WebOb to a version that resolves this vulnerability.

    Fixed in 1.8.10

Event History

Jun 4, 2026
Advisory Published
via GitHub·02:33 PM
Data Sourced
via GitHub·02:33 PM
DescriptionSeverityWeaknessAffected Software
Jun 22, 2026
CVE Published
via MITRE·09:30 PM
Data Sourced
via MITRE·09:30 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·10:16 PM
DescriptionSeverityWeaknessAffected Software
Jun 28, 2026
Data Sourced
via Microsoft·08:04 AM
DescriptionSeverityWeaknessAffected Software
Updated
via Microsoft·08:04 AM
DescriptionSeverity

Frequently Asked Questions

1

What is the severity of CVE-2026-44889?

The severity of CVE-2026-44889 is medium with a score of 6.1.

2

What are the potential impacts of CVE-2026-44889?

CVE-2026-44889 can lead to improper URL parsing which may affect the integrity of redirect locations.

3

How can I fix CVE-2026-44889?

To fix CVE-2026-44889, update to the latest version of WebOb that includes the patch for this vulnerability.

4

Which software is affected by CVE-2026-44889?

CVE-2026-44889 specifically affects the WebOb library used in Python applications.

5

When was CVE-2026-44889 published?

CVE-2026-44889 was published on June 4, 2026.

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