24 feb 2009

El SSL no está roto... ¿o sí?

Moxie Marlinspike protagonizó la semana pasada una conferencia en la Black Hat en la que demostraba cómo eludir la autenticación y el cifrado SSL de las páginas supuestamente seguras. El investigador se ha centrado en una inteligente combinación de técnicas que permiten confundir a los usuarios (incluso a los avanzados) sobre si están o no en la página correcta. Ninguna de las técnicas usadas es realmente nueva, pero todas en conjunto forman una excelente herramienta llamada sslstrip.

Sslstrip combina una buena tanda de técnicas con el único objetivo de que el usuario realmente no sepa que está en una web falsa o que su tráfico no está siendo realmente cifrado. Aclarar que el problema no está en el SSL, sigue siendo lo mejor de lo que disponemos para realizar conexiones seguras. El fallo está un poco en los navegadores, un mucho en los usuarios, algo en los certificados, bastante en las redes... pero no en la tecnología en sí.

Como siempre, teniendo en cuenta el éxito del que gozan técnicas mucho más sencillas, sslstrip todavía no será usado por atacantes de forma masiva, sino para ataques muy específicos contra usuarios avanzados. Y estos son quizás los que deban estar más atentos.

Para ser víctima del sslstrip, la primera condición ineludible es que la conexión debe estar siendo interceptada. Bien a través de un envenenamiento de ARP en red interna, bien a través de puntos de acceso wireless falsos... el caso es que el atacante debe actuar como proxy en la comunicación, teniendo acceso al tráfico. Esta es una premisa importante, pero no es extraña. El investigador usó con éxito la red de anonimato Tor para sus pruebas. Sslstrip hace todo en tiempo real, básicamente sustituyendo el tráfico cifrado (https) por uno no cifrado (http), de forma que al usuario se le presenta una página idéntica a la que necesita, pero sin cifrar y probablemente en otro servidor que pertenece al atacante. Acude al servidor real para tomar la información necesaria, pero en vez de devolverla cifrada al usuario, lo hace sin cifrar. Esta es su funcionalidad básica.

En la mayoría de las ocasiones esto sería suficiente para engañar a muchos usuarios. Pero obviamente esto llamaría la atención de otros tantos, que echarían en falta las advertencias que normalmente el navegador realiza cuando se está sobre una página cifrada (el candado, la barra dorada, el https, etc). Marlinspike, en su charla en la Black Hat, dio un buen montón de ideas y métodos para hacer que esto pase desapercibido incluso para los usuarios más avispados.

Una de ellas es la sustitución de un "favicon" de la página por un simple candado. El candado real no aparecería pero en los últimos tiempos se ha abusado tanto de esta imagen que su simple presencia (aunque no sea en el lugar correcto) da sensación de seguridad a los usuarios.

Otra de las técnicas es muy vieja ya. Se basa en el uso de caracteres especiales para hacer pensar al usuario que se encuentra en el dominio correcto. El atacante no tiene más que comprar un certificado válido para ese dominio, y de esta forma se evitarían todas las advertencias del navegador. Solo quien comprobase realmente la cadena de certificación del certificado estaría a salvo.

También presenta otras técnicas para eludir problemas como las cookies de seguridad y el manejo de sesiones autenticadas. Su herramienta tiene soluciones para evitar que el usuario más experimentado note que está siendo víctima de un robo de sus datos.

Otro de los puntos interesantes de la charla que ofreció Marlinspike, además de la presentación de la herramienta (que ha hecho pública), son las reflexiones sobre la seguridad SSL y cómo está implementada en los navegadores, de lo que hablaremos en la siguiente entrega.

Segundo revés del año al SSL. O más específicamente, a la confianza que tenemos los internautas en el SSL y las páginas seguras. La primera fue con los hashes de los certificados calculados con MD5, técnica dada a conocer a finales del año pasado. De nuevo se usaban diferentes métodos ya conocidos contra el SSL. Lo que Marlinspike ha publicado es una herramienta destinada a engañar al usuario que lo hace todo mucho más sencillo.

Marlinspike ya programó sslsniff en 2002, muy usado todavía, que realiza ataques man-in-the-middle sobre SSL. En su presentación en la Black Hat realiza una interesante reflexión sobre qué ha ocurrido con el cifrado SSL en los últimos años.

SSL no está roto por la publicación de sslstrip. Está "roto" desde hace tiempo, desde que el usuario medio al que intenta proteger no entiende en qué consiste esta tecnología, y desde que los navegadores han realizado una dudosa implementación del protocolo y en especial, de la interacción con el usuario.

Durante años, navegadores como Firefox 2.x e Internet Explorer 6.x, se han limitado a advertir al usuario con lo que Marlinspike llama "positive feedback", esto es, intentar demostrar que se está en el sitio correcto por medio de candados, barras doradas, etc. Esto no impresiona al usuario, que acaba obviando estos símbolos positivos. Pero lo peor es que es fácilmente imitable por los atacantes. Los diseñadores también han malacostumbrado a los internautas. En su empeño de parecer seguras, las páginas incluyen candados incluso en su propio código HTML, sellos de autenticidad y garantías... inútil a unos ojos que lo han visto mil veces y mucho más inútil cuando un atacante solo tiene que calcar el contenido de una web para engañar a un usuario.

Marlinspike concluye que el "negative feedback" para el usuario es mucho más efectivo. Esto es, advertirle con grandes pantallas (nada de ventanas emergentes, sino páginas integradas en el navegador) de que no se está en el sitio correcto. El usuario reacciona mejor ante las alertas negativas y catastróficas que ante la mera información o advertencia. Al no entenderlas por completo, terminarán por aceptar la opción que se le muestre por defecto.

En este sentido, tanto la rama 3 de Firefox como Internet Explorer 7 han mejorado sustancialmente. Acceder a una página con una cadena de validación de certificados inválida o con el certificado obsoleto, ahora requiere muchos más clicks por parte del usuario y es más escandalosamente advertido por los navegadores.

Sin embargo a pesar de todo eso sslstrip está preparado para hacer todo lo posible por convencer al usuario de que se encuentra en el sitio correcto. Y lo consigue. Ayuda el diseño de muchas páginas, que permiten que el usuario introduzca sus datos en un formulario no cifrado que termina en uno cifrado.

SSL por tanto, sigue siendo de las pocas cosas en las que podemos confiar en la red. El fallo está en todo lo que lo rodea: usuarios, diseñadores, protocolos, implementaciones, autoridades certificadoras... aprovechando pequeños problemas en todos y cada uno de estos actores, se pueden realizar ataques muy sofisticados. Si las técnicas quedan reunidas en una herramienta que permite llevarlas a cabo todas a la vez y sin demasiado esfuerzo, el problema es grave.

SSL goza de buena salud, pero si se comienza a cuestionar su validez, si siguen apareciendo técnicas que ponen en duda incluso a usuarios expertos, ya no importará si una página está cifrada o no. Para la mayoría de los usuarios, no significará nada porque realmente no tendrán forma de comprobar de forma sencilla que estén en el sitio correcto: "si pueden engañar a un usuario experto, también podrán conmigo de forma mucho más sencilla", y se rendirán ante una tecnología que ni conocen ni tienen por qué entender. Nadie quiere tener que comprobar rutas de certificación, fechas de certificados, etc, allá donde introduzca sus contraseñas.

Como solución, lo que Marlinspike propone es que todo el tráfico sea cifrado. No se debe pretender confiar ciegamente en HTTPs cuando está asentado sobre HTTP, un protocolo no seguro.

Sergio de los Santos
[email protected]

Fuente: Hispasec I y II

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!