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.
The product stores, transfers, or shares a resource that contains sensitive information, but it does not properly remove that information before the product makes the resource available to unauthorized actors.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Httpclient | Sensiolabs | 4.4.0 (including) | 4.4.13 (excluding) |
Httpclient | Sensiolabs | 5.1.0 (including) | 5.1.5 (excluding) |
Symfony | Sensiolabs | 4.4.0 (including) | 4.4.13 (excluding) |
Symfony | Sensiolabs | 5.1.0 (including) | 5.1.5 (excluding) |
Symfony | Ubuntu | groovy | * |
Symfony | Ubuntu | hirsute | * |
Symfony | Ubuntu | trusty | * |
Symfony | Ubuntu | upstream | * |
Symfony | Ubuntu | xenial | * |
Resources that may contain sensitive data include documents, packets, messages, databases, etc. While this data may be useful to an individual user or small set of users who share the resource, it may need to be removed before the resource can be shared outside of the trusted group. The process of removal is sometimes called cleansing or scrubbing. For example, a product for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.