CVE-2020-15094: RCE in Symfony

Published Sep 2, 2020
·
Updated

CVE-2020-15094: Prevent RCE when calling untrusted remote with CachingHttpClient

Other sources

Description -----------

The CachingHttpClient class from the HttpClient Symfony component relies on the HttpCache class to handle requests. HttpCache uses internal headers like X-Body-Eval and X-Body-File to control the restoration of cached responses. The class was initially written with surrogate caching and ESI support in mind (all HTTP calls come from a trusted backend in that scenario). But when used by CachingHttpClient and if an attacker can control the response for a request being made by the CachingHttpClient, remote code execution is possible.

Resolution ----------

HTTP headers designed for internal use in HttpCache are now stripped from remote responses before being passed to HttpCache.

The patch for this issue is available here for the 4.4 branch.

Credits -------

I would like to thank Matthias Pigulla (webfactory GmbH) for reporting and fixing the issue.

GitHub

In Symfony before versions 4.4.13 and 5.1.5, the CachingHttpClient class from the HttpClient Symfony component relies on the HttpCache class to handle requests. HttpCache uses internal headers like X-Body-Eval and X-Body-File to control the restoration of cached responses. The class was initially written with surrogate caching and ESI support in mind (all HTTP calls come from a trusted backend in that scenario). But when used by CachingHttpClient and if an attacker can control the response for a request being made by the CachingHttpClient, remote code execution is possible. This has been fixed in versions 4.4.13 and 5.1.5.

Affected Software

12 affected componentsFixes available
composer/symfony/http-kernel>=4.3.0, <4.4.0, >=4.4.0, <4.4.13, >=5.0.0, <5.1.0, >=5.1.0, <5.1.5
composer/symfony/symfony>=4.3.0, <4.4.0, >=4.4.0, <4.4.13, >=5.0.0, <5.1.0, >=5.1.0, <5.1.5
composer/symfony/symfony>=4.3.0<4.4.13
4.4.13
composer/symfony/http-kernel>=4.3.0<4.4.13
4.4.13
composer/symfony/symfony>=5.0.0<5.1.5
5.1.5
composer/symfony/http-kernel>=5.0.0<5.1.5
5.1.5
SensioLabs Httpclient>=4.4.0<4.4.13
SensioLabs Httpclient>=5.1.0<5.1.5
SensioLabs Symfony>=4.4.0<4.4.13
SensioLabs Symfony>=5.1.0<5.1.5
Fedoraproject Fedora=32
Fedoraproject Fedora=33

Event History

Sep 2, 2020
Advisory Published
08:00 AM
CVE Published
via MITRE·05:35 PM
Data Sourced
via MITRE·05:35 PM
DescriptionSeverityWeakness
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is CVE-2020-15094?

CVE-2020-15094 is a vulnerability in the Symfony HttpClient component that allows remote code execution (RCE) when calling an untrusted remote.

2

What is the severity of CVE-2020-15094?

CVE-2020-15094 has a severity value of 8.8, which is considered high.

3

Which software packages are affected by CVE-2020-15094?

The affected software packages include Symfony HttpKernel and Symfony HttpClient versions 4.3.0 up to 4.4.13, and versions 5.0.0 up to 5.1.5. It also affects Sensiolabs Httpclient versions 4.4.0 up to 4.4.13 and versions 5.1.0 up to 5.1.5, as well as Sensiolabs Symfony versions 4.4.0 up to 4.4.13 and versions 5.1.0 up to 5.1.5.

4

How does the CachingHttpClient class in Symfony handle requests?

The CachingHttpClient class in Symfony relies on the HttpCache class to handle requests.

5

What headers does the HttpCache class use to control the restoration of cached responses?

The HttpCache class uses internal headers like X-Body-Eval and X-Body-File to control the restoration of cached responses.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203