Web caches identify resources using a few specific components of each HTTP request, together known as the cache key. Two requests with the same cache key are regarded by the cache as equivalent. The cache key typically includes the request line and Host header, but not any other headers.
Web cache poisoning vulnerabilities arise when an application behind a cache processes input that is not included in the cache key. Attackers may be able to exploit this by sending crafted input to trigger a harmful response that the cache will then save and serve to other users.
The impact is potentially serious as the malicious cached page may be served to a large number of users without other interaction. The threat posed by this vulnerability depends largely on what can be achieved with the input. Often the input can be used to trigger XSS or open redirection. In other cases, it can simply be used to swap pages around.
To resolve this issue, either disable support for the affected headers, or disable caching on all affected pages.
If both the affected header and caching behavior are required, configure the cache to ensure that the header is included in the cache key. Depending on which caching solution you use, it might be possible to achieve this using the Vary response header.