Prevent cache poisoning via a Response Content-Type header in Symfony
The advisory, in context
Description
When a Response does not contain a Content-Type header, Symfony falls back to the format defined in the Accept header of the request, leading to a possible mismatch between the response's content and Content-Type header. When the response is cached, this can lead to a corrupted cache where the cached format is not the right one.
Resolution
Symfony does not use the Accept header anymore to guess the Content-Type.
The patch for this issue is available here for the 4.4 branch.
Credits
I would like to thank Xavier Lacot from JoliCode for reporting & Yonel Ceruto and Tobias Schultze for fixing the issue.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
From 4.4.0 before 4.4.7
Fixed in 4.4.7
7 explicitly affected versions
v4.4.0, v4.4.1, v4.4.2, v4.4.3, v4.4.4, v4.4.5, v4.4.6
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.4.0"
},
{
"fixed": "4.4.7"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.4.0",
"v4.4.1",
"v4.4.2",
"v4.4.3",
"v4.4.4",
"v4.4.5",
"v4.4.6"
]
}From 5.0.0 before 5.0.7
Fixed in 5.0.7
7 explicitly affected versions
v5.0.0, v5.0.1, v5.0.2, v5.0.3, v5.0.4, v5.0.5, v5.0.6
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "5.0.0"
},
{
"fixed": "5.0.7"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v5.0.0",
"v5.0.1",
"v5.0.2",
"v5.0.3",
"v5.0.4",
"v5.0.5",
"v5.0.6"
]
}From 4.4.0 before 4.4.7
Fixed in 4.4.7
7 explicitly affected versions
v4.4.0, v4.4.1, v4.4.2, v4.4.3, v4.4.4, v4.4.5, v4.4.6
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.4.0"
},
{
"fixed": "4.4.7"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.4.0",
"v4.4.1",
"v4.4.2",
"v4.4.3",
"v4.4.4",
"v4.4.5",
"v4.4.6"
]
}From 5.0.0 before 5.0.7
Fixed in 5.0.7
7 explicitly affected versions
v5.0.0, v5.0.1, v5.0.2, v5.0.3, v5.0.4, v5.0.5, v5.0.6
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "5.0.0"
},
{
"fixed": "5.0.7"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v5.0.0",
"v5.0.1",
"v5.0.2",
"v5.0.3",
"v5.0.4",
"v5.0.5",
"v5.0.6"
]
}References
- https://github.com/symfony/symfony/security/advisories/GHSA-mcx4-f5f5-4859
- https://nvd.nist.gov/vuln/detail/CVE-2020-5255
- https://github.com/symfony/symfony/commit/dca343442e6a954f96a2609e7b4e9c21ed6d74e6
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/http-foundation/CVE-2020-5255.yaml
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2020-5255.yaml
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/C36JLPHUPKDFAX6D5WYFC4ALO2K7RDUQ
- https://symfony.com/blog/cve-2020-5255-prevent-cache-poisoning-via-a-response-content-type-header
- https://symfony.com/cve-2020-5255