CRIME: el nuevo ataque a SSL/TLS sucesor de BEAST

Juliano Rizzo y Thai Duong ya tuvieron una enorme repercusi贸n cuando anunciaron en 2010 el ataque Padding Oracle (CBC) que afect贸 ampliamente ASP.NET y en 2011 el ataque a TLS 1.0/SSL 3.0 mediante BEAST que era capaz de descifrar las peticiones cliente 'al vuelo' y secuestrar sesiones hacia sitios tan sensibles como los de la banca on-line.

Ahora en la Ekoparty 2012, han presentado otra nueva t茅cnica bautizada como CRIME para comprometer la integridad de las sesiones HTTP protegidas por SSL. Atentos que la explicaci贸n es un poco densa...

La t茅cnica

SSL/TLS opcionalmente soporta compresi贸n de datos. En el mensaje ClientHello, el cliente establece la lista de algoritmos de compresi贸n que conoce, y el servidor responde, en el ServerHello, con el algoritmo de compresi贸n que se utilizar谩.

Los algoritmos de compresi贸n son especificados por identificadores de un byte y TLS 1.2 (RFC 5246) define 煤nicamente el m茅todo de compresi贸n nula (es decir, sin compresi贸n). Tambi茅n hay otros documentos que especifican m茅todos de compresi贸n. En particular, RFC 3749 define el m茅todo de compresi贸n 1, basado en DEFLATE, el derivado de LZ77 que es el n煤cleo del formato gzip y tambi茅n de los archivos Zip modernos. Cuando se utiliza la compresi贸n, se aplica en todos los datos transferidos, como un stream largo. En particular, cuando se utiliza con HTTPS, la compresi贸n se aplica en todas las sucesivas peticiones HTTP en el stream, la cabecera incluida. DEFLATE funciona mediante la localizaci贸n de subsecuencias repetidas de bytes.

Supongamos que el atacante es un c贸digo javascript que puede enviar peticiones arbitrarias a un sitio destino (por ejemplo, un banco) y se ejecuta en la m谩quina atacada; el navegador enviar谩 dichas solicitudes con la cookie del usuario del banco - el valor de la cookie que el atacante tiene despu茅s. Adem谩s, vamos a suponer que el atacante puede analizar el tr谩fico entre el ordenador del usuario y el banco (para ello, el atacante debe tener acceso a la misma LAN o al punto de acceso WiFi de la v铆ctima, o se ha apropiado de un router de entre medias, posiblemente cerca del servidor del banco).

Para este ejemplo, supongamos que la cookie en cada solicitud HTTP es la siguiente:

> Cookie: secret=7xc89f+94/wa

El atacante conoce la parte "Cookie: secret =" y desea obtener el valor secret. Entonces, programa su c贸digo Javascript para emitir una petici贸n que contenga en su cuerpo la secuencia "Cookie: secret = 0". La solicitud HTTP se ver谩 as铆:

POST / HTTP/1.1 Host: thebankserver.com (…) Cookie: secret=7xc89f+94/wa (…)

Cookie: secret=0


Cuando DEFLATE vea que, hay repeticiones de secuencias "Cookie: secret =" y representan la segunda parte con un token muy corto (uno que dice "la secuencia anterior tiene una longitud de 15 y se encontraron n bytes anteriormente), DEFLATE tendr谩 para emitir un token adicional para el '0'.

La solicitud va al servidor. Desde el exterior, el atacante ve un blob opaco (SSL cifra los datos), pero puede ver su longitud (con una granularidad de bytes cuando la conexi贸n utiliza RC4; con cifrado de bloques que hay un poco de relleno o padding pero puede ajustar el contenido de las peticiones por lo que, en la pr谩ctica, puede conocer tambi茅n la longitud de las peticiones comprimidas).

Ahora, el atacante lo intenta de nuevo con "Cookie: secret=1" en el cuerpo de la petici贸n. Luego, "Cookie: secret=2", y as铆 sucesivamente. Todas estas peticiones se comprimen con el mismo tama帽o (o casi porque hay matices con c贸digos de Huffman que se utilizan en DEFLATE), excepto el que contiene "Cookie: secret = 7", que comprime mejor (16 bytes de subsecuencia repetida en lugar de 15), y por lo tanto ser谩 m谩s corta. El atacante ve eso. Por lo tanto, en unas pocas docenas de peticiones, el atacante habr谩 adivinado el primer byte del valor secreto.

A continuaci贸n, s贸lo tiene que repetir el proceso ("Cookie: secret = 70", "Cookie: secret = 71", y as铆 sucesivamente) y obtener, byte por byte, el secret completo.

Impacto

Por lo tanto, para que el ataque CRIME tenga 茅xito, se requieren algunos aspectos:

- Que la compresi贸n SSL/TLS se utilice en ambos extremos
- Que el atacante pueda ejecutar un agente Javascript en la v铆ctima
- Un sniffer que tenga acceso a la sesi贸n cifrada cliente-servidor

Otros factores facilitar铆an adem谩s el ataque:

- El uso de RC4 en lugar de cifrado de bloques como CBC (ir贸nicamente se recomend贸 el uso de RC4 como una soluci贸n temporal contra BEAST...)
- La proximidad del sniffer al punto final del agente de la v铆ctima podr铆a proporcionar informaci贸n m谩s r谩pidamente, acortando el tiempo requerido para completar el ataque.

Contramedidas

Bas谩ndose en la informaci贸n actual, parece que la principal contramedida ser铆a desactivar la compresi贸n SSL/TLS, una verdadera l谩stima en escenarios de conexiones con poco ancho de banda, especialmente en aquellos sitios que contienen muchas im谩genes peque帽as o con Ajax pesados que requieren muchas peticiones peque帽as.

Tambi茅n y debido a que el ataque se centra en descifrar las credenciales de sesi贸n, las mejores pr谩cticas est谩ndar para la protecci贸n de estas tokens tambi茅n podr铆an limitar el impacto:

- Invalidar las credenciales de sesi贸n al salir/idle para limitar la duraci贸n de la exposici贸n.
- Invalidar y volver a emitir tokens de sesi贸n peri贸dicamente para limitar la duraci贸n de la exposici贸n.
- Tokens de sesi贸n asociados a una IP de origen espec铆fica para evitar su reutilizaci贸n en otros lugares.
- Regenerar los tokens de sesi贸n enlazados a un origen cuando esa fuente env铆a una solicitud con un token no v谩lido. Esto limita la capacidad de un atacante de realizar fuerza bruta o adivinar tokens.
- Monitorizar los logs del servidor para identificar a un ataque en curso: al intentar enumerar los tokens de sesi贸n, el agente de la v铆ctima generar谩 un gran n煤mero de peticiones al servidor web. Un IPS podr铆a adem谩s detener el ataque de una forma proactiva.
- Las actualizaciones de software podr铆an hacer frente a este ataque y probablemente estar谩n disponible pronto, y hay algunos indicios de que muchos fabricantes ya han actualizado sus productos de forma silenciosa.

Referencias


- Rizzo, Juliano. "The CRIME attack." http://www.ekoparty.org//2012/juliano-rizzo.php
- Duong, Thai. "The CRIME attack." http://www.ekoparty.org//2012/thai-duong.php
- New Attack Uses SSL/TLS Information Leak to Hijack HTTPS Sessions https://threatpost.com/en_us/blogs/new-attack-uses-ssltls-information-leak-hijack-https-sessions-090512
- How can you protect yourself from CRIME, BEAST’s successor? http://security.blogoverflow.com/2012/09/how-can-you-protect-yourself-from-crime-beasts-successor/

Comentarios

  1. Muy bueno, esto es rizar el rizo jajajaja, muchas gracias por la explicacion(muy buena) Vicente!!

    Con tanta colaboracion se te extra帽aba, veo que dio resultado el llamado, jajajaja.
    Buen fin de semana XD

    ResponderEliminar
  2. gracias Angel! La verdad es que ultimamente ando muy liado, pero intento siempre encontrar huecos para escribir algo. Respecto a las colaboraciones la verdad es que hemos tenido mogoll贸n gracias al llamamiento y a amigos como tu que se han hecho eco y lo ha redistribuido. Ahora a ver si alguno de los nuevos autores se mantiene y escribe posts regularmente ;-) Buen fin de semana!

    ResponderEliminar
  3. solo quiero hackear una cuenta facebook solo una

    ResponderEliminar
  4. esta en tls 1.1 con google chrome se puede?

    ResponderEliminar

Publicar un comentario