Impact
The vulnerability arises from guzzlehttp/psr7 accepting ASCII control characters, whitespace, or DEL in the host component of a first‑party URI. When an application uses a user‑controlled URL to construct a PSR‑7 Uri or Request, the host is copied into the Host header if no explicit header is supplied. An attacker can craft a host such as "\r\nX-Injected: yes", causing the serialized request to contain additional header lines. This flaw permits arbitrary HTTP header injection, which can lead to request smuggling, cache poisoning, or unintended request behavior in downstream proxies and load balancers.
Affected Systems
The issue affects the guzzlehttp/psr7 package before version 2.10.2. Versions 1.x are end of life and will not receive a fix. Any PHP application that constructs PSR‑7 requests from user input and then forwards or proxies the request via guzzle is potentially affected.
Risk and Exploitability
The CVSS score is 5.3, indicating a moderate severity. The EPSS is not available, and the vulnerability is not listed in CISA’s KEV catalog, implying no confirmed public exploits. Exploitation requires the application to accept a malicious URL and to send the resulting PSR‑7 request without additional validation. While the attack vector is inferred, applications that aggressively use outbound HTTP clients or perform URL forwarding face higher risk, especially in environments with HTTP/1.1 reuse, proxies, or gateways where smuggling or cache poisoning could be leveraged.
OpenCVE Enrichment
Github GHSA