5 ago 2013

BREACH: nuevo ataque a páginas HTTPS

El esquema de cifrado HTTPS es susceptible a nuevo ataque que permite obtener ciertas credenciales de seguridad en tan sólo 30 segundos o pocos minutos.

La técnica BREACH (Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext), demostrada el jueves en la conferencia Black Hat [PDF con Slide, paper] por Angelo Prado,
Neal Harris y Yoel Gluck, permite decodificar páginas protegidas por SSL y TLS. El ataque puede extraer partes concretas de datos, tales como: números de seguro social, direcciones de email, algunos tipos de tokens de seguridad y enlaces para restablecer la contraseña. Funciona en todas las versiones de TLS y SSL independientemente del algoritmo de cifrado que se utilice.

Se requiere que el atacante tenga la capacidad de monitorear pasivamente el tráfico que viaja entre el usuario y el sitio web y que la víctima visite un enlace malicioso. Esto se puede hacer mediante la inyección de una etiqueta iframe en un sitio web que la víctima visite normalmente o engañando a la víctima para que visualice un mensaje de correo electrónico con imágenes ocultas, que se descargan automáticamente para generar peticiones HTTP. El enlace malicioso hace que el sistema de la víctima haga varias peticiones al servidor HTTPS objetivo. Estas solicitudes se utilizan luego para hacer "conjeturas de sondeo".

"No desciframos el canal completo, sólo extraemos el secreto que nos importa", dijo Yoel Gluck, uno de los tres investigadores.

Como su nombre lo sugiere, BREACH trabaja sobre la compresión de los datos. Basado en el algoritmo Deflate de Huffman, la compresión HTTP funciona mediante la eliminación de repeticiones en cadenas de texto. En lugar de utilizar el fragmento de datos "ABCD" cuatro veces, por ejemplo, la compresión almacenará la cadena "abcd" sólo una vez y luego "punteros" que indican donde aparecen las restantes tres instancias del patrón. Al reducir el número de bytes, la compresión puede acelerar significativamente el tiempo requerido para enviar un mensaje. En general, mientras más repeticiones tenga una cadena en un flujo de datos, más posibilidades habrá de comprimirla para reducir el tamaño total.

Usando lo que se conoce Oracle technique, los atacantes pueden usar la compresión para obtener pistas sobre el contenido de un mensaje cifrado. Esto se debe a que muchas formas de cifrado, incluso las utilzazas en HTTPS, no hacen nada para evitar que se conozca el tamaño de la carga útil cifrada. Estos ataques son particularmente eficaces para descubrir pequeños trozos de texto en el flujo de datos cifrados.

¿Cómo funciona BREACH

BREACH arranca tratando de adivinar caracteres específicos en una respuesta cifrada. El ataque compara la longitud en bytes de una "cadena conjetura" contra la respuesta original. Cuando la conjetura contiene la combinación parecida de caracteres que se encuentran en la respuesta original, el resultado es más pequeño que los producidos por suposiciones incorrectas. Debido a la compresión deflate almacena las cadenas repetitivas sin aumentar significativamente el tamaño de la carga útil, los aciertos resultarán en mensajes cifrados más pequeños que los que se producen por suposiciones incorrectas.

Un atacante podría utilizar BREACH para recuperar una dirección de correo electrónico cifrado, al adivinar el signo "@" y el dominio de Internet, inmediatamente a la derecha. Si conjeturas: como "@segu-info.com.ar" y "@example.com" resultan en mensajes cifrados más grandes que respuestas sin esos textos, el atacante sabe que esas direcciones no se enviaban incluidas en el cuerpo de la respuesta. Por el contrario, si la compresión de "@example.com" en contra de los mensajes cifrados originales, no aumenta la longitud, el atacante tendrá un alto grado de certeza que esa cadena es parte del texto a extraer. A partir de ahí, los atacantes pueden adivinar la cadena a la izquierda del carácter "@".

Suponiendo que la dirección de cifrado fuera [email protected], conjeturas como [email protected], [email protected], [email protected] y [email protected] harían que los mensajes cifrados sean mayores. Cuando el atacante adivine [email protected], daría lugar a un aumento poco apreciable, ya que esa cadena se incluye en el mensaje original. El atacante luego puede repetir el mismo proceso para recuperar el resto de la dirección de correo electrónico, carácter por carácter, moviéndose de derecha a izquierda.

Esta técnica se puede utilizar para extraer otros tipos de texto cifrado incluidos en las respuestas web. Si el sitio objetivo envía variables especiales para prevenir ataques de CSRF, la credencial contendrá casi siempre el mismo tamaño, como "request_token=" o parecido, seguido por una larga cadena de texto como "bb63e4ba67e24d6b81ed425c5a95b7a2".

Un atacante comenzaría añadiendo el texto "request_token=a". Dado que el tamaño de la carga útil cifrada crece, sería obvio suponer que esa cadena es incorrecta. Por el contrario, al añadir "request_token=b", y al no crecer la cadena cifrada, se tiene una idea de que el primer carácter después del signo igual es "b". Para completar el ataque, sólo es necesario hacer unas "pocas miles" de peticiones dirigidas al servicios web y, en cuestión de minutos, se pueden obtener secretos más avanzados.

Si bien el ataque comienza con un engaño a la víctima, no hay una manera fácil de mitigar BREACH y el daño que puede causar. A diferencia de la compresión TLS y SPDY (utilizados en CRIME), la compresión HTTP esencial y no puede ser descartada sin causar muchos problemas. Los autores han dicho que la semana que viene publicarán una herramienta para entender el ataque y probar las aplicaciones (PoC).

Cristian de la Redacción de Segu-Info

Suscríbete a nuestro Boletín

1 comentario:

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!