Symfony vulnerable to denial of service via a malicious HTTP Host header
Description
All 2.0.X, 2.1.X, 2.2.X, 2.3.X, 2.4.X, and 2.5.X versions of the Symfony HttpFoundation component are affected by this security issue.
This issue has been fixed in Symfony 2.3.19, 2.4.9, and 2.5.4. Note that no fixes are provided for Symfony 2.0, 2.1, and 2.2 as they are not maintained anymore.
Description When an arbitrarily long hostname is sent by a client, its parsing in Request::getHost() can lead to a DoS attack, due to the way we validate the hostname via a regular expression.
Resolution The regular expression used to parse and validate the hostname from the HTTP request has been modified to avoid too much sensitivity to the submitted value length.
The patch for this issue is available here: https://github.com/symfony/symfony/pull/11828
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
symfony/http-foundationPackagist | >= 2.0.0, < 2.3.19 | 2.3.19 |
symfony/http-foundationPackagist | >= 2.4.0, < 2.4.9 | 2.4.9 |
symfony/http-foundationPackagist | >= 2.5.0, < 2.5.4 | 2.5.4 |
symfony/symfonyPackagist | >= 2.0.0, < 2.3.19 | 2.3.19 |
symfony/symfonyPackagist | >= 2.4.0, < 2.4.9 | 2.4.9 |
symfony/symfonyPackagist | >= 2.5.0, < 2.5.4 | 2.5.4 |
Patches
11ee96a8b1b09Test examples from Drupal SA-CORE-2014-003
1 file changed · +18 −4
src/Symfony/Component/HttpFoundation/Tests/RequestTest.php+18 −4 modified@@ -1595,9 +1595,11 @@ public function testTrustedHosts() Request::setTrustedHosts(array()); } - public function testVeryLongHost() + /** + * @dataProvider getLongHostNames + */ + public function testVeryLongHosts($host) { - $host = 'a'.str_repeat('.a', 40000); $start = microtime(true); $request = Request::create('/'); @@ -1609,13 +1611,15 @@ public function testVeryLongHost() /** * @dataProvider getHostValidities */ - public function testHostValidity($host, $isValid) + public function testHostValidity($host, $isValid, $expectedHost = null, $expectedPort = null) { $request = Request::create('/'); $request->headers->set('host', $host); if ($isValid) { - $this->assertSame($host, $request->getHost()); + $this->assertSame($expectedHost ?: $host, $request->getHost()); + if ($expectedPort) { + $this->assertSame($expectedPort, $request->getPort()); } } else { $this->setExpectedException('UnexpectedValueException', 'Invalid Host'); @@ -1631,6 +1635,16 @@ public function getHostValidities() array('a.', true), array("\xE9", false), array('[::1]', true), + array('[::1]:80', true, '[::1]', 80), + array(str_repeat('.', 101), false), + ); + } + + public function getLongHostNames() + { + return array( + array('a'.str_repeat('.a', 40000)), + array(str_repeat(':', 101)), ); } }
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
7- github.com/advisories/GHSA-v77v-x634-9m56ghsaADVISORY
- github.com/FriendsOfPHP/security-advisories/blob/master/symfony/http-foundation/CVE-2014-5244.yamlghsaWEB
- github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2014-5244.yamlghsaWEB
- github.com/symfony/symfony/commit/1ee96a8b1b0987ffe2a62dca7ad268bf9edfa9b8ghsaWEB
- github.com/symfony/symfony/pull/11828ghsaWEB
- symfony.com/blog/cve-2014-5244-denial-of-service-with-a-malicious-http-host-headerghsaWEB
- symfony.com/cve-2014-5244ghsaWEB
News mentions
0No linked articles in our index yet.