MediumGHSA-5c58-w9xc-qcj9CVE-2015-2308

Symfony Vulnerable to PHP Eval Injection

Published 17 May 2022 · Updated 8 Dec 2024

Affected packages

Affected
>=2.0.0 <2.3.27
Fixed in
2.3.27
Update to the fixed version for your release line, for example:composer require symfony/symfony:^2.3.27
Affected
>=2.4.0 <2.5.11
Fixed in
2.5.11
Update to the fixed version for your release line, for example:composer require symfony/symfony:^2.5.11
Affected
>=2.6.0 <2.6.6
Fixed in
2.6.6
Update to the fixed version for your release line, for example:composer require symfony/symfony:^2.6.6
Affected
>=2.0.0 <2.3.27
Fixed in
2.3.27
Update to the fixed version for your release line, for example:composer require symfony/http-kernel:^2.3.27
Affected
>=2.4.0 <2.5.11
Fixed in
2.5.11
Update to the fixed version for your release line, for example:composer require symfony/http-kernel:^2.5.11
Affected
>=2.6.0 <2.6.6
Fixed in
2.6.6
Update to the fixed version for your release line, for example:composer require symfony/http-kernel:^2.6.6

Details

Applications with ESI support (and SSI support as of Symfony 2.6) enabled and using the Symfony built-in reverse proxy (the `Symfony\Component\HttpKernel\HttpCache class) are vulnerable to PHP code injection; a malicious user can inject PHP code that will be executed by the server.

HttpCache uses eval() to execute files in its cache when they contain ESI tags (and only when ESI is enabled). The vulnerability comes from the fact that PHP allows contents of <script language="php"> tags to be executed (and this kind of PHP tags is always available regardless of the configuration), but there were not escaped before the evaluation.

A possible exploit comes from websites also vulnerable to Cross-Site Scripting as an attacker can successfully conduct a PHP code injection attack by passing such a tag in a user submitted variable (for which proper output escaping was not applied).

Is GHSA-5c58-w9xc-qcj9 in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected symfony/symfony, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.