
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-1527 is a CRLF Injection vulnerability in the undici HTTP client library for Node.js, allowing attackers to inject arbitrary HTTP headers or smuggle raw data to non-HTTP backend services via the upgrade option of client.request(). It was published on March 12, 2026, and affects undici versions prior to 6.24.0 and versions 7.0.0 through 7.23.x. The vulnerability has a CVSS v3.1 base score of 4.6 (Moderate) per the GitHub Advisory Database, though the NVD assigns the same vector string (Github Advisory, Red Hat Bugzilla).
The root cause is CWE-93 (Improper Neutralization of CRLF Sequences), where undici writes the user-supplied upgrade value directly to the raw socket without sanitizing for carriage return (\r) or line feed (\n) characters. Specifically, in lib/dispatcher/client-h1.js at line 1121, the code constructs the HTTP header string as `connection: upgrade\r\nupgrade: ${upgrade}\r\n` without any validation, allowing injected \r\n sequences to terminate the current header block and introduce arbitrary headers or raw protocol data. Exploitation requires that the application passes user-controlled input to the upgrade option, and user interaction is required per the CVSS scoring. The vulnerability is analogous to CVE-2023-23936 (GHSA-5r9g-qh6m-jxff), which affected the host header in the same library (Github Advisory, Github Advisory).
Successful exploitation allows an attacker with low privileges to inject arbitrary HTTP headers into outbound requests made by the vulnerable application, potentially manipulating server-side logic or bypassing security controls. More critically, by terminating the HTTP request prematurely via injected CRLF sequences, an attacker can smuggle raw protocol data to non-HTTP backend services such as Redis, Memcached, or Elasticsearch, enabling unauthorized command execution against those services. The confidentiality and integrity impacts are rated low (no availability impact), but the protocol-confusion attack surface against backend infrastructure represents a meaningful lateral movement risk in multi-tier architectures (Github Advisory, Red Hat Bugzilla).
There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation as of the time of disclosure (Github Advisory). The vulnerability was reported via HackerOne (report #3487198) and is not listed in the CISA Known Exploited Vulnerabilities catalog. The EPSS score is approximately 0.012% (2nd percentile), indicating a very low near-term exploitation probability (Github Advisory). No threat actor attribution has been identified.
upgrade option of client.request().WebSocket\r\nX-Injected-Header: malicious-value\r\n, to inject an arbitrary HTTP header.client.request({ upgrade: <malicious_input> }) with the crafted value — this may require user interaction depending on the application's flow.\r\n sequences are written directly to the socket, terminating the upgrade header and inserting attacker-controlled content into the HTTP stream.\r\nSET key value\r\n), exploiting the shared connection or proxy to reach the backend (Github Advisory).X-Injected-Header) in traffic captures; raw non-HTTP protocol commands (e.g., Redis SET/GET) appearing in TCP streams destined for backend services on ports 6379 (Redis), 11211 (Memcached), or 9200 (Elasticsearch).upgrade header values containing encoded %0d%0a or literal \r\n sequences; backend service logs (Redis, Memcached, Elasticsearch) recording unexpected commands or queries not originating from known application logic.upgrade parameter inputs; anomalous data written to backend caches or search indices not attributable to normal application activity.Upgrade undici to version 6.24.0 (for the 6.x branch) or 7.24.0 (for the 7.x branch), which include fixes for this vulnerability (Github Advisory). As a workaround prior to upgrading, sanitize the upgrade option before passing it to client.request() by rejecting any value containing \r or \n characters:
function sanitizeUpgrade(value) {
if (/[\r\n]/.test(value)) {
throw new Error('Invalid upgrade value');
}
return value;
}
client.request({ upgrade: sanitizeUpgrade(userInput) });Additionally, apply network segmentation to restrict application-layer access to backend services like Redis, Memcached, and Elasticsearch. Red Hat has addressed this in RHSA-2026:7350 (RHEL 9), RHSA-2026:7670 (RHEL 8), and RHSA-2026:7675 (RHEL 10) (Red Hat Bugzilla).
The advisory was published by maintainer mcollina on the nodejs/undici GitHub repository on March 12, 2026, with remediation credit to UlisesGascon (Github Advisory). IBM issued multiple security bulletins acknowledging the impact on products including IBM API Connect, IBM Cloud Pak for Integration, IBM QRadar Suite Software, IBM watsonx Orchestrate, and others, reflecting broad downstream exposure in enterprise environments (IBM API Connect, IBM Cloud Pak). Community reaction has been measured given the moderate severity and lack of active exploitation.
Fix availability across major Linux distributions and their releases.
bookworm
node-undici
sid
node-undici: 7.24.5+dfsg+~cs3.2.0-1
trixie
node-undici
devel
node-undici
noble
node-undici
noble (esm-apps)
node-undici
resolute
node-undici
resolute (esm-apps)
node-undici
OpenShift
el9:odf4/cephcsi-rhel9-0:v4.18.27
RHEL 8
:appstream:nodejs:22/nodejs/nodejs-0:24.14.1-2.module%2Bel8.10.0%2B24190%2B49a46c75
RHEL 9
:appstream:nodejs:24:9070020260402152654:rhel9/nodejs-0:24-9070020260402152654.rhel9.src
RHEL 10
nodejs24-1:24.14.1-2.el10_1.src
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."