martes, 24 de febrero de 2009

El SSL no está roto... ¿o sí? (y II)

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
ssantos@hispasec.com


Más información:

sslstrip
http://www.thoughtcrime.org/software/sslstrip/index.html

No hay comentarios:

Publicar un comentario en la entrada