Symfony HTTP Foundation web cache poisoning
The advisory, in context
An issue was discovered in Http Foundation in Symfony 2.7.0 through 2.7.48, 2.8.0 through 2.8.43, 3.3.0 through 3.3.17, 3.4.0 through 3.4.13, 4.0.0 through 4.0.13, and 4.1.0 through 4.1.2. It arises from support for a (legacy) IIS header that lets users override the path in the request URL via the X-Original-URL or X-Rewrite-URL HTTP request header. These headers are designed for IIS support, but it's not verified that the server is in fact running IIS, which means anybody who can send these requests to an application can trigger this. This affects \Symfony\Component\HttpFoundation\Request::prepareRequestUri() where X-Original-URL and X_REWRITE_URL are both used. The fix drops support for these methods so that they cannot be used as attack vectors such as web cache poisoning.
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 2.7.0 before 2.7.49
Fixed in 2.7.49
49 explicitly affected versions
v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.49"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v2.7.0",
"v2.7.1",
"v2.7.10",
"v2.7.11",
"v2.7.12",
"v2.7.13",
"v2.7.14",
"v2.7.15",
"v2.7.16",
"v2.7.17",
"v2.7.18",
"v2.7.19",
"v2.7.2",
"v2.7.20",
"v2.7.21",
"v2.7.22",
"v2.7.23",
"v2.7.24",
"v2.7.25",
"v2.7.26",
"v2.7.27",
"v2.7.28",
"v2.7.29",
"v2.7.3",
"v2.7.30",
"v2.7.31",
"v2.7.32",
"v2.7.33",
"v2.7.34",
"v2.7.35",
"v2.7.36",
"v2.7.37",
"v2.7.38",
"v2.7.39",
"v2.7.4",
"v2.7.40",
"v2.7.41",
"v2.7.42",
"v2.7.43",
"v2.7.44",
"v2.7.45",
"v2.7.46",
"v2.7.47",
"v2.7.48",
"v2.7.5",
"v2.7.6",
"v2.7.7",
"v2.7.8",
"v2.7.9"
]
}From 2.8.0 before 2.8.44
Fixed in 2.8.44
44 explicitly affected versions
v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "2.8.0"
},
{
"fixed": "2.8.44"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v2.8.0",
"v2.8.1",
"v2.8.10",
"v2.8.11",
"v2.8.12",
"v2.8.13",
"v2.8.14",
"v2.8.15",
"v2.8.16",
"v2.8.17",
"v2.8.18",
"v2.8.19",
"v2.8.2",
"v2.8.20",
"v2.8.21",
"v2.8.22",
"v2.8.23",
"v2.8.24",
"v2.8.25",
"v2.8.26",
"v2.8.27",
"v2.8.28",
"v2.8.29",
"v2.8.3",
"v2.8.30",
"v2.8.31",
"v2.8.32",
"v2.8.33",
"v2.8.34",
"v2.8.35",
"v2.8.36",
"v2.8.37",
"v2.8.38",
"v2.8.39",
"v2.8.4",
"v2.8.40",
"v2.8.41",
"v2.8.42",
"v2.8.43",
"v2.8.5",
"v2.8.6",
"v2.8.7",
"v2.8.8",
"v2.8.9"
]
}From 3.0.0 before 3.3.18
Fixed in 3.3.18
61 explicitly affected versions
v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.0-BETA1, v3.1.0-RC1, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.0-BETA1, v3.2.0-RC1, v3.2.0-RC2, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.0-BETA1, v3.3.0-RC1, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.0.0"
},
{
"fixed": "3.3.18"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v3.0.0",
"v3.0.1",
"v3.0.2",
"v3.0.3",
"v3.0.4",
"v3.0.5",
"v3.0.6",
"v3.0.7",
"v3.0.8",
"v3.0.9",
"v3.1.0",
"v3.1.0-BETA1",
"v3.1.0-RC1",
"v3.1.1",
"v3.1.10",
"v3.1.2",
"v3.1.3",
"v3.1.4",
"v3.1.5",
"v3.1.6",
"v3.1.7",
"v3.1.8",
"v3.1.9",
"v3.2.0",
"v3.2.0-BETA1",
"v3.2.0-RC1",
"v3.2.0-RC2",
"v3.2.1",
"v3.2.10",
"v3.2.11",
"v3.2.12",
"v3.2.13",
"v3.2.14",
"v3.2.2",
"v3.2.3",
"v3.2.4",
"v3.2.5",
"v3.2.6",
"v3.2.7",
"v3.2.8",
"v3.2.9",
"v3.3.0",
"v3.3.0-BETA1",
"v3.3.0-RC1",
"v3.3.1",
"v3.3.10",
"v3.3.11",
"v3.3.12",
"v3.3.13",
"v3.3.14",
"v3.3.15",
"v3.3.16",
"v3.3.17",
"v3.3.2",
"v3.3.3",
"v3.3.4",
"v3.3.5",
"v3.3.6",
"v3.3.7",
"v3.3.8",
"v3.3.9"
]
}From 3.4.0 before 3.4.14
Fixed in 3.4.14
14 explicitly affected versions
v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.4.0"
},
{
"fixed": "3.4.14"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v3.4.0",
"v3.4.1",
"v3.4.10",
"v3.4.11",
"v3.4.12",
"v3.4.13",
"v3.4.2",
"v3.4.3",
"v3.4.4",
"v3.4.5",
"v3.4.6",
"v3.4.7",
"v3.4.8",
"v3.4.9"
]
}From 4.0.0 before 4.0.14
Fixed in 4.0.14
14 explicitly affected versions
v4.0.0, v4.0.1, v4.0.10, v4.0.11, v4.0.12, v4.0.13, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.0.0"
},
{
"fixed": "4.0.14"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.0.0",
"v4.0.1",
"v4.0.10",
"v4.0.11",
"v4.0.12",
"v4.0.13",
"v4.0.2",
"v4.0.3",
"v4.0.4",
"v4.0.5",
"v4.0.6",
"v4.0.7",
"v4.0.8",
"v4.0.9"
]
}From 4.1.0 before 4.1.3
Fixed in 4.1.3
3 explicitly affected versions
v4.1.0, v4.1.1, v4.1.2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.1.0"
},
{
"fixed": "4.1.3"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.1.0",
"v4.1.1",
"v4.1.2"
]
}From 2.7.0 before 2.7.49
Fixed in 2.7.49
49 explicitly affected versions
v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.49"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v2.7.0",
"v2.7.1",
"v2.7.10",
"v2.7.11",
"v2.7.12",
"v2.7.13",
"v2.7.14",
"v2.7.15",
"v2.7.16",
"v2.7.17",
"v2.7.18",
"v2.7.19",
"v2.7.2",
"v2.7.20",
"v2.7.21",
"v2.7.22",
"v2.7.23",
"v2.7.24",
"v2.7.25",
"v2.7.26",
"v2.7.27",
"v2.7.28",
"v2.7.29",
"v2.7.3",
"v2.7.30",
"v2.7.31",
"v2.7.32",
"v2.7.33",
"v2.7.34",
"v2.7.35",
"v2.7.36",
"v2.7.37",
"v2.7.38",
"v2.7.39",
"v2.7.4",
"v2.7.40",
"v2.7.41",
"v2.7.42",
"v2.7.43",
"v2.7.44",
"v2.7.45",
"v2.7.46",
"v2.7.47",
"v2.7.48",
"v2.7.5",
"v2.7.6",
"v2.7.7",
"v2.7.8",
"v2.7.9"
]
}From 2.8.0 before 2.8.44
Fixed in 2.8.44
44 explicitly affected versions
v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "2.8.0"
},
{
"fixed": "2.8.44"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v2.8.0",
"v2.8.1",
"v2.8.10",
"v2.8.11",
"v2.8.12",
"v2.8.13",
"v2.8.14",
"v2.8.15",
"v2.8.16",
"v2.8.17",
"v2.8.18",
"v2.8.19",
"v2.8.2",
"v2.8.20",
"v2.8.21",
"v2.8.22",
"v2.8.23",
"v2.8.24",
"v2.8.25",
"v2.8.26",
"v2.8.27",
"v2.8.28",
"v2.8.29",
"v2.8.3",
"v2.8.30",
"v2.8.31",
"v2.8.32",
"v2.8.33",
"v2.8.34",
"v2.8.35",
"v2.8.36",
"v2.8.37",
"v2.8.38",
"v2.8.39",
"v2.8.4",
"v2.8.40",
"v2.8.41",
"v2.8.42",
"v2.8.43",
"v2.8.5",
"v2.8.6",
"v2.8.7",
"v2.8.8",
"v2.8.9"
]
}From 3.0.0 before 3.3.18
Fixed in 3.3.18
61 explicitly affected versions
v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.0-BETA1, v3.1.0-RC1, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.0-BETA1, v3.2.0-RC1, v3.2.0-RC2, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.0-BETA1, v3.3.0-RC1, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.0.0"
},
{
"fixed": "3.3.18"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v3.0.0",
"v3.0.1",
"v3.0.2",
"v3.0.3",
"v3.0.4",
"v3.0.5",
"v3.0.6",
"v3.0.7",
"v3.0.8",
"v3.0.9",
"v3.1.0",
"v3.1.0-BETA1",
"v3.1.0-RC1",
"v3.1.1",
"v3.1.10",
"v3.1.2",
"v3.1.3",
"v3.1.4",
"v3.1.5",
"v3.1.6",
"v3.1.7",
"v3.1.8",
"v3.1.9",
"v3.2.0",
"v3.2.0-BETA1",
"v3.2.0-RC1",
"v3.2.0-RC2",
"v3.2.1",
"v3.2.10",
"v3.2.11",
"v3.2.12",
"v3.2.13",
"v3.2.14",
"v3.2.2",
"v3.2.3",
"v3.2.4",
"v3.2.5",
"v3.2.6",
"v3.2.7",
"v3.2.8",
"v3.2.9",
"v3.3.0",
"v3.3.0-BETA1",
"v3.3.0-RC1",
"v3.3.1",
"v3.3.10",
"v3.3.11",
"v3.3.12",
"v3.3.13",
"v3.3.14",
"v3.3.15",
"v3.3.16",
"v3.3.17",
"v3.3.2",
"v3.3.3",
"v3.3.4",
"v3.3.5",
"v3.3.6",
"v3.3.7",
"v3.3.8",
"v3.3.9"
]
}From 3.4.0 before 3.4.14
Fixed in 3.4.14
14 explicitly affected versions
v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "3.4.0"
},
{
"fixed": "3.4.14"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v3.4.0",
"v3.4.1",
"v3.4.10",
"v3.4.11",
"v3.4.12",
"v3.4.13",
"v3.4.2",
"v3.4.3",
"v3.4.4",
"v3.4.5",
"v3.4.6",
"v3.4.7",
"v3.4.8",
"v3.4.9"
]
}From 4.0.0 before 4.0.14
Fixed in 4.0.14
14 explicitly affected versions
v4.0.0, v4.0.1, v4.0.10, v4.0.11, v4.0.12, v4.0.13, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.0.0"
},
{
"fixed": "4.0.14"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.0.0",
"v4.0.1",
"v4.0.10",
"v4.0.11",
"v4.0.12",
"v4.0.13",
"v4.0.2",
"v4.0.3",
"v4.0.4",
"v4.0.5",
"v4.0.6",
"v4.0.7",
"v4.0.8",
"v4.0.9"
]
}From 4.1.0 before 4.1.3
Fixed in 4.1.3
3 explicitly affected versions
v4.1.0, v4.1.1, v4.1.2
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "4.1.0"
},
{
"fixed": "4.1.3"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v4.1.0",
"v4.1.1",
"v4.1.2"
]
}References
- https://nvd.nist.gov/vuln/detail/CVE-2018-14773
- https://github.com/symfony/symfony/commit/e447e8b92148ddb3d1956b96638600ec95e08f6b
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/http-foundation/CVE-2018-14773.yaml
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2018-14773.yaml
- https://lists.debian.org/debian-lts-announce/2019/03/msg00009.html
- https://seclists.org/bugtraq/2019/May/21
- https://symfony.com/blog/cve-2018-14773-remove-support-for-legacy-and-risky-http-headers
- https://www.debian.org/security/2019/dsa-4441
- https://www.drupal.org/SA-CORE-2018-005
- http://www.securityfocus.com/bid/104943
- http://www.securitytracker.com/id/1041405