This is a parser differential SSRF — the vulnerability isn't simply that a bypass exists, but that your allowlist validation and your HTTP client are operating on semantically different URL representations. The security boundary was never actually enforced; it only appeared to be.

The specific mechanism here: a backslash in the authority section of a URL (like trusted.host\evil.internal) gets parsed differently by different Python URL-handling modules. Your validation logic likely uses urllib.parse to extract the host and checks it against an allowlist — that parser sees trusted.host as the host. But when the actual HTTP request fires, the underlying client normalizes the backslash differently and may resolve or connect to the actual internal host. That's the differential.

What to verify in your code: First, determine whether your allowlist validation is running on raw user input before any URL normalization. If validation happens on the unparsed string while the HTTP client normalizes internally, you have a canonicalization vulnerability — this specific backslash bypass may be patched, but other differential vectors (query strings, fragments, other normalization quirks) will remain exploitable.

Second, examine how your allowlist is implemented. Most allowlists don't check 'does this URL parse to an allowed host?' — they check 'did I find an allowed string in the parsed host component?' That's string containment on parser output, not semantic validation against a canonical representation. That distinction matters: any future parser differential, any silent behavior change in your HTTP library, can bypass it.

Third, confirm whether the patch (commit 85859f0) canonicalizes the URL before validation and ensures that canonicalization matches what your HTTP client will actually use — or whether it only patches this specific backslash case. If it's the latter, the structural gap remains open for other differential vectors.