Muchos deben haber visto en Internet el logo de un corazón desangrándose y no entender lo que explica realmente. En este artículo haré el esfuerzo de explicar lo que realmente es Heartbleed de una forma sencilla, usando lo más mínimo los términos técnicos para que todos puedan entender y saber que la gravedad de este fallo.
Heartbleed es un bug que ha sido encontrado en una librería(1) de seguridad de código abierto «OpenSSL», la capa de cifrado que da seguridad a los protocolos de Internet HTTPS, FTPS, POP3S, SMTPS y otros protocolos, permitiendo ver lo que se almacena en la memoria del servidor como las claves privadas de un servidor, credenciales de inicio de sesión, datos personales o número de tarjetas de créditos. Este bug ha afectado a cientos de miles de servidores de Internet desde hace 2 años, sin que nadie se diera cuenta, a menos que alguien haya aprovechado el bug de forma secreta.
¿En que consiste el bug?
Cuando existe una comunicación segura entre el cliente (2) y el servidor (3) como por ejemplo navegar en la web de https://www.yahoo.com, entra en ejecución la librería «Heartbeat» que permite mantener la sesión activa y no cerrarla hasta que el usuario decida. Cuando se esta activa la sesión y el usuario solicita datos al servidor, se enviará un mensaje que esta compuesto por 2 componentes:
- Un paquete de datos llamado «Carga útil» o «Payload» que puede ser hasta 64 KB.
- El tamaño de la carga útil
El bug es explotado cuando el hacker modifica el tamaño de la carga útil por medio de comandos, recibiendo más paquetes de datos que están almacenados en la memoria del servidor. De esta forma recibe datos de su sesión más los datos de las sesiones de otros usuarios, revelando la sensible información.
Explicación mucho más sencilla
El sitio web XKCD ha publicado una imagen (clic para agrandar) para que todas las personas puedan entender, aunque está en inglés:
En la gráfica se puede ver a un atacante que envía un mensaje al servidor con un paquete de datos y el tamaño de la carga, el resultado es que el servidor lo valida y responde lo que pide el usuario (Lo que esta resaltado) como en la primera escena:
- Servidor, ¿Sigues ahí?. Si es así, responde «POTATO» (6 letras)
- Y el servidor responde «POTATO»
Pero que pasa en la última escena cuando se modifica el tamaño de la carga:
- Servidor, ¿Sigues ahí?. Si es así, responde «HAT» (500 letras)
- Y el servidor le responde «HAT» + Otros datos que son de otros usuarios.
Es ahí donde no se valida el tamaño de la carga y se obtiene los datos sensibles.
¿Que se tiene que hacer?
La gravedad no esta en los equipos de los usuarios (PC, Laptop, móvil, etc), sino en todos servidores que utilizan la biblioteca OpenSSL desde la versión 1.0.1 a la versión 1.0.1f. A pesar de que el fallo a sido considerado el más grave, ya la gran mayoría de los servidores ha aplicado el parche que corrige el fallo.
¿Mi cuenta puede estar en riesgo con este fallo?
Si. Aunque el bug se descubrió recientemente, puede que desde hace 2 años alguien haya aprovechado de este bug para robar información de los usuarios, por lo que es recomendable cambiar las contraseñas de todos los servicios que haces uso.
¿Cómo puedo saber si un sitio web donde estoy navegando tiene el fallo?
Si estás navegando con Google Chrome, descarga la extensión Chromebleed desde la Chrome Store que te notificará cuando un sitio tiene web aún tiene el fallo Heartbleed.
Existe la opción de verificar la web por medio de una página web que es Filippo para saber si el sitio aún tiene el fallo o ya es seguro.
Definición de términos
1 = Conjunto de funciones
2 = PC del Usuario
3 = Equipos especialmente para estar encendido las 24 horas como el servidor de Facebook, Google, Yahoo!, etc