Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-55603

CVE-2026-55603: Http-proxy-middleware XSS Vulnerability

CVE-2026-55603 is an XSS flaw in Chimurai Http-proxy-middleware allowing attackers to inject form parts via CRLF in multipart data. This post covers the technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-55603 Overview

CVE-2026-55603 is an HTTP parameter injection vulnerability in http-proxy-middleware, a Node.js HTTP proxy middleware library maintained by chimurai. The flaw exists in the fixRequestBody() helper, which re-emits a request body previously consumed by a body parser. When the outgoing Content-Type is multipart/form-data, the handlerFormDataBodyData() function interpolates req.body keys and values into the multipart wire format without neutralizing carriage return and line feed (CR/LF) characters. Attackers can inject \r\n sequences to close the current part and add arbitrary new form parts, producing request smuggling across the trust boundary. The issue affects versions 3.0.4 through 3.0.6 and 4.1.0, and is fixed in 3.0.7 and 4.1.1.

Critical Impact

Attackers can desynchronize parsed request parameters between the proxy and the upstream backend, bypassing gateway-side policy and validation checks.

Affected Products

  • chimurai http-proxy-middleware versions 3.0.4 through 3.0.6
  • chimurai http-proxy-middleware version 4.1.0
  • Node.js applications using fixRequestBody() with multipart/form-data proxying

Discovery Timeline

  • 2026-06-22 - CVE-2026-55603 published to NVD
  • 2026-06-24 - Last updated in NVD database

Technical Details for CVE-2026-55603

Vulnerability Analysis

The vulnerability is classified under [CWE-93] Improper Neutralization of CRLF Sequences. The fixRequestBody() helper is the library's documented mechanism for replaying a request body that an upstream body parser already consumed. When proxying multipart/form-data requests, the helper invokes handlerFormDataBodyData() to reconstruct the multipart payload.

The reconstruction function concatenates req.body field names and values directly into the multipart wire format. Because CR/LF byte sequences are not stripped or encoded, an attacker who controls a field value can terminate the current MIME part and append additional parts. The proxy's body parser interprets the original input as a single opaque field, while the upstream backend parses the rebuilt body and observes the smuggled fields.

This parameter desynchronization defeats any gateway-side policy, authentication context, or input validation that operates on req.body before proxying. The EPSS score for this CVE is 0.243% as of 2026-06-25.

Root Cause

The root cause is missing input neutralization in the multipart body reconstruction path. The library trusts req.body field contents as safe to interpolate into a structured wire protocol that uses CR/LF as a delimiter.

Attack Vector

An attacker submits a request to the proxy containing a multipart field whose value includes a CR/LF sequence followed by a synthetic part boundary and additional form fields. The proxy's body parser stores the entire string as a single value. When fixRequestBody() rewrites the multipart body for the upstream request, the injected boundary takes effect, and the backend parses additional attacker-controlled fields. Refer to the GitHub Security Advisory GHSA-gcq2-9pq2-cxqm for further technical detail.

Detection Methods for CVE-2026-55603

Indicators of Compromise

  • Multipart form field values containing raw \r\n byte sequences followed by strings matching the request's multipart boundary marker.
  • Upstream backend logs showing request fields that were not present in the proxy's parsed request body.
  • Discrepancies between WAF or API gateway audit logs and application-level field telemetry for the same request ID.

Detection Strategies

  • Inspect proxied multipart requests for CR/LF characters inside field values before they reach fixRequestBody().
  • Compare the number and identity of fields parsed at the proxy layer against those parsed by the backend application.
  • Alert on multipart payloads where a field value contains the literal substring Content-Disposition: form-data.

Monitoring Recommendations

  • Log raw request bodies at the upstream service for multipart traffic during patch rollout.
  • Track the dependency inventory for http-proxy-middleware versions 3.0.4 through 3.0.6 and 4.1.0 across all Node.js services.
  • Monitor for anomalous form fields appearing in authenticated endpoints that should not accept additional parameters.

How to Mitigate CVE-2026-55603

Immediate Actions Required

  • Upgrade http-proxy-middleware to version 3.0.7 or 4.1.1 in all Node.js services.
  • Audit application code for usage of fixRequestBody() with multipart/form-data routes and prioritize patching those paths.
  • Revoke and rotate any credentials or tokens that may have been validated against desynchronized request fields.

Patch Information

The vulnerability is fixed in http-proxy-middleware version 3.0.7 and version 4.1.1. The patch neutralizes CR/LF characters when rebuilding multipart form bodies. See the chimurai security advisory GHSA-gcq2-9pq2-cxqm for release details.

Workarounds

  • Reject incoming multipart requests at the proxy when any field value contains CR or LF bytes.
  • Avoid calling fixRequestBody() for multipart/form-data routes and instead stream the original request body to the upstream without re-parsing.
  • Move security-relevant validation to the upstream backend so that policy is enforced against the same parsed body the application uses.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.