CVE-2026-1525
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-1525 is an HTTP Request Smuggling and Denial of Service vulnerability in the Node.js undici HTTP client library, caused by improper handling of duplicate Content-Length headers supplied with case-variant names (e.g., Content-Length and content-length). This produces malformed HTTP/1.1 requests with multiple conflicting Content-Length values on the wire. Affected versions are undici < 6.24.0 and 7.0.0 ≤ undici < 7.24.0. The vulnerability was published on March 12, 2026. The GitHub Security Advisory (GHSA-2mjp-6q6p-2qxm) rates it as Moderate with a CVSS v3.1 score of 6.5, while some sources (e.g., Feedly/NVD) assign a higher score of 9.8 — the authoritative advisory score from the OpenJS Foundation CNA is 6.5 (Github Advisory, Red Hat Bugzilla).

Technical details

The root cause is classified as CWE-444 (Inconsistent Interpretation of HTTP Requests / HTTP Request Smuggling). When headers are passed to undici APIs (e.g., undici.request(), undici.Client) as flat arrays, the library fails to perform case-insensitive deduplication of header names. This allows a caller to supply both Content-Length and content-length as distinct entries, resulting in both being serialized into the outgoing HTTP/1.1 request. RFC 9110 Section 8.6 explicitly prohibits sending Content-Length more than once. The attack vector is network-based and requires no authentication or user interaction; however, exploitation for request smuggling requires a specific deployment topology where an intermediary (proxy, load balancer) and a backend server interpret the duplicate headers differently — one consuming the first value and the other the last (Github Advisory, CWE-444). The vulnerability was originally reported via HackerOne report #3556037.

Impact

Exploitation can result in two distinct classes of harm. First, a Denial of Service condition occurs when strict HTTP parsers (proxies or servers) reject requests containing duplicate Content-Length headers with a 400 Bad Request response, disrupting application availability. Second, and more critically, in deployments where an intermediary and a backend server interpret the conflicting headers inconsistently, an attacker can perform HTTP Request Smuggling, enabling ACL bypass, cache poisoning, or credential hijacking. Downstream IBM products incorporating undici — including IBM API Connect, Cloud Pak for Integration, QRadar Suite, App Connect Enterprise, and others — are also affected (Github Advisory, Red Hat Bugzilla).

Exploitability

As of the time of this report, there is no public proof-of-concept exploit code and no evidence of active in-the-wild exploitation (Github Advisory). The EPSS score is approximately 0.019% (5th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No threat actor attribution has been reported. Exploitation for request smuggling requires a specific intermediary/backend configuration mismatch, which raises the practical attack complexity beyond what the base CVSS score may suggest.

Exploitation steps

  1. Identify a target application: Locate a Node.js application that uses undici.request(), undici.Client, or similar low-level undici APIs, running an affected version (< 6.24.0 or 7.0.0–7.23.x), ideally sitting behind a proxy or load balancer.
  2. Confirm header handling: Verify that the application accepts user-controlled header names without case-normalization, or that headers are passed as flat arrays rather than plain objects.
  3. Craft a malicious request: Construct an HTTP request that causes undici to emit two Content-Length headers with different casing and different values, e.g., by supplying ['Content-Length', '0', 'content-length', '100'] as the headers array to the undici API.
  4. Exploit intermediary inconsistency (for smuggling): In a deployment where a front-end proxy uses the first Content-Length value and the backend uses the last (or vice versa), craft the body so that the "extra" bytes are interpreted by the backend as the beginning of a second, attacker-controlled HTTP request.
  5. Achieve objective: Depending on the target configuration, leverage the smuggled request to bypass ACLs, poison shared caches, or capture credentials/session tokens of other users whose requests are processed by the same backend connection (Github Advisory, CWE-444).

Indicators of compromise

  • Network: Outbound HTTP/1.1 requests from Node.js services containing two Content-Length headers (e.g., both Content-Length and content-length) with differing values; unexpected 400 Bad Request responses from upstream proxies or servers at elevated rates.
  • Logs: Proxy or load balancer access logs showing 400 errors on requests originating from the Node.js application; backend server logs showing unexpected or out-of-sequence HTTP requests that do not correspond to client-initiated activity.
  • Application Behavior: Unexplained ACL bypass events, cache serving incorrect content to users, or session/credential anomalies in applications behind a shared proxy infrastructure.

Mitigation and workarounds

Upgrade undici to version 6.24.0 (for 6.x branch) or 7.24.0 (for 7.x branch), which fix the duplicate header serialization issue. If immediate upgrade is not possible, apply the following workarounds: (1) pass headers as a plain JavaScript object ({ 'content-length': '123' }) rather than a flat array, which naturally deduplicates by key; (2) normalize all header names to lowercase and reject or deduplicate any Content-Length entries before passing them to undici; (3) sanitize user-controlled input to prevent injection of duplicate or case-variant header names. Red Hat has issued multiple errata (RHSA-2026:7080, 7123, 7302, 7350, 7670, 7675, 7983, and others) addressing this issue across RHEL 8, 9, and 10 (Github Advisory, Red Hat Bugzilla).

Community reactions

The vulnerability was published by maintainer mcollina under the OpenJS Foundation CNA and reviewed by UlisesGascon. Red Hat tracked the issue as medium severity and issued numerous errata across RHEL 8, 9, and 10 within weeks of disclosure. IBM issued advisories for a broad range of affected products including API Connect, Cloud Pak for Integration, QRadar Suite, App Connect Enterprise, and watsonx Orchestrate. No significant independent researcher commentary or notable social media discussion has been identified beyond standard vulnerability database aggregation (Github Advisory, Red Hat Bugzilla).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

node-undici

Fixed

sid

node-undici: 7.24.5+dfsg+~cs3.2.0-1

Fixed

trixie

node-undici

Affected

Ubuntu

Unknown

devel

node-undici

Unknown

noble

node-undici

Unknown

noble (esm-apps)

node-undici

Unknown

resolute

node-undici

Unknown

resolute (esm-apps)

node-undici

Unknown

RHEL / CentOS

Fixed

OpenShift

el9:odf4/cephcsi-rhel9-0:v4.18.27

Fixed

RHEL 8

:appstream:nodejs-0:24-8100020260408131901.6d880403.src

Fixed

RHEL 9

:appstream:nodejs:22:9060020260409121057:rhel9/nodejs-packaging-0:22-9060020260409121057.rhel9.src

Fixed

RHEL 10

nodejs22-1:22.22.2-2.el10_0.src

Fixed

SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-59160HIGH8.8
  • JavaScript logoJavaScript
  • @yeger/turbo-graph
NoYesSep 09, 2026
CVE-2026-59179HIGH8.3
  • JavaScript logoJavaScript
  • @openhop/server
NoYesSep 09, 2026
GHSA-x7m8-jrm8-hpvxHIGH8.1
  • JavaScript logoJavaScript
  • @eigenpal/docx-editor-core
NoYesSep 10, 2026
CVE-2026-59176HIGH7.8
  • JavaScript logoJavaScript
  • functype-mcp-server
NoYesSep 09, 2026
CVE-2026-59158HIGH7.5
  • JavaScript logoJavaScript
  • nuxt-ollama
NoYesSep 09, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management