jueves, 22 de noviembre de 2001

Pasaporte .NET al infierno

¿Se imagina disponer de un solo nombre de usuario y contraseña que
sirviera para entrar en todas partes? En el ordenador personal, en el
teléfono móvil, en el PDA, en las cuentas de correo de Internet, en
los sitios web de pago, en definitiva, en todas las máquinas y
servicios. Pues Microsoft ya lo ha imaginado y hasta ha bautizado a
la tecnología: Passport .NET.
En palabras de Microsoft, "Passport es un servicio en línea que hace
posible que pueda utilizar su dirección de correo electrónico y una
única contraseña para iniciar una sesión de forma segura en cualquier
servicio o sitio Web participante de Passport."

Según Microsoft, gracias a Passport se implantará en Internet el
inicio de sesión único. Es decir, el usuario con una cuenta de
Passport entrega sus credenciales una sola vez en un solo sitio y a
partir de ese momento puede autenticarse de forma transparente en
todos los demás sitios que participen en la iniciativa. La gran
ventaja de este enfoque es que los usuarios solamente se ven
obligados a recordar una única contraseña, que les permitirá
autenticarse en múltiples sitios.

Passport fue diseñado para utilizar las tecnologías web existentes en
el momento actual con el fin de no reinventar la rueda ni imponer
tecnología propietaria. En concreto, la redirección automática con
HTTP, JavaScript, cookies y SSL. No obstante, se indica que
JavaScript no resulta estrictamente necesario, aunque sí muy
recomendable.

Cuando un usuario visita un sitio web participante de Passport y
necesita autenticarse para, por ejemplo, realizar una compra o leer
su correo, el sitio web del comerciante redirige el navegador del
cliente a un servidor de autenticación de Passport. Este servidor le
presenta al usuario una página de inicio de sesión, cuyas
credenciales serán protegidas a través de un canal cifrado con SSL.
Si las credenciales suministradas por el usuario son válidas, el
servidor de Passport redirige al usuario nuevamente al sitio del
comerciante, incluyendo la información de autenticación en la cadena
de redirección. Para evitar que sea interceptada, esta información se
cifra utilizando triple DES con una clave sólo conocida por el
servidor de Passport y del comerciante. Una vez de vuelta en el
servidor del comerciante, éste le envía al navegador del usuario una
cookie cifrada con la información de autenticación.

De esta manera, en sucesivas visitas al sitio del comerciante ya no
es necesario autenticarse de nuevo, puesto que las credenciales se
leen de la cookie cifrada que el navegador envía al sitio en cada
petición.

Por otro lado, el servidor de Passport también le envía una cookie
cifrada con una misma clave maestra al navegador. Si el cliente
visita un nuevo sitio afiliado a Passport, no tiene que volver a
introducir su nombre de usuario y contraseña, ya que se leen de la
cookie cifrada que Passport le envió la primera vez. En esta segunda
ocasión y en las sucesivas, el servidor de Passport verifica las
credenciales de la cookie y si son correctas redirige de nuevo al
usuario al servidor del comerciante sin pedirle nuevamente que se
identifique.

Además de la autenticación única, Passport ofrece el servicio de
cartera en línea. La cartera de Passport permite almacenar
información sobre tarjetas de crédito y direcciones de envío y
facturación en una ubicación en línea supuestamente segura, junto con
el resto de la información del perfil. En teoría, sólo cada usuario
particular (y Microsoft) tiene acceso a la información de su cartera
de Passport. Cuando el cliente desea realizar una compra en un sitio
participante, puede tener acceso a esta información y enviarla al
vendedor instantáneamente y supuestamente con total seguridad, sin
tener que escribir de nuevo la información de pago, sin más que
pulsar un botón.

Pero no es oro todo lo que reluce. El 5 de noviembre de 2001, Marc
Slemko (http://alive.znep.com/~marcs/passport/) publicó un ataque
sobre Passport que obligó a Microsoft a cerrarlo durante horas para
mitigar (aunque no solucionar) el problema descubierto y explotado
por Slemko. El ataque constaba de cuatro pasos.

Primero, la víctima inicia una sesión con Passport para entrar en su
cuenta de Hotmail, la aplicación insignia de Microsoft para ilustrar
las bondades de su tecnología de inicio de sesión único (Single
Sign-In). La víctima además ha introducido sus datos confidenciales
en su monedero de Passport. Antes de que transcurran 15 minutos desde
que inició su sesión en Hotmail, lee un mensaje de correo electrónico
que le ha sido enviado por el atacante y que esconde un IFRAME
oculto, aprovechando un fallo en la validación de entrada de Hotmail.

Como consecuencia de la lectura de este mensaje, el usuario cargará
en su navegador sin saberlo una página procedente del web del
atacante. Esta página contiene dos frames. El primero permite robar
la cookie de Passport con la contraseña cifrada del usuario. El
segundo frame explota un agujero de Cross-Site Scripting
(http://www.cert.org/advisories/CA-2000-02.html) que permite ejecutar
un script creado por el atacante para robar las cookies.

Este script se ejecuta en el contexto de seguridad de la página de
Passport y como consecuencia se envían las cookies desde el frame
superior a un script en cgi en el servidor del atacante que las
almacena en un archivo.

Una vez en su poder con las cookies que identifican a la víctima ante
Passport, el atacante puede utilizarlas con un navegador para acudir
a un sitio participante de Passport y navegar hasta la página de pago
de una compra para que aparezca la información confidencial de la
víctima. La pobre víctima no se ha enterado de nada. Simplemente leyó
(sin hacer clic en ningún enlace) un correo que le fue enviado.

Si este ataque parece demasiado complicado, existen otros, publicados
por Jouko Pynnonen el 8 de noviembre de 2001
(http://www.solutions.fi/iebug/) y por Slemko
(http://alive.znep.com/~marcs/security/iecookie2/), el 15 de
noviembre de 2001, que permiten robar las cookies de otras maneras
igualmente imaginativas desde un dominio distinto de aquel para el
que han sido emitidas. Estos ataques parecen haber hecho temblar a
Microsoft, hasta el punto de que ya Passport ha dejado de funcionar.
Ahora ya no recuerda la contraseña de los usuarios y cada vez que se
salta de un sitio participante de Passport a otro, se le pide al
usuario nuevamente la contraseña.

El sueño de Microsoft se ha hecho añicos. Adiós a Passport .NET. Una
vez más, se demuestra que vender la piel del oso antes de cazarlo es,
como mínimo, una mala manera de hacer marketing. La Web es demasiado
compleja y se presentan demasiados problemas como para solucionarlos
con dos cookies y un par de líneas en JavaScript. El inicio de sesión
único, esto es, un solo nombre de usuario y una sola contraseña para
un acceso universal a máquinas y servicios, tendrá que esperar aún
más.



Gonzalo Álvarez Marañón
criptonomicon@iec.csic.es


Más información:

Microsoft Passport to Trouble
http://alive.znep.com/~marcs/passport

Criptonomicón
http://www.iec.csic.es/criptonomicon