Descubierto problema en el tratamiento de certificados digitales en IE

 

Xavier Caballé xavi@hispasec.com
www.hispasec.com
(16/08/2002)

El pasado 5 de agosto se publicó en la lista de correo BugTraq un mensaje acerca el descubrimiento de un problema en la forma en que Internet Explorer trata los certificados digitales utilizados en las comunicaciones SSL (Secure Socket Layer). Esta vulnerabilidad podría permitir la interceptación, de forma totalmente indetectable para el usuario, de las comunicaciones supuestamente seguras.

Para entender el alcance de la vulnerabilidad, en primer lugar es necesario explicar superficialmente como funciona la emisión de los certificados digitales. Como es de sobra conocido, el protocolo HTTP utilizado para la transmisión de la información contenida en las páginas web (documentos HTML, gráficos y un largo etcétera), es un protocolo en claro. Es decir, todo aquello que se envía circula a través de Internet exactamente igual a como es enviado y recibido.

Gracias al hecho que el protocolo se transmite en claro, es posible que un sistema situado entre el emisor y el receptor (el servidor web y el navegador del usuario, respectivamente) pueda capturar todo el tráfico. Esto puede hacerse sin que ninguna de las dos partes de la comunicación, el emisor y el receptor, aprecien ningún problema o indicio de esta captura.

Evidentemente esta situación impide garantizar el nivel mínimo de seguridad para poder realizar transacciones que requieran el envío de datos sensibles, como tarjetas de crédito, direcciones, contraseñas, números de teléfono, información personal...

Para permitir este tipo de transacciones, se utiliza un protocolo alternativo denominado HTTPS que utiliza un sistema de encriptación de clave pública. En vistas a garantizar la identidad del servidor al que nos conectamos, y prevenir el tipo de ataque descrito anteriormente, cada servidor al que conectamos mediante HTTPS debe disponer de un certificado digital que autentique su identidad.

Este certificado debe estar firmado por una autoridad de certificación (CA, Certificate Authority). El navegador viene con una serie de certificados de diversas CA, que teóricamente aplican unos criterios muy estrictos de identificación del titular de un certificado antes de su emisión. De esta forma, se considera que cualquier certificado firmado por una CA cumple con los requisitos necesarios para garantizar el buen fin de la información que circule en la sesión HTTPS.

El escenario habitual para disponer de un certificado digital es el siguiente: el administrador de A.COM genera una solicitud de certificado y la envía a la CA para que la firme. Dentro de la solicitud de certificado se encuentra el nombre de máquina que deberá utilizarse en la comunicación HTTPS (por ejemplo, WWW.A.COM ).

Antes de realizar la firma del certificado, la CA debe comprobar que A.COM realmente pertenece a la empresa que solicita el certificado. Si todas las comprobaciones son satisfactorias, firma el certificado y lo devuelve al administrador que ha realizado la solicitud.

Un certificado firmado de esta forma es absolutamente seguro, ya que no hay forma de suplantarlo: no se puede modificar el nombre de máquina ni la firma que ha realizado la CA.

No obstante, existe un posible escenario ligeramente más complicado. En ocasiones las CA que firman un certificado no están incluidas dentro de los certificados incluidos dentro del navegador.

Cuando se utiliza un certificado firmado por una CA cuyo certificado no forma parte de los certificados reconocidos por el navegador sucede que, al acceder a la máquina, el navegador muestra un aviso informando de este hecho y que, por tanto, no existe garantía de quien ha firmado el certificado ni de los procesos de autenticación que se han realizado.

Una alternativa para que esto no suceda es que el certificado de la CA no directamente reconocida (CA secundaria) por el navegador haya sido firmado por una CA que si se encuentra dentro de las reconocidas por el navegador (CA primaria). Cuando se hace esto, automáticamente todos los certificados emitidos por esta CA secundaria son reconocidos por el navegador como firmados por la CA primaria.

No obstante, para prevenir posibles certificados ilegítimos, el navegador tiene la responsabilidad de verificar toda la cadena: que el certificado digital está firmado por la CA secundaria y que, a su vez, la CA secundaria ha sido firmada por la CA primaria. También debe verificar que todos los certificados intermedios son igualmente válidos y corresponden a los dominios para los que se están utilizando.

Aquí es donde radica la vulnerabilidad descubierta. Internet Explorer realiza la primera comprobación así como la comprobación de que la CA secundaria ha sido firmada por la CA primaria. No obstante, no verifica la integridad de los certificados para verificar que, realmente, corresponden a los dominios en los que se están utilizando.

Como realizar la suplantación

Un atacante ha obtenido un certificado que haya sido firmado por una CA y utiliza este certificado para emitir un nuevo certificado, pero que corresponde a un dominio diferente.

El esquema sería el siguiente:

[ Certificado - Emitido por CA / A nombre de CA ] -> [ Certificado - Emitido por CA / A nombre de {A.COM} ] -> [ Certificado - Emitido por {A.COM} / A nombre de {B.COM} ]

Cuando se realiza una conexión a B.COM, Internet Explorer verifica que el certificado ha sido firmado por A.COM y que éste, a su vez, ha sido firmado por una CA. Si esta CA se encuentra dentro de las reconocidas por el navegador, se asume que el certificado es legitimo y se realiza la conexión sin mostrar ningún aviso al usuario.

El impacto más importante de esta vulnerabilidad es que puede ser utilizados en ataques de interceptación de tráfico ("man-in-the-middle") en el que un atacante redirecciona el tráfico dirigido a una sede web de comercio electrónico hacia su sistema, donde hay un certificado emitido por él a nombre de la sede de comercio electrónico. Esto le permite obtener datos confidenciales, como son números de tarjetas de crédito.

Soluciones

En el momento de redactar este boletín, Microsoft no ha publicado todavía ninguna actualización de Internet Explorer para evitar este problema. Según recogen algunas publicaciones (ver las URL indicadas más abajo), parece que el problema radica en el soporte criptográfico del sistema operativo (Windows) y no propiamente en Internet Explorer.

Opina sobre esta noticia: http://www.hispasec.com/unaaldiacom.asp?id=1391

Más información

Bugtraq: IE SSL Vulnerability
http://online.securityfocus.com/archive/1/286895/2002-08-08/2002-08-14/1

Practical demostration of the MSIE6 certificate path vulnerability
http://arch.ipsec.pl/inteligo.en.html

Microsoft not scared by security flaw
http://www.pcadvisor.co.uk/index.cfm?go=news.view&news=2599

Microsoft investigating fears of IE Browser leaking secure data
http://www.securitynewsportal.com/cgi-bin/cgi-script/csNews/
csNews.cgi?database=JanQ%2edb&command=viewone&id=77&op=t

SSL Security Flaw is in Windows, not in Explorer says MS
http://www.pcadvisor.co.uk/index.cfm?go=news.view&news=2604