CVE-2026-49214
Undergoing Analysis Undergoing Analysis - In Progress
HTTP Header Injection in guzzlehttp/psr7

Publication date: 2026-06-11

Last updated on: 2026-06-11

Assigner: GitHub, Inc.

Description
guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Versions prior to 2.10.2 did not reject ASCII control characters, whitespace, or DEL in first-party URI host components. A vulnerable flow is: First, an application accepts a user-controlled URL. Second, the URL is used to construct a PSR-7 `Uri` or `Request`. Third, the host component contains CRLF or another header-unsafe character. Fourth, the host is copied into the PSR-7 `Host` header when no explicit `Host` header is provided. Finally, the request is serialized or sent by an HTTP client that does not independently reject the malformed host. In that flow, an attacker can cause the serialized request to contain additional attacker-controlled header lines. For example, a host containing `"\r\nX-Injected: yes"` can cause the generated `Host` header to span multiple HTTP header lines. Applications are affected when they use user-controlled URLs for outbound HTTP requests, URL forwarding, proxying, crawling, webhook delivery, or similar request-dispatch flows. In deployments involving HTTP/1.1 connection reuse, proxies, gateways, or load balancers, this malformed request may also contribute to request smuggling or cache poisoning, depending on how downstream components parse the request. The issue is patched in `2.10.2` and later. `1.x` is end-of-life and will not receive a patch. As a workaround, validate and reject all untrusted URI strings before constructing PSR-7 `Uri` or `Request` instances. Reject input containing ASCII control characters, whitespace, or DEL, including CRLF, tab, space, NUL, or DEL characters. Applications that forward requests should also ensure the final HTTP client or serializer rejects invalid URI and header data before writing requests to the network.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-06-11
Last Modified
2026-06-11
Generated
2026-06-11
AI Q&A
2026-06-11
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Showing 2 associated CPEs
Vendor Product Version / Range
guzzlehttp psr7 2.10.2
guzzlehttp psr7 to 2.10.2 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-113 The product receives data from an HTTP agent/component (e.g., web server, proxy, browser, etc.), but it does not neutralize or incorrectly neutralizes CR and LF characters before the data is included in outgoing HTTP headers.
CWE-20 The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.
CWE-93 The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

CVE-2026-49214 is a CRLF injection vulnerability in the guzzlehttp/psr7 PHP library versions prior to 2.10.2. The library fails to reject ASCII control characters, whitespace, or DEL characters in the host component of URIs when creating PSR-7 HTTP requests. This allows an attacker to inject malicious header lines by including characters like "\r\nX-Injected: yes" in the host part of a URL. When the request is serialized or sent by an HTTP client that does not independently reject such malformed hosts, the injected headers become part of the HTTP request.

This vulnerability affects applications that accept user-controlled URLs for outbound HTTP requests, URL forwarding, proxying, crawling, webhook delivery, or similar flows. The issue can lead to HTTP header injection and potentially enable request smuggling or cache poisoning in environments using HTTP/1.1 connection reuse, proxies, gateways, or load balancers.

The vulnerability is fixed in guzzlehttp/psr7 version 2.10.2 and later. As a workaround, applications should validate and reject any untrusted URI strings containing control characters before constructing PSR-7 Uri or Request instances.

Impact Analysis

This vulnerability can impact you by allowing an attacker to inject additional HTTP header lines into requests your application sends. This can lead to HTTP header injection, which may be exploited to manipulate how downstream servers or proxies interpret the request.

In environments using HTTP/1.1 connection reuse, proxies, gateways, or load balancers, this vulnerability can contribute to more severe attacks such as request smuggling or cache poisoning. These attacks can disrupt normal traffic flow, cause security bypasses, or lead to unauthorized data exposure.

Applications that use user-controlled URLs for outbound HTTP requests, URL forwarding, proxying, crawling, or webhook delivery are particularly at risk if they do not validate and sanitize input properly.

Detection Guidance

This vulnerability can be detected by inspecting outbound HTTP requests constructed using the guzzlehttp/psr7 library for the presence of ASCII control characters, whitespace, or DEL characters in the host component of URIs.

Specifically, look for suspicious host headers containing CRLF sequences or other header-unsafe characters that could cause HTTP header injection, such as "\r\nX-Injected: yes".

On the network, you can capture HTTP traffic and search for multi-line Host headers or unexpected injected headers using tools like tcpdump or Wireshark.

  • Use tcpdump to capture HTTP traffic: tcpdump -i <interface> -A 'tcp port 80 or tcp port 443'
  • Use grep or similar tools to search for CRLF sequences or suspicious header injections in captured traffic or logs.
  • Within application logs or code, audit any user-controlled URLs used to construct PSR-7 Uri or Request objects for control characters or whitespace in the host component.
Mitigation Strategies

The primary mitigation is to upgrade the guzzlehttp/psr7 library to version 2.10.2 or later, where the vulnerability is patched.

If upgrading immediately is not possible, validate and reject all untrusted URI strings before constructing PSR-7 Uri or Request instances.

  • Reject input containing ASCII control characters, whitespace, or DEL characters, including CRLF, tab, space, NUL, or DEL characters in the host component.
  • Ensure that any HTTP client or serializer used rejects invalid URI and header data before sending requests to the network.

Applications that forward requests should carefully sanitize and validate URLs to prevent injection of malicious header lines.

Compliance Impact

The provided information does not explicitly address how this vulnerability impacts compliance with common standards and regulations such as GDPR or HIPAA.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-49214. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart