Una de las vulnerabilidades de seguridad más famosas a mediados de 2010 fue «Heartbleed». Heartbleed fue particularmente grave porque era el software afectado «OpenSSL», la principal biblioteca criptográfica para conexiones HTTPS que se utiliza con mucha frecuencia. Para empeorar las cosas, la vulnerabilidad había estado presente en OpenSSL durante más de dos años antes de que fuera descubierta, lanzada y parcheada, lo que significaba que muchos usuarios estaban usando una versión vulnerable.
Heartbleed fue un agujero de seguridad en la extensión Heartbeat que perdió datos de la RAM del servidor al cliente cuando se utilizó. La extensión de latido se utiliza para mantener una conexión entre el servidor web y el cliente sin realizar una solicitud de página normal.
Con OpenSSL, el cliente envía un mensaje al servidor e informa al servidor sobre la duración del mensaje (hasta 64 KB). El servidor debería devolver el mismo mensaje. Sin embargo, lo que es crucial es que el servidor en realidad no verificó si el mensaje era tan largo como el cliente afirmó que era. Esto significaba que un cliente podía enviar un mensaje de 10K, afirmar que era de 64K y obtener una respuesta de 64K, siendo los 54K adicionales los siguientes 54K de RAM, independientemente de los datos. fueron almacenados allí. Este proceso es visualizado por el pozo Cómic XKCD # 1354.
Imagen cortesía de xkcd.com.
Al crear muchas solicitudes pequeñas de latidos y afirmar que eran solicitudes grandes, un atacante podría crear una imagen de la mayor parte de la RAM del servidor juntando las respuestas. Los datos que se almacenan en la RAM y que se pueden perder incluyen claves de cifrado, certificados HTTPS y datos POST no cifrados, como nombres de usuario y contraseñas.
Nota: Es menos conocido, pero el protocolo Heartbeat y el exploit también funcionaron al revés. Se podría configurar un servidor malintencionado para leer hasta 64 KB de memoria de usuario por solicitud de latido.
El problema fue descubierto el 1 de abril de 2014 por varios investigadores de seguridad de forma independiente entre sí y puesto a disposición de OpenSSL de forma privada para que se pudiera crear un parche. El error se publicó cuando se lanzó el parche el 7 de abril de 2014. La mejor solución para solucionar el problema fue aplicar el parche. Sin embargo, también era posible solucionar el problema desactivando la extensión de latido si el parche instantáneo no era una opción.
Desafortunadamente, aunque el exploit era público y bien conocido, muchos sitios web no se actualizaron de inmediato, y la vulnerabilidad se encontró ocasionalmente años después. Esto dio lugar a que se utilizaran varios casos del exploit para obtener acceso a cuentas o para perder datos.