WebOb's third patch attempt still leaves an open redirect in Location-header normalization
WebOb's guard against open redirects checks a Location value for a URI scheme or leading "//" before calling urljoin() to make it absolute — but Python 3.10+'s urljoin() also strips leading C0 control characters and spaces, so a single leading space (" //evil.example") slips past the un-stripped check and comes out the other side as a protocol-relative or fully absolute attacker URL. This is the third CVE against the same code path (CVE-2024-42353 → CVE-2026-44889 → CVE-2026-54770), each fix patching the previous fix's blind spot rather than the underlying normalization mismatch. Upgrade past 1.8.11; if you're patching similar redirect-sanitization logic elsewhere, test against leading whitespace/control-byte smuggling, not just tab/CR/LF.