El passat 5 d'agost es va publicar a la llista de correu BugTraq un missatge sobre el descobriment d'un problema en la forma en que l'Internet Explorer tracta els certificats digitals utilitzats a les comunicacions SSL (Secure Socket Layer). Aquesta vulnerabilitat podria permetre la intercepció, de forma totalment indetectable per l'usuari, de les comunicacions suposadament segures.
Per tal d'entendre l'abast de la vulnerabilitat, cal començar amb una explicació superficial de com funciona l'emissió dels certificats digitals. Com es prou conegut, el protocol HTTP, que es fa servir per a la transmissió de la informació de la web (documents HTML, gràfics i un llarg etcètera), es un protocol en clar. És a dir, que tot allò que s'envia circula a traves de la xarxa (Internet) exactament igual a com és enviat i rebut.
Gràcies al fet de que el protocol fa servir transmissions en clar, és possible que un sistema situat entre l'emissor i el receptor (el servidor web i el navegador de l'usuari, respectivament) pugui capturar tot el tràfic. Això es pot fer sense que cap de les dues parts de la comunicació, l'emissor i el receptor, apreciïn cap problema o indici d'aquesta captura.
Evidentment aquesta situació no permet garantir el nivell mínim de seguretat necessari per a poder realitzar transaccions que requereixen l'enviament de dades sensibles, com poden ser targetes de crèdit, adreces, contrasenyes, números de telèfon, informació personal...
Per a permetre aquesta mena de transaccions, es fa servir un protocol alternatiu anomenat HTTPS que fa servir un sistema d'encriptació de clau pública. Per tal de garantir la identitat del servidor on ens connectem, i prevenir l'atac que hem descrit anteriorment, cada connexió amb HTTPS ha de disposar d'un certificat digital que autentiqui la identitat.
Aquest certificat ha d'estar signat per una autoritat de certificació (CA, Certificate Authority). El navegador inclou una sèrie de certificats de diverses CA, que teòricament apliquen uns criteris molt estrictes d'identificació del titular d'un certificat abans de la seva emissió. D'aquesta forma es considera que qualsevol certificat signat per una d'aquestes CA compleix amb els requeriments necessaris per a garantir la bona fi de la informació que circula per una sessió HTTPS.
L'escenari habitual per a disposar d'un certificat digital és el següent: l'administrador d'A.COM genera una sol·licitud de certificat i l'envia a la CA per que la signi. Dins de là sol·licitud del certificat es troba el nom de la màquina que s'utilitzarà en la comunicació HTTPS (per exemple, WWW.A.COM).
Abans de realitzar la signatura del certificat, la CA ha de comprovar que A.COM realment pertany a l'empresa que demana el certificat. Si totes les comprovacions són satisfactòries, es realitza la signatura del certificat i es torna a l'administrador que ha realitzar la sol·licitud.
Un certificat signat d'aquesta forma és totalment segur, ja que no hi ha cap forma de suplantar-lo: no es pot modificar ni el nom de la màquina ni la signatura que ha fet la CA.
No obstant, hi ha un possible escenari lleugerament més complicat. En ocasions, les CA que signen un certificat no estan incloses dins de les autoritats reconegudes directament pel navegador.
Quan es fa servir un certificat signat per una CA que no es reconeguda directament pel navegador passa que a l'accedir a la màquina amb el protocol HTTPS, el navegador visualitza un avís informant d'això i que, per tant, no hi ha garantia de qui ha signat el certificat ni els processos d'autenticació que s'han realitzat.
Una alternativa per que això no passi és que el certificat de la CA no directament reconeguda (CA secundaria) pel navegador hagi estat signat per una CA que si està dins de les reconegudes pel navegador (CA primària). Quan es fa això, automàticament tots els certificats emesos per aquesta CA secundaria són reconeguts pel navegador com si haguessin estat signats per la CA primària.
Ara bé, per tal de prevenir possibles certificats il·legítims, el navegador té la responsabilitat de verificar tota la cadena: que el certificat digital està signat per la CA secundària i que, a la vegada, la CA secundària ha estat signada per la CA primària. També cal verificar que tots els certificats intermedis són igualment vàlids i corresponen als dominis pels quals s'estan utilitzant.
És en aquest punt on està la vulnerabilitat descoberta. L'Internet Explorer realitza la primera comprovació així com la verificació de que la CA secundaria ha estat signada per la CA primària. El que no verifica és la integritat dels certificats per a navegar i que realment corresponguin als dominis amb els que s'estan utilitzant.
Com realitzar la suplantació
Un atacant ha obtingut un certificat que ha estat signat per una CA i fa servir aquest certificat per a emetre un nou certificat, però que correspon a un domini diferent.
L'esquema és el següent:
[ Certificat - Emès per CA / A nom de CA ]
-> [ Certificat - Emès per CA / A nom de {A.COM} ]
-> [ Certificat - Emès per {A.COM} / A nom de {B.COM} ]
Quan es fa una connexió a B.COM, l'Internet Explorer verifica que el certificat hagi estat signat per A.COM i que aquest, per la seva banda, hagi estat signat per una CA. Si aquesta CA és una de les reconegudes directament pel navegador, s'assumeix que el certificat és legítim i es fa la connexió sense mostrar cap avís a l'usuari.
L'impacte més important d'aquesta vulnerabilitat és que pot ser utilitzat en atacs d'intercepció de tràfic ("man-in-the-middle), on un atacant redirecciona el tràfic dirigit a una seu web de comerç electrònic cap al seu sistema, on hi ha un certificat emès per ell amb el nom de la seu de comerç electrònic. Això li permet capturar tot el tràfic, incloent-hi les dades confidencials com ara els números de targetes de crèdit.
Solucions
En el moment d'escriure aquest butlletí, Microsoft no ha publicat encara cap actualització de l'Internet Explorer que eviti aquest problema. Segons recullen algunes publicacions (veure les URL de l'apartat de més informació), sembla que el problema es troba al suport criptogràfic del sistema operatiu (Windows) i no pròpiament a l'Internet Explorer.
Més informació
BugTraq: IE SSL Vulnerability
http://online.securityfocus.com/.../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/.../e&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
|