El impacto de una respuesta maliciosa puede ser amplificado si se almacena en caché, ya sea por una caché web utilizada por múltiples usuarios o incluso la caché del navegador de un único usuario. Si una respuesta se almacena en caché en una caché web compartida, como las que se encuentran comúnmente en servidores proxy, entonces todos los usuarios de esa caché seguirán recibiendo el contenido malicioso hasta que la entrada de la caché sea eliminada. De manera similar, si la respuesta se almacena en la caché del navegador de un usuario individual, ese usuario continuará recibiendo el contenido malicioso hasta que se elimine la entrada de la caché, aunque solo el usuario de la instancia local del navegador se verá afectado.
Para llevar a cabo con éxito dicho ataque, un atacante:
Este tipo de ataque es bastante difícil de llevar a cabo en un entorno real. La lista de condiciones es larga y difícil de cumplir por parte del atacante. Sin embargo, es más fácil utilizar esta técnica que el Defacement entre Usuarios Cruzados.
Un ataque de Envenenamiento de Caché (Cache Poisoning) es posible debido a HTTP Response Splitting y a fallos en la aplicación web. Es crucial desde el punto de vista del atacante que la aplicación permita llenar el campo de encabezado con más de un encabezado utilizando los caracteres CR (retorno de carro) y LF (salto de línea).
¿Cuál es la diferencia entre el envenenamiento de caché web y la decepción de caché web?
En Cache Poisoning, el atacante hace que la aplicación almacene cierto contenido malicioso en la caché, y este contenido se sirve desde la caché a otros usuarios de la aplicación.
En Cache Deception, el atacante hace que la aplicación almacene cierto contenido sensible perteneciente a otro usuario en la caché, y luego el atacante recupera este contenido desde la caché.