El estándar propuesto para cookies de DNS especifica que la cookie del servidor se computará como sigue:
La cookie del servidor DEBE consistir o incluir una versión de 64 bits o más función pseudoaleatoria de la dirección IP de origen de la solicitud, la solicitud Cookie del cliente y una cantidad secreta que solo conoce el servidor.
El razonamiento proporcionado para la inclusión de la cookie del cliente es el siguiente:
Sin embargo, los dispositivos NAT a veces también asignan puertos. Esto puede causar múltiples solicitudes de DNS y respuestas de múltiples hosts internos a asignarse a un número menor de direcciones IP externas, como una dirección. Por lo tanto, podría haber muchos clientes detrás de una caja NAT que parece provenir de la misma dirección IP de origen a un servidor externo esa caja NAT. Si uno de estos fue un atacante (piense en Zombie o Botnet), que el atacante detrás de NAT podría obtener la cookie del servidor para algún servidor para la dirección IP saliente simplemente haciendo algo al azar solicitud a ese servidor. Entonces podría incluir esa cookie de servidor en COOKIE OPT de solicitudes al servidor con la IP local falsificada Dirección de algún otro host y / o cliente detrás del cuadro NAT. (La posesión de esta cookie de servidor por parte de un atacante no ayudará en la falsificación Respuestas para causar envenenamiento de caché ya que tales respuestas están protegidas por la cookie de cliente requerida.)
Para corregir este defecto potencial, es necesario distinguir Diferentes clientes detrás de una caja NAT desde el punto de vista del servidor. Es por esta razón que la cookie del servidor se especifica como una función pseudoaleatoria de la dirección IP de origen de la solicitud y la cookie del cliente. De esta inclusión de la Cookie de Cliente en el cálculo de la cookie del servidor, se deduce que un cliente estable Cookie, para cualquier servidor en particular, es necesario. Si, por ejemplo, el El ID de la solicitud se incluyó en el cálculo de la cookie del cliente, se Normalmente cambiaría con cada solicitud a un servidor en particular. Esta significaría que cada solicitud tendría que enviarse dos veces: primero a Conozca la nueva cookie de servidor basada en esta nueva cookie de cliente basada en la nueva identificación y luego otra vez usando esta nueva cookie de cliente para realmente Obtén una respuesta. Por lo tanto, la entrada para el cálculo de la cookie del cliente debe estar limitado a la dirección IP del servidor y una o más cosas que cambia lentamente, como el secreto del cliente.
¿Contra qué ataque se supone que debe protegerse este ataque? ¿Y cómo consigue dicha protección?
Los tres ataques mencionados en el documento son:
- Ataques de amplificación de DNS
- Denegación de servicio del servidor DNS
- Envenenamiento de caché y respuesta a ataques de falsificación
Pero, por lo que puedo decir, la inclusión de la cookie del cliente en el cálculo de la cookie del servidor no puede abordar ninguno de ellos.
Los ataques de amplificación de DNS en los que el atacante y la víctima están detrás del mismo NAT aún serán posibles. Cuando el atacante ha recibido la cookie del servidor, simplemente puede comenzar a falsificar la IP de la víctima mientras usa la cookie del cliente y la cookie del servidor intercambiadas con el servidor previamente. Debido a que el cliente y la víctima están detrás del mismo NAT, el cambio en la dirección IP del cliente será invisible para el servidor. Por lo tanto, la cookie del cliente aún se asigna a la misma cookie del servidor, y el ataque tendrá éxito.
En el caso de DNS Server DoS, el objetivo de las cookies es simplemente garantizar que el servidor sabrá la dirección IP correcta de quien esté realizando el ataque. Cuando el atacante está detrás de un NAT, el servidor verá la dirección IP de ese NAT, independientemente de la falsificación que realice el atacante detrás del NAT. Y las cookies no cambian eso.
En el caso de respuestas falsificadas, la cookie de cliente de la víctima proporciona la protección que permanece desconocida para el atacante. Entonces, independientemente de cómo se calcule la cookie del servidor, este ataque fallará. Además, las respuestas falsificadas no son, por definición, generadas por el servidor, por lo que no habrá ninguna validación de la cookie del servidor.
Entonces, si la inclusión de la cookie del cliente en el cálculo de la cookie del servidor no se realiza por una de estas tres razones, ¿cuál es el propósito de la misma?