Heartbleed: La línea de código que comprometió la seguridad de toda la Internet

heartbleed

Quizás muchos han escuchado ya la noticia de que un fallo recién descubierto en el protocolo de SSL ha puesto la internet en jaque, comprometiendo la seguridad de cientos de miles de servidores que manejan correos electrónicos, transferencias bancarias y todo tipo de comunicación sensitiva. Lo que quizás muchos desconozcan es que todo este peligro fue causado por una sola línea de código:

memcpy(bp, pl, payload);

Para poder explicarles en que consiste la falla debemos primero entender un poco que cosa es el protocolo de SSL.

OpenSSL es un protocolo de seguridad de código libre utilizado por cientos de miles de servidores para asegurar la comunicación a través de la Internet. El protocolo establece que para que una computadora puede tener acceso a un servidor, primero debe autentificarse, es decir probar ser quien dice ser. Este proceso de autentificación tiene dos partes: la identificación inicial y la autenticación continua. La identificación inicial ocurre cuando la computadora se conecta al servidor por primera vez (por ejemplo cuando entras a una pagina web para revisar tu email y escribes tu contraseña). La identificación continua es una comunicación que se mantiene abierta y constante a través de una serie de intercambio de pequeños paquetes de información. Esta segunda parte del protocolo se conoce como “Heartbeat” o “latido del corazón” y es la que tiene el “bug” llamado “Heartbleed” o “sangramiento del corazón”

Para ver en que consiste el “bug” vamos a explicar la línea de código que causó el problema:

memcpy(bp, pl, payload);

En simples palabras este comando dice “ copia de tu memoria (memcpy) y envíame (bp) una frase (pl) que tiene X cantidad de Kb (payload)

Este comando genera un tipo de conversación constante entre el servidor y la computadora que más o menos dice:

 PC: ¿estás ahí? mi palabra clave es azúcar y tiene 6 caracteres

Servidor: Si, estoy aquí y tu palabra clave es azúcar

Hasta ahí todo bien, pero ¿qué pasa si una computadora controlada por un hacker envía un mensaje al servidor con la cantidad errónea de KB?

La conversación sería así:

PC: ¿estás ahí? mi palabra clave es azúcar y tiene 100 caracteres

Servidor: Si, estoy aquí y tu palabra clave es azúcar^&%!12josegonzalez1!:contraseña:contra123&^email:jose@hotmail.com%telefono(555)234-5643$#^!&&1

Como vemos en este caso, el servidor no solo entregó la palabra clave que identifica la computadora, sino que también le agregó 94 caracteres adicionales que estaban alojados en su memoria temporal (RAM) ya que la PC había dicho que el “payload” tenía 100 caracteres.

Como dije anteriormente, estos caracteres adicionales son datos que permanecen en la memoria temporal del servidor (RAM) y pueden ser datos de un usuario que todavía está conectado al servidor o uno que recientemente se conectó. Ahí está el problema.

Dada la alta frecuencia de este tipo de comunicación entre el servidor y la computadora, es muy probable que eventualmente un hacker logre extraer una gran cantidad de contraseñas, números de tarjetas de créditos, etc que el servidor mantiene en su memoria temporal.

Este bug no es simplemente un concepto teórico  de explotación, sino que es un serio problema de seguridad Según las últimas informaciones, la propia Agencia de Seguridad Nacional de Estados Unidos (NSA por sus siglas en inglés) había estado utilizando este bug desde el 2012 para espiar a otros países y personas que consideraban un peligro para la seguridad del país.

Actualmente Microsoft, Amazon, Google y otras compañías con bastante recursos económicos han comenzado a actualizar sus servidores con parches que arreglan el bug del Heartbleed, sin embargo los expertos consideran que actualmente millones de teléfonos de Android corriendo la versión 4.1.1 sufren del mismo problema y es muy probable que el bug los siga afectando por un largo tiempo. Algo similar ocurre con los routers caseros que traen el protocolo de OpenSSL incorporado.

¿Qué puedo hacer para protegerme del Heartbleed?

Aunque la responsabilidad de aplicar los parches cae primariamente en los dueños de los servidores, hay varias cosas que podemos hacer para proteger nuestros datos.

1. Se recomienda que cambies las contraseñas de los sitios bancarios, cuentas de emails, etc en caso de que los estos servidores fueron comprometidos.

2. Descarga e instala esta extensión para Firefox que revisa todos los sitios que visitas y te avisa si el servidor es vulnerable al bug de Heartbleed

3. Visita las páginas de los fabricantes de los routers que tengas en tu casa o empresa y asegurate de instalar cualquier actualización que esté disponible.

Send to Kindle

Trackbacks/Pingbacks

  1. Bitacoras.com - 2014/04/11

    Información Bitacoras.com

    Valora en Bitacoras.com: Quizás muchos han escuchado ya la noticia de que un fallo recién descubierto en el protocolo de SSL ha puesto la internet en jaque, comprometiendo la seguridad de cientos de miles de servidores que manejan correos electrón…

Leave a Reply