martes, 30 de diciembre de 2008

Creando certificados falsos que parecen válidos


Un certificado digital incluye, entre otras cosas, una firma digital de una Autoridad Certificadora y su respectivo hash (huella digital) para efectos de comprobación. Yo no puedo cambiar simplemente esta firma porque el hash no concordaría. ¿O sí puedo? Investigadores de seguridad afirman que esto desafortunadamente es posible y resultaría en poder crear certificados digitales falsos que parecerían válidos para los navegadores, favoreciendo a los ataques phishing que ahora podrían presentarse con certificados digitales válidos.

¿Es una debilidad en SSL o en los navegadores? No, es un error de algunas Autoridades Certificadoras que han seguido usando el algoritmo de hash MD5 para validar sus certificados digitales a pesar de saber que el MD5 ya no es seguro. Este algoritmo MD5 tiene ya desde hace tiempo "colisiones", lo cual significa que es posible crear un contenido con dos hashes MD5 válidos, lo cual debería de ser "imposible". A pesar de esto, algunas importantes Autoridades no han cambiado a algoritmos más robustos como el algoritmo hash SHA-1 o SHA-2.

Esta necedad de seguir usando MD5 causa que un atacante pueda crear un certificado digital falso que aparenta ser de una Autoridad y con éste firmar otros certificados para cualquier sitio y que parezca válido a los "ojos" del navegador. En pocas palabras, el atacante crea un certificado digital falso de una Autoridad y sabemos que las Autoridades firman a su vez otros certificados. Esto crearía una conexión segura SSL hacia un sitio falso sin ninguna advertencia de seguridad ya que el certificado aparentaría ser válido usando obviamente https. Es la combinación perfecta para hacer sitios phishing que ahora parecerán reales. Por ejemplo, creo un sitio phishing https://login.server.yahoo.com con un certificado válido del sitio real y auténtico que en este caso es https://login.yahoo.com. Como puedo aparentar que la Autoridad firma el sitio que yo desee, entonces puedo crear certificados válidos para cualquier sitio de mi elección (esto sólo lo debería de poder hacer la Autoridad).

¿Hay buenas noticias en todo esto? No sé si sean buenas, pero al menos los investigadores han escondido partes de su investigación con la intención de que no "cualquiera" haga este ataque. ¿Cuánto tiempo permanecerán los detalles sin ser conocidos o descubiertos?
¿Qué se puede hacer para protegerse? No mucho (Microsoft ofrece algunos workarounds y afirmaciones tranquilizadoras, pero no puedo por el momento confiar ciegamente en ellos). Esta vez no hay parche. Al parecer nos podemos ver afectados si tenemos certificados digitales emitidos por Autoridades que hacen uso del algoritmo MD5 para efectos de validación.
¿Nos debemos de preocupar? La respuesta es difícil. El ataque requiere un nivel de dificultad importante y los detalles de cómo hacerlo no están publicados aún. Aún así, ya pasamos del terreno teórico al práctico. 

Mi pronóstico es que los ataques que seguiremos viendo son donde se crean certificados digitales totalmente falsos con la esperanza de que el usuario lo acepte a pesar de la advertencia de seguridad del navegador. ¿Para qué darse a la tarea de hacer algo tan complicado si seguro tendré mucho más éxito haciendo ataques más primitivos y sencillos? Por otro lado, aún falta ver que tan práctico es este ataque en el "Internet real" y sus implicaciones. En fin, este es otro bug más al cual hay que seguirle la pista.

Sitios para aclarar dudas:
http://www.win.tue.nl/hashclash/rogue-ca/#sec8
http://blog.mozilla.com/security/2008/12/30/md5-weaknesses-could-lead-to-certificate-forgery/
http://blogs.technet.com/msrc/archive/2008/12/30/information-on-microsoft-security-advisory-961509.aspx
http://www.cryptography.com/cnews/hash.html


2 comentarios:

Anónimo dijo...

Nice fill someone in on and this fill someone in on helped me alot in my college assignement. Say thank you you on your information.

Lsca Alfonso Mtz dijo...

Excelente tuto !Felicidades! bien explicado para personas que no tienen mucho conocimiento del tema.