{"id":"CVE-2012-6431","aliases":["EUVD-2022-3093","GHSA-83c3-qx27-2rwr"],"status":"published","title":"Symfony Allows URI Restrictions Bypass Via Double-Encoded String","description":"Symfony 2.0.x before 2.0.20 does not process URL encoded data consistently within the Routing and Security components, which allows remote attackers to bypass intended URI restrictions via a doubly encoded string.","severity":{"version":"2.0","score":6.4,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-07","score":0.01876,"percentile":0.79541,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-264","CWE-287"],"published":"2012-12-27T11:00:00Z","modified":"2026-06-16T23:48:05Z","fixes":[{"ecosystem":"Packagist","package":"symfony/http-foundation","fixed_in":["2.0.19"],"sources":["ghsa","osv"]},{"ecosystem":"Packagist","package":"symfony/routing","fixed_in":["2.0.19"],"sources":["ghsa","osv"]},{"ecosystem":"Packagist","package":"symfony/security","fixed_in":["2.0.19"],"sources":["ghsa","osv"]},{"ecosystem":"Packagist","package":"symfony/symfony","fixed_in":["2.0.19"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"symfony/http-foundation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"symfony/routing","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"symfony/security","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"symfony/symfony","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}]},{"source":"osv","ecosystem":"Packagist","package":"symfony/http-foundation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}],"versions":["2.0.4","2.0.5","2.0.6","2.0.7","v2.0.10","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.16","v2.0.17","v2.0.18","v2.0.9"]},{"source":"osv","ecosystem":"Packagist","package":"symfony/routing","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}],"versions":["2.0.4","2.0.5","2.0.6","2.0.7","v2.0.10","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.16","v2.0.17","v2.0.18","v2.0.9"]},{"source":"osv","ecosystem":"Packagist","package":"symfony/security","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}],"versions":["2.0.4","2.0.5","2.0.6","2.0.7","v2.0.10","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.16","v2.0.17","v2.0.18","v2.0.9"]},{"source":"osv","ecosystem":"Packagist","package":"symfony/symfony","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.0.19"}]}],"versions":["2.0.4","2.0.5","2.0.6","2.0.7","v2.0.10","v2.0.11","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.16","v2.0.17","v2.0.18","v2.0.9"]}],"products":[{"vendor":"sensiolabs","product":"symfony"}],"references":[{"url":"http://symfony.com/blog/security-release-symfony-2-0-20-and-2-1-5-released","tags":["x_refsource_CONFIRM","x_transferred","Vendor Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2012-6431","tags":["advisory"]},{"url":"https://github.com/symfony/symfony/commit/55014a6841bec50046e8329a4835c160ac31a496","tags":["web"]},{"url":"https://github.com/symfony/symfony/commit/8b2c17f80377582287a78e0b521497e039dd6b0d","tags":["web"]},{"url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/http-foundation/CVE-2012-6431.yaml","tags":["web"]},{"url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/routing/CVE-2012-6431.yaml","tags":["web"]},{"url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/security/CVE-2012-6431.yaml","tags":["web"]},{"url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2012-6431.yaml","tags":["web"]},{"url":"https://symfony.com/blog/security-release-symfony-2-0-20-and-2-1-5-released","tags":["web"]},{"url":"https://github.com/advisories/GHSA-83c3-qx27-2rwr"}],"sources":{"cve":[{"id":"CVE-2012-6431","description":"Symfony 2.0.x before 2.0.20 does not process URL encoded data consistently within the Routing and Security components, which allows remote attackers to bypass intended URI restrictions via a doubly encoded string.","status":"published","published":"2012-12-27T11:00:00Z","modified":"2024-09-17T00:46:20.194Z","updated_at":"2026-11-02T14:34:51.269982Z"}],"euvd":[{"id":"EUVD-2022-3093","description":"Symfony 2.0.x before 2.0.20 does not process URL encoded data consistently within the Routing and Security components, which allows remote attackers to bypass intended URI restrictions via a doubly encoded string.","status":"published","published":"2012-12-27T11:00:00Z","modified":"2024-09-17T00:46:20Z","updated_at":"2026-11-03T00:28:55.842484Z"}],"ghsa":[{"id":"GHSA-83c3-qx27-2rwr","title":"Symfony Allows URI Restrictions Bypass Via Double-Encoded String","description":"On the Symfony 2.0.x version, there's a security issue that allows access to routes protected by a firewall even when the user is not logged in.\n\nBoth the Routing component and the Security component uses the path returned by `getPathInfo()` to match a Request. The `getPathInfo()` returns a decoded path, but the Routing component (`Symfony\\Component\\Routing\\Matcher\\UrlMatcher`) decodes the path a second time; whereas the Security component, `Symfony\\Component\\HttpFoundation\\RequestMatcher`, does not.\n\nThis difference causes Symfony 2.0 to be vulnerable to double encoding attacks.\n\n","status":"published","published":"2022-05-17T05:17:03Z","modified":"2024-02-06T16:01:44Z","cwes":["CWE-287"],"updated_at":"2026-11-02T14:37:36.076201Z"}],"nvd":[{"id":"CVE-2012-6431","description":"Symfony 2.0.x before 2.0.20 does not process URL encoded data consistently within the Routing and Security components, which allows remote attackers to bypass intended URI restrictions via a doubly encoded string.","status":"published","published":"2012-12-27T11:47:01.79Z","modified":"2026-06-16T23:48:05.447Z","cvss":[{"version":"2.0","score":6.4,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-264"],"updated_at":"2026-11-02T14:02:16.958223Z"}],"osv":[{"id":"GHSA-83c3-qx27-2rwr","title":"Symfony Allows URI Restrictions Bypass Via Double-Encoded String","description":"On the Symfony 2.0.x version, there's a security issue that allows access to routes protected by a firewall even when the user is not logged in.\n\nBoth the Routing component and the Security component uses the path returned by `getPathInfo()` to match a Request. The `getPathInfo()` returns a decoded path, but the Routing component (`Symfony\\Component\\Routing\\Matcher\\UrlMatcher`) decodes the path a second time; whereas the Security component, `Symfony\\Component\\HttpFoundation\\RequestMatcher`, does not.\n\nThis difference causes Symfony 2.0 to be vulnerable to double encoding attacks.\n\n","status":"published","published":"2022-05-17T05:17:03Z","modified":"2024-12-03T06:08:10.253084Z","cwes":["CWE-287"],"updated_at":"2026-11-02T15:46:41.732368Z"}]}}
