Vulnerabilidad Web cache poisoning

 

www.onlinetis.com

La vulnerabilidad de envenenamiento de caché web (Web cache poisoning) es un tipo de ataque en el que un atacante manipula las respuestas de un servidor web de modo que el contenido malicioso se almacena en la caché de un servidor proxy o CDN. Cuando un usuario legítimo solicita el mismo recurso, recibe la versión envenenada, que puede contener código malicioso, redirecciones a sitios de phishing u otro contenido dañino.

¿Cómo funciona?

Los servidores de caché almacenan copias de las respuestas del servidor para que las solicitudes posteriores de otros usuarios puedan ser servidas más rápidamente, sin necesidad de consultar el servidor original. Para decidir qué respuestas almacenar en caché y qué solicitudes son las mismas, el servidor de caché utiliza las "claves de caché" (cache keys).

Un ataque de envenenamiento de caché se produce en dos fases:

  1. Fase de envenenamiento: El atacante envía una solicitud cuidadosamente elaborada al servidor web. Esta solicitud contiene un encabezado HTTP malicioso que el servidor web ignora, pero que el servidor de caché interpreta como parte de su "clave de caché". El servidor web procesa la solicitud y devuelve una respuesta, que el atacante ha logrado que contenga el contenido malicioso. El servidor de caché almacena esta respuesta maliciosa, asociándola con la clave de caché manipulada.

  2. Fase de entrega: Ahora, cuando un usuario legítimo realiza una solicitud que coincide con la clave de caché envenenada, el servidor de caché entrega la respuesta maliciosa en lugar de una respuesta legítima.

Un ejemplo común de este ataque es la manipulación de encabezados como X-Forwarded-Host o Host. Si un servidor web utiliza el valor de estos encabezados para generar enlaces en su respuesta (por ejemplo, en un script de JavaScript), un atacante puede manipular el encabezado para que apunte a un sitio malicioso. Si esta respuesta se almacena en caché, todos los usuarios que soliciten esa página serán redirigidos al sitio del atacante.


Prevención

Para prevenir el envenenamiento de caché, es crucial que los desarrolladores y administradores de sistemas se aseguren de que los servidores web y de caché funcionen de manera segura:

  • Evitar entradas no confiables en las claves de caché: Los servidores de caché deben configurarse para que las claves de caché solo incluyan encabezados HTTP de confianza (Host, Accept-Encoding, User-Agent, etc.) y excluir encabezados que puedan ser manipulados por atacantes.

  • Normalizar los encabezados: Antes de usarlos en las respuestas, se deben normalizar los valores de los encabezados HTTP para evitar que un atacante pueda usar mayúsculas/minúsculas o espacios para eludir las políticas de caché.

  • Validación estricta: El servidor web debe validar y sanear cualquier entrada de usuario, incluidos los encabezados HTTP, antes de incluirlos en las respuestas.

  • Usar etiquetas de caché privadas: Si es posible, se pueden usar etiquetas como Cache-Control: private o Vary en los encabezados HTTP para controlar con precisión lo que se almacena en la caché y cómo.

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC