Heartbleed: una terrible vulnerabilidad informática
En los últimos días, las noticias sobre Heartbleed, la importante vulnerabilidad descubierta en la tecnología OpenSSL, ha ocupado tuits y titulares por doquier. Y no es para menos: se trata de un bug que puede ser usado de forma prácticamente continua, sin dejar huella, en uno de los sistemas de seguridad más extendidos en la Web.
Pero… ¿qué es Heartbleed?
Heartbleed es una vulnerabilidad descubierta en dos versiones concretas, 1.0.1 y 1.0.2-beta, de OpenSSL (ver más abajo) que permite a un atacante acceder a una pequeña porción (64 KiB) de la memoria del servidor web al que ataca. En esa pequeña porción de memoria puede haber cualquier cosa, en cada momento. El matiz peligroso está en que el atacante puede repetir su ataque tantas veces como quiera a lo largo del tiempo, consiguiendo 64 KiB de memoria distintos cada vez: para evitar otro tipo de ataques, la posición en la que se van guardando los datos en memoria va cambiando dinámicamente, así que sólo tienes que hacer un número ingente de ataques de 64 KiB y confiar en que las probabilidades te permitan pescar alguna información interesante, como un usuario y contraseña o una clave privada.
Además, como la vulnerabilidad afecta a una operación diseñada para tener “poco peso” (el heartbeat, la manera de mantener abierta la conexión segura sin tener que negociarla de nuevo por completo), no queda ninguna traza del ataque, por lo que no es posible detectarlo ni investigarlo.
¿Y qué es OpenSSL?
Es una implementación open source de los protocolos SSL y TLS, que permiten (entre otras cosas) que las comunicaciones entre tu navegador y un servidor web no puedan ser espiadas por terceros y que puedas estar seguro de que estás accediendo a un servidor web legítimo. Se dice que OpenSSL es la implementación más extendida de SSL/TLS, con dos tercios del mercado, pero no he encontrado ninguna información que verifique la exactitud de ese dato. La primera release de la versión estable afectada (1.0.1) data de marzo de 2012 , así que el bug lleva un par de años en sistemas en producción y, potencialmente, siendo utilizado por atacantes maliciosos.
¿Qué webs se han visto afectadas por Heartbleed?
Algunas estimaciones hablan de alrededor de medio millón de webs que usaban la versión de OpenSSL vulnerable, con el heartbeat habilitado. Eso incluye gigantes como Twitter, Yahoo! o Dropbox. Sin embargo, tener el software vulnerable en tu web no significa que te hayas visto afectado, es decir, que algún atacante haya usado esta vulnerabilidad para acceder a los datos en la memoria de tu servidor. Como no queda rastro del ataque, no hay forma de saber si ha ocurrido o no.
¿Están mis datos en peligro?
Eso depende de muchas cosas. Dadas las características del ataque, es poco probable que algún dato tuyo concreto (como, por ejemplo, tu contraseña para un servicio determinado) haya caído en manos de un atacante. Sin embargo, como es imposible saber si alguien lleva ya dos años explotando esta vulnerabilidad de forma masiva, no es descartable algo así.
Además, es teóricamente posible (aunque parece que es bastante difícil en la práctica) que un atacante haya podido hacerse con la clave privada de un servidor, lo que le permitiría un amplio abanico de usos fraudulentos: desde desencriptar “conversaciones” entre tu navegador y el servidor hasta hacerse pasar por ese servidor.
En cualquier caso, no está de más que cambies tus contraseñas en todos los sitios afectados, sobre todo si no tienes una política de contraseñas robusta que minimice los efectos de que alguien tenga acceso a tu contraseña.
¿Esto ha ocurrido porque OpenSSL es software open source?
Esto ha ocurrido porque alguien hizo una chapuza. Usar esto para posicionarse a favor o en contra del software open source es errar el tiro, porque el software propietario es, al menos, tan propenso a contener chapuzas como el software libre. De hecho, la oscuridad que rodea al software propietario suele hacer que fallos como este tarden incluso más tiempo en ser diagnosticados y corregidos.
Que un producto software sea open source o propietario no lo hace ni más ni menos seguro: será más o menos seguro en función del empeño que hayan puesto sus creadores en hacerlo seguro y del que pongan en detectar sus fallos y corregirlos. A ambos lados de la frontera, encontrarás equipos de desarrollo amantes de la chapuza o adictos a la seguridad y la calidad. De hecho, la mayoría de los contribuidores en los proyectos de software libre cobran una nómina de empresas fabricantes de software propietario (por ejemplo, el 75% del desarrollo del kernel de Linux lo hacen desarrolladores que cobran por su trabajo).
Cabe discutir si un determinado proyecto o una determinada empresa deben usar tal o cual software en función de su escenario humano y tecnológico, su capacidad de inversión, sus necesidades funcionales, su evolución prevista, su política de riesgos y garantías, etc., pero meter en un único saco todo el software open source (y, en otro, todo el software propietario) y elegir en consecuencia es desconocerlo todo sobre esta industria.