Noticias

HeartBleed: no basta con cambiar las passwords

A diferencia de los elegantes ataques criptográficos que han aparecido recientemente en Internet (BEAST, CRIME, Lucky13, etc.), HeartBleed no fue desarrollado por ningún experto criptográfico, sino que es el resultado de un error de programación bastante común en el mundo informático. Pero como podría suponerse, su efecto es más devastador que todos los otros ataques juntos.

¿Que es HeartBleed?

HeartBleed es un pequeño error (bug) en una parte de la lógica del protocolo TLS  que implementa la librería  OpenSSL. El protocolo TLS es el encargado de encriptar los datos que viajan por la Web, específicamente entre el browser del usuario y los servidores Web, y gracias a él, nuestras claves e información personal se mantienen en secreto. El bug está presente en las versiones de OpenSSL desde la 1.0.1 hasta la 1.0.1f, las cuales son versiones relativamente recientes de la librería.

El problema es bastante simple: existe una pequeña vulnerabilidad (un simple chequeo de largo de buffer) en el código que maneja los mensajes TLS de “HeartBleed”. Al abusar de este mecanismo, un atacante puede obtener un trozo relativamente grande del espacio privado de la memoria  del servidor (hasta 64KB). Éste es el mismo espacio donde OpenSSL almacena material criptográfico privado del servidor, así que un atacante potencialmente podría obtener: 1) la llave privada del servidor, 2) las llaves de sesión TLS y 3) las password de usuarios. Todas las anteriores pueden ser utilizadas por un atacante para des-encriptar el tráfico TLS y obtener la información privada de los usuarios. Sin embargo, el punto 1) es lejos el peor, dado que si un atacante logra obtener la llave privada del servidor potencialmente podrá des-encriptar las sesiones pasadas (si el server no está configurado con Perfect Forward Secrecy) o las nuevas sesiones que se establezcan en el futuro contra el servidor, y lo mejor de todo, sin dejar rastro alguno del ataque.

El problema se ve acentuado debido a que muchos servidores e infraestructura de seguridad utilizan de alguna forma la librería OpenSSL: se estima que un 66% de  los servidores del mundo la utilizan para encriptar data. Esto incluye muchos sitios Web privados y del sector  público que almacenan información privada de las personas.

heartbleed-yahoo

Ejemplo de captura de password desde Yahoo mediante HeartBleed(fuente: https://twitter.com/markloman/status/453502888447586304)

¿Cuál es la solución?

Desafortunadamente, la solución no es simple. Lo primero es determinar si el sitio web es vulnerable al ataque (existen herramientas para hacerlo), y si se detecta el problema hay que parchar la librería OpenSSL. Lamentablemente, esto es solo el principio. Dado que no hay forma de estar seguro si el server fue atacado antes del parche, es mejor asumir que este ya fué atacado. La medida de seguridad entonces es  revocar el certificado SSL del servidor y reemplazarlo por uno nuevo. Las recomendaciones que han aparecido en Internet sobre parchar OpenSSL o cambiar la password de los usuarios, no son suficientes si el atacante ya tiene en su poder la llave privada del servidor.

Al observar las fechas de los certificados SSL de los principales sitios Web del mundo, se puede constatar que ya han revocado e instalado nuevos certificados :

La recomendación para los portales Chilenos que presenten la vulnerabilidad es:

1) Verificar la si existe la vulnerabilidad
2) Si existe, entonces parchar la librería OpenSSL, revocar e instalar nuevos certificados en sus servidores y solicitar a los usuarios que cambien sus passwords.