highCVSS 7.5Vulnerability

CVE-2026-55553

## Summary urllib supports redirect-following through `followRedirect`, which is expected behavior for an HTTP client. The issue is that, when following a redirect to a **different origin**, urllib preserves the caller-supplied request headers verbatim, including credential-bearing headers such as `Authorization`, `Cookie`, `Proxy-Authorization`, and custom auth headers (`x-api-key`, `x-auth-token`, `x-access-token`). If the redirect target is attacker-controlled or outside the trust boundary of the original target, credentials intended for the original origin can be delivered to the redirected origin. In a local multi-library reproduction, urllib v4.9.0 was the only tested client that stripped no headers on cross-origin redirect. ## Affected behavior Confirmed against urllib v4.9.0. The relevant code is in `#requestInternal` ([`src/HttpClient.ts:639-656`](https://github.com/node-modules/urllib/blob/master/src/HttpClient.ts#L639-L656)): ```ts // https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections if (RedirectStatusCodes.includes(res.statusCode) && maxRedirects > 0 && requestContext.redirects < maxRedirects) { if (res.headers.location) { requestContext.redirects++; const nextUrl = new URL(res.headers.location, requestUrl.href); // Ensure the response is consumed await response.body.arrayBuffer(); debug( 'Request#%d got response, status: %s, headers: %j, timing: %j, redirect to %s', requestId, res.status, res.headers, res.timing, nextUrl.href, ); return await this.#requestInternal(nextUrl.href, options, requestContext); } } ``` The recursive call `this.#requestInternal(nextUrl.href, options, requestContext)` reuses the original `options` object. If the caller supplied credential-bearing headers in `options.headers`, those headers are reused for the redirected request, regardless

Properties

ghsa_id
GHSA-hq3h-g68c-hp78
severity
high
summary
urllib's cross-origin redirects preserve credential-bearing request headers, leading to potential credential leakage
cvss_score
7.5
cve_id
CVE-2026-55553
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
is_ghsa_only
false
ghsa_published
2026-08-25T16:19:32Z
source_url
https://github.com/advisories/GHSA-hq3h-g68c-hp78
ghsa_updated
2026-08-25T16:19:34Z

Related Entities (6)

VULNERABLE_TO (1)

[Software]npm/urllib

AFFECTS (1)

[Software]npm/urllib

HAS_WEAKNESS (3)

[Weakness]Insufficiently Protected Credentials
[Weakness]Exposure of Sensitive Information to an Unauthorized Actor
[Weakness]Insertion of Sensitive Information Into Sent Data

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-55553 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal