← Back to CVE Explorer

CVE-2026-120415

Full vulnerability record from the local CVENow database.

Description

undici is an HTTP client for Node.js. In versions 7.0.0 through 7.30.1 and 8.0.0 through 8.12.3, the redirect interceptor strips sensitive headers such as Authorization, Cookie, Proxy-Authorization, and Host when a request is redirected to a different origin, but when request headers are supplied as an array of name and value tuples (a valid documented input, for example from Object.entries), the redirect handler misreads them as a flat list so the header names never match and the sensitive headers are not removed. If a header-normalizing interceptor such as cache or deduplicate is composed outside the redirect interceptor, it then serializes the retained headers onto the cross-origin request, disclosing the caller's origin-bound credentials to the unrelated redirect destination. This is a representation-dependent bypass of the cross-origin header stripping added in CVE-2024-30260. The issue is fixed in undici 7.30.2 and 8.12.4, and users should upgrade to one of those versions or later. As a workaround, supply request headers as a plain object or a flat name and value array rather than an array of tuples, or compose the redirect interceptor outside the normalizing interceptor.

Severity
MEDIUM
CVSS score
5.9 (v3.1)
Vulnerability status
Received
Source identifier
ce714d77-add3-4f53-aff5-83d477b104bb
Published
2026-11-06 10:16:36.633000
Last modified
2026-11-06 10:16:36.633000
View original CVE JSON
{
  "id": "CVE-2026-120415",
  "sourceIdentifier": "ce714d77-add3-4f53-aff5-83d477b104bb",
  "published": "2026-11-06T10:16:36.633",
  "lastModified": "2026-11-06T10:16:36.633",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "undici is an HTTP client for Node.js. In versions 7.0.0 through 7.30.1 and 8.0.0 through 8.12.3, the redirect interceptor strips sensitive headers such as Authorization, Cookie, Proxy-Authorization, and Host when a request is redirected to a different origin, but when request headers are supplied as an array of name and value tuples (a valid documented input, for example from Object.entries), the redirect handler misreads them as a flat list so the header names never match and the sensitive headers are not removed. If a header-normalizing interceptor such as cache or deduplicate is composed outside the redirect interceptor, it then serializes the retained headers onto the cross-origin request, disclosing the caller's origin-bound credentials to the unrelated redirect destination. This is a representation-dependent bypass of the cross-origin header stripping added in CVE-2024-30260. The issue is fixed in undici 7.30.2 and 8.12.4, and users should upgrade to one of those versions or later. As a workaround, supply request headers as a plain object or a flat name and value array rather than an array of tuples, or compose the redirect interceptor outside the normalizing interceptor."
    }
  ],
  "affected": [
    {
      "source": "ce714d77-add3-4f53-aff5-83d477b104bb",
      "affectedData": [
        {
          "vendor": "undici",
          "product": "undici",
          "defaultStatus": "unaffected",
          "packageURL": "pkg:npm/undici",
          "versions": [
            {
              "version": "7.0.0",
              "lessThan": "7.30.2",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "7.30.2",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "8.0.0",
              "lessThan": "8.12.4",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "8.12.4",
              "versionType": "semver",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "ce714d77-add3-4f53-aff5-83d477b104bb",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N",
          "baseScore": 5.9,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 2.2,
        "impactScore": 3.6
      }
    ]
  },
  "weaknesses": [
    {
      "source": "ce714d77-add3-4f53-aff5-83d477b104bb",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-200"
        },
        {
          "lang": "en",
          "value": "CWE-212"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://cna.openjsf.org/security-advisories.html",
      "source": "ce714d77-add3-4f53-aff5-83d477b104bb"
    },
    {
      "url": "https://github.com/nodejs/undici/security/advisories/GHSA-9v6h-8rgp-m69f",
      "source": "ce714d77-add3-4f53-aff5-83d477b104bb"
    }
  ]
}