Description
guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Prior to 2.12.1, guzzlehttp/psr7 did not reject CR/LF characters in certain first-party HTTP start-line fields: the request method, protocol version, and response reason phrase. If an application placed attacker-controlled data into one of those fields and later serialized the PSR-7 message as raw HTTP/1.x, for example with Message::toString() or an equivalent serializer, the serialized message could contain attacker-controlled header lines. The issue can also be reached through Message::parseRequest() or Message::parseResponse() when malformed raw messages are parsed into first-party PSR-7 objects and then serialized again. Creating or modifying a Request, Response, or other PSR-7 object alone is not sufficient. The issue requires the malformed message to be serialized and written to the network, forwarded, replayed, or otherwise processed by software that does not independently reject the malformed start line. This vulnerability is fixed in 2.12.1.
Published: 2026-06-23
Score: 4.8 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

guzzlehttp/psr7 did not filter CR/LF characters in certain first-party HTTP start-line fields—request method, protocol version, and response reason phrase—before version 2.12.1. If an application injects attacker-controlled data into any of these fields and later serializes the PSR-7 message to a raw HTTP/1.x format, the resulting serialized text may include arbitrary header lines, enabling HTTP response splitting or other malleability attacks against downstream consumers of the message. This vulnerability can also be introduced through the Message::parseRequest() or Message::parseResponse() functions when malformed raw messages are parsed into PSR-7 objects and then re-serialized. Creation or modification of PSR-7 objects alone does not trigger the flaw; the message must be serialized and transmitted to software that does not independently reject malformed start-line characters. The issue is fixed in 2.12.1.

Affected Systems

The vulnerability affects the guzzle http psr7 library in all releases older than 2.12.1. Any PHP application that incorporates this library and can place attacker-controlled values into the request method, protocol version, or response reason phrase—and subsequently serializes the message to raw HTTP output—can be impacted. This includes code that writes PSR-7 requests or responses to the network or forwards them to other services.

Risk and Exploitability

The CVSS score of 4.8 denotes moderate severity. No EPSS score is available, so exploitation probability is unknown. The vulnerability is not listed in the CISA KEV catalog. Based on the description, exploitation requires the attacker to inject CR/LF characters into a start-line field, then trigger serialization of the PSR-7 object, and finally transmit the resulting raw HTTP text to a system that does not independently reject malformed start lines. The risk is elevated for applications that expose PSR-7 serialization to external input or that forward serialized requests or responses to untrusted networks.

Generated by OpenCVE AI on June 23, 2026 at 22:11 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the guzzlehttp/psr7 library to version 2.12.1 or later, where the start-line fields are properly sanitized.
  • If an upgrade cannot be performed immediately, ensure that any data assigned to the request method, protocol version, or response reason phrase is validated or sanitized to remove CR/LF characters before creating a PSR-7 object.
  • Configure downstream network components (HTTP servers, reverse proxies, load balancers) to reject or neutralize responses containing malformed start lines, thereby providing an additional layer of protection against potential header injection.

Generated by OpenCVE AI on June 23, 2026 at 22:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-vm85-hxw5-5432 guzzlehttp/psr7: CRLF Injection in HTTP Start-Line Serialization
History

Tue, 23 Jun 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 23 Jun 2026 15:45:00 +0000

Type Values Removed Values Added
Description guzzlehttp/psr7 is a PSR-7 HTTP message library implementation in PHP. Prior to 2.12.1, guzzlehttp/psr7 did not reject CR/LF characters in certain first-party HTTP start-line fields: the request method, protocol version, and response reason phrase. If an application placed attacker-controlled data into one of those fields and later serialized the PSR-7 message as raw HTTP/1.x, for example with Message::toString() or an equivalent serializer, the serialized message could contain attacker-controlled header lines. The issue can also be reached through Message::parseRequest() or Message::parseResponse() when malformed raw messages are parsed into first-party PSR-7 objects and then serialized again. Creating or modifying a Request, Response, or other PSR-7 object alone is not sufficient. The issue requires the malformed message to be serialized and written to the network, forwarded, replayed, or otherwise processed by software that does not independently reject the malformed start line. This vulnerability is fixed in 2.12.1.
Title guzzlehttp/psr7: CRLF Injection in HTTP Start-Line Serialization
Weaknesses CWE-113
CWE-93
References
Metrics cvssV3_1

{'score': 4.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-23T15:49:52.620Z

Reserved: 2026-06-17T14:34:51.881Z

Link: CVE-2026-55766

cve-icon Vulnrichment

Updated: 2026-06-23T15:49:46.689Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-23T22:15:04Z

Weaknesses
  • CWE-113

    Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting')

  • CWE-93

    Improper Neutralization of CRLF Sequences ('CRLF Injection')