An attacker could sneak in a newline (\n
) into both the header names and values. While the specification states that \r\n\r\n
is used to terminate the header list, many servers in the wild will also accept \n\n
. An attacker that is able to control the header names that are passed to Slilm-Psr7 would be able to intentionally craft invalid messages, possibly causing application errors or invalid HTTP requests being sent out with an PSR-18 HTTP client. The latter might present a denial of service vector if a remote service’s web application firewall bans the application due to the receipt of malformed requests.
The issue is patched in 1.6.1, 1.5.1, and 1.4.1.
In Slim-Psr7 prior to 1.6.1, 1.5.1, and 1.4.1, validate HTTP header keys and/or values, and if using user-supplied values, filter them to strip off leading or trailing newline characters before calling withHeader().
We are very grateful to and thank <a href="https://gjcampbell.co.uk/">Graham Campbell</a> for reporting and working with us on this issue.
{ "nvd_published_at": "2023-04-17T22:15:10Z", "cwe_ids": [ "CWE-436" ], "severity": "MODERATE", "github_reviewed": true, "github_reviewed_at": "2023-04-18T22:20:42Z" }