El lunes 7 de abril de 2014 será uno de esos días que Internet jamás olvidará, por haberse masificado una nueva vulnerabilidad en OpenSSL, la implementación más popular del estándar TLS. Es importante destacar que el bug no se encuentra en el protocolo en si mismo sino en la implementación, lo cual es uno de los problemas más comunes en lo que a criptografía se refiere.
Su original nombre, Heartbleed (sangrado de corazón), surgió de un juego de palabras de la extensión en la que se encontró el bug, llamada Heartbeat (latido). La funcionalidad Heartbeat (ya conocida en los entornos de redes VPN) de TLS/DTLS, permite mantener viva una sesión sin que sea necesario renegociar parámetros de cifrado y funciona mediante el envío de mensajes entre cliente y servidor.
La vulnerabilidad existe en el código desde diciembre de 2011. Las versiones vulnerables son la 1.0.2-beta y todas las previas de la serie 1.0.1 anteriores a la 1.0.1g. Su código CVE es CVE-2014-0160, y puede encontrarse más información al respecto en el sitio oficial de OpenSSL y en el sitio www.heartbleed.com (en inglés). Ha sido descubierto independientemente por los ingenieros de la compañía de seguridad Codenomicon y por Neel Mehta, investigador del equipo de seguridad de Google.
El bug posibilita la lectura de ciertos fragmentos de la memoria del propio proceso (hasta 64k por vez) tanto del lado del cliente como del lado del servidor, con lo que un potencial atacante podría entonces vulnerar a cualquiera de las partes.
Para realizar el ataque, se debe construir un requerimiento de heartbeat malformado de forma tal que provoque la lectura de la memoria remotamente, en base a la falta de verificación de cierta variable. Técnicamente, afecta a la función dtls1_process_heartbeat de ssl/di_both.c, donde no se realiza la validación correcta de la estructura ssl3_record_st, que entonces puede ser manipulada maliciosamente. Si bien sólo es posible leer un máximo de 64kb, si se renegocia la conexión reiteradamente se pueden obtener nuevos fragmentos. Según esto, se lo puede clasificar como una falla de buffer over-read, que es cuando un programa permite leer más datos de los que debería permitir.
La gravedad del asunto radica especialmente en que realizando pedidos de a 64kb sería posible obtener los datos correspondientes a la clave privada del servidor (o del cliente) y otros datos sensibles. Si a esto le sumamos que OpenSSL masivamente es utilizado y presente en las dos terceras partes de los servidores web de Internet, estamos antes un escenario de un nivel de riesgo dantesco que no se repetirá por mucho tiempo.
Al dia de hoy, ya existen diversos sitios y herramientas que permiten verificar la existencia de la vulnerabilidad en un servidor y, en alguno casos, hasta explotarla. Uno de los primeros en publicar un chequeador fue el especialista italiano en criptografía Filippo Valsorda, quien montó una web para tal fin: http://filippo.io/heartbleed.
En el caso de los administradores de servidores, la manera de evitar ser afectados por Heartbleed es sencillamente actualizar a la última versión de OpenSSL o bien para los más puristas, recompilar el código anulando el soporte para Heartbeat.
Por Federico Pacheco, experto en seguridad informática. Autor de los libros Criptografía y Los menores y los riesgos de las nuevas tecnologías. En Twitter: @fedequark
[…] basados en OpenSSL fue descubierta, causando conmoción en el ambiente tecnológico mundial (en este post se explica técnicamente en qué consiste). Dos semanas más tarde, un estudiante de sistemas descubrió que algunos home bankings argentinos […]
y.. las consecuencias son desde el robo de tu información/recursos almacenados en los servidores vulnerables (bancos por ej.) hasta virus en tu pc ya que cualquiera podía poner un servidor trucho con barra verde de https validación extendida y hacerte descargar algún programa (plug-in, actualización) con total confianza de tu lado.. La recomendación es por lo menos reinstalar el SO y rezar que no hayas agarrado algún rootkit tipo bootkit.
Igual, q estés vulnerado sólo depende de cuántas ganas tenga el que te quiera vulnerar.
How about operating systems?
Some operating system distributions that have shipped with potentially vulnerable OpenSSL version:
Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4
Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11
CentOS 6.5, OpenSSL 1.0.1e-15
Fedora 18, OpenSSL 1.0.1e-4
OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012)
FreeBSD 10.0 – OpenSSL 1.0.1e 11 Feb 2013
NetBSD 5.0.2 (OpenSSL 1.0.1e)
OpenSUSE 12.2 (OpenSSL 1.0.1c)
Operating system distribution with versions that are not vulnerable:
Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14
SUSE Linux Enterprise Server
FreeBSD 8.4 – OpenSSL 0.9.8y 5 Feb 2013
FreeBSD 9.2 – OpenSSL 0.9.8y 5 Feb 2013
FreeBSD 10.0p1 – OpenSSL 1.0.1g (At 8 Apr 18:27:46 2014 UTC)
FreeBSD Ports – OpenSSL 1.0.1g (At 7 Apr 21:46:40 2014 UTC)
Parece una campaña mundial para actualizar OpenSSL
Muy interesante, incluso sin ser un entendido respecto a la parte técnica.
Pregunta: ¿Y del lado de los usuarios? Aparte de actualizar claves… ¿Hay otras precauciones?