Funcionamiento de los ETags y por qué su mal uso puede afecta la privacidad de los usuarios.

Cuando se estaba definiendo el protocolo HTTP en los noventa, todavía existía una fuerte preocupación por la gestión de los recursos computacionales. Las conexiones de banda ancha eran un sueño y a los especialistas del World Wide Web Consortium y la Internet Engineering Task Force se les ocurrió que, si un cliente accedía por segunda vez a una página web, y esta mantenía el mismo contenido, era preferible que se mostrara la información previamente almacenada en la caché del navegador web, que estar quemando baudios (parafraseando a William Gibson) por gusto en transmitir la misma información que ya estaba en el pc del cliente.

Decidieron incluir por tanto un campo en el encabezado HTTP denominado ETag (Entity Tag)(ETag/HTTP 1.1/Especificación ), el cual tiene como propósito servir como etiqueta de entidad para un recurso asociado a una URL. Si el contenido del recurso cambia, el servidor de aplicación le asigna entonces una nueva ETag lo que le permite al cliente y al servidor determinar si es necesario reenviar el recurso o no al cliente. Un ETag solo tiene sentido respecto a una URL determinada, por tanto, pueden existir recursos diferentes con ETag similares, el mecanismo normal de los ETag sigue los siguientes pasos:

Cliente (User-Agent) Servidor HTTP
1.Petición I del recurso R
2.Recupera el valor V del ETag asignado para la versión actual del recurso R y lo envía al cliente
3.Petición II del recurso R, incluye el campo de encabezado HTTP If-None-Match con valor V del ETag de R.
4.Compara el valor del ETag recibido con el ETag actual del recurso R. Si cambió, envía la nueva versión al cliente de R, si se mantiene igual, retorna un código de respuesta 304 para indicar que no hay cambios.

A continuación, les muestro algunas capturas de pantallas de este proceso, utilizando OWASP ZAP para la intercepción por proxy:

1

Paso 1. Se solicita el recurso effects.js. Elaboración propia.

2

Paso 2. El servidor responde enviando el recurso effects.js y el valor de ETag asignado a este recurso. Elaboración propia.

3

Paso 3. Se vuelve a solicitar el recurso effects.js, en este caso ya el cliente tiene el ETag para este recurso, por tanto se lo envía al servidor en un campo If-None-Match para que este sepa que versión del recurso effects.js recibió el cliente previamente. Elaboración propia.

4

Paso 4. El servidor compara el ETag recibido del cliente con respecto al ETag asignado actualmente al recuso effects.js, como son iguales devuelve un código 304 para indicar que el recursos no ha sufrido cambios desde la última petición realizada por el cliente y además reenvía el ETag. Elaboración propia.

Hasta aquí hemos podido apreciar un mecanismo muy simple que aparentemente no tiene que ver nada con la privacidad de los usuarios, sin embargo, como ocurre con la mayoría de las cosas, si se usan mal, puede traer consecuencias no deseadas y esto ha sucedido con algunas aplicaciones web, sobre todo de comercio electrónico (aunque no son las únicas) que decidieron aprovechar el mecanismo de los ETag a la inversa, es decir, el lugar de servir como una etiqueta de entidad para un recursos brindado por la aplicación web, lo aprovecharon para utilizarlo como una etiqueta de rastreo de clientes. De este modo, aunque el cliente desactive la opción de guardar cookies en el navegador, los ETag permanecen en la caché de estos y, por tanto, permiten saltar las opciones de privacidad del cliente.

Estos comportamientos de algunas aplicaciones web fueron estudiadas y descritas en un artículo científico titulado Flash cookies and privacy II: now with HTML5 and ETag respawning y las empresas denunciadas tuvieron que afrontar procesos legales. Uno de los investigadores de estas violaciones de privacidad fue el investigador en privacidad y seguridad Ashkan Soltani, el cual se desempeña actualemente como jefe de tecnología de la Comisión Federal de Comercio de los EE.UU.

Espero que te haya sido interesante este post, en mi opinión, cualquier especialista que se dedique a realizar pruebas de seguridad a aplicaciones web, debe conocer, en primera instancia cuales son las características del protocolo HTTP y por supuesto, para que se usan cada uno de los campos de encabezados HTTP.

Hasta un próximo post!!!

Guardar

Anuncios

3 comentarios en “Funcionamiento de los ETags y por qué su mal uso puede afecta la privacidad de los usuarios.

  1. Pingback: ¿Qué es el Referer? | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s