Cache Poisoning / Deception

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:

  1. Encontrar una web vulnerable,que permita modificar las cebeceras HTTP y sus valores.
  2. Obliga al servidor de caché a eliminar su contenido de caché actual, ya que buscamos que se almacene en las cachés de los servidores.
  3. Envía una petición maliciosa que se almacenará en la caché.
  4. Envía la siguiente solicitud. El contenido previamente inyectado y almacenado en caché será la respuesta a esta petición.

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?

Proof of Concept

Tips

Recursos