Logo de Heartbleed
Una buena parte de los usuarios de servicios de banca online, comercio electrónico y redes sociales se ha acostumbrado a ver en la barra de direcciones de su navegador las siglas HTTPS
y un icono que representa un candado. Cuando accedemos a un sitio web
bajo HTTPS asumimos que es un sitio seguro y que el intercambio de datos
que realizamos está cifrado, por tanto, libre de terceros que intenten
interceptar nuestras comunicaciones.
Sin embargo,
desde la madrugada del lunes al martes se está hablando mucho de las
conexiones SSL, concretamente, de los servicios que ofrecen conexiones
cifradas apoyándose sobre OpenSSL puesto que se ha descubierto una grave vulnerabilidad
de este componente que pone en riesgo las comunicaciones de muchos de
los sitios web que, quizás, usemos a diario. Aunque el problema nos
afecta a todos los que usamos internet a diario, no nos toca hacer nada
como usuarios, sino que son los administradores de sistemas quienes
tienen mucho trabajo estos días.
OpenSSL es una de las bibliotecas de criptografía más usadas en los servidores web (alrededor de un 17%
de los servidores web que ofrecen conexiones seguras con SSL se
apoyaban en este componente y presentaban esta vulnerabilidad); por
tanto, que aparezca una vulnerabilidad es algo para tomarse muy en serio.
Catalogada con el código CVE-2014-0160, esta vulnerabilidad ha sido
descubierta por expertos de Google y la compañía de seguridad
Codenomicon y ha sido "bautizada" bajo el apelativo de Hearthbleed al estar vinculada a la funcionalidad heartbeat de OpenSSL.
Impacto y gravedad de la situación
Para que nos hagamos una idea del impacto de esta vulnerabilidad,
estarían afectadas todas las versiones de OpenSSL lanzadas en los dos
últimos años y permitiría a un tercero con no muy buenas intenciones
interceptar comunicaciones de sitios web bajo HTTPS y otros servicios
como el correo electrónico o conexiones VPN. Servicios como Tor o Wikimedia
se han apresurado a lanzar sendos comunicados sobre esta
vulnerabilidad, el impacto que tiene en sus servicios y recomendaciones
para mitigar el impacto; poco después de conocerse OpenSSL lanzó una
nueva versión para corregir esta vulnerabilidad y distribuciones Linux
como RedHat actualizaron sus repositorios para que los administradores de sistemas pudieran actualizar su versión de OpenSSL.
¿Y por qué tanto revuelo?
¿Por qué es tan grave esta vulnerabilidad? Para entender mejor la
gravedad de esta vulnerabilidad, creo que es importante que entendamos
cuál es el bug que se ha encontrado. Hay que
partir de la base que el protocolo SSL/TLS es complejo y se basa en la
criptografía asimétrica, es decir, en una clave pública y una clave
privada que reside en el servidor que ejerce de prestatario de los
servicios que estamos utilizando.
La clave privada,
como su nombre indica, no se comparte con nadie y es la base sobre la se
apoya el cifrado de las comunicaciones; sin embargo, la funcionalidad heartbeat
que implementaba OpenSSL presenta un fallo en el que responde con un
dato que revela porciones de la memoria interna utilizada por este
proceso.Dicho de otra forma, OpenSSL estaba revelando datos de la
memoria del servidor en el que se estaba ejecutando y, claro está, entre
los datos que están en su memoria se encuentra la clave privada
(necesaria para realizar los cálculos de cifrado y descifrado de
mensajes). Con este escenario, sin el que el administrador del sistema
sea consciente, la clave privada podría haber quedado expuesta a un
tercero que hubiese explotado esta vulnerabilidad, desmontando la
seguridad de este tipo de comunicaciones.
Los riesgos de la vulnerabilidad Hearthbleed de OpenSSL
Para entender mejor el impacto que supone esta vulnerabilidad, hemos hablado con Yago Jesús, experto en seguridad IT y editor del blog Security by Default. Yago nos comentó que no es la primera vez que se han detectado bugs en OpenSSL
pero, aún así, el trabajo de la comunidad de desarrolladores de OpenSSL
es muy bueno y han desarrollado un pilar muy importante sobre el que se
apoyan múltiples servicios que operan en la red.
"Parece que con este ataque, cualquiera puede y ¿ha podido? obtener esa
clave privada asociada al certificado. Esto es un problema muy grave,
principalmente porque no sabes si ha sucedido o no, el ataque es
'limpio' no deja trazas, con lo que existe un riesgo de que te haya
tocado a ti".
El gran revuelo que se ha generado,
precisamente, radica en lo silencioso que podría ser un ataque explotase
esta vulnerabilidad. Podrían haberse capturado claves privadas de
servicios de gran calado y usarlos para descifrar comunicaciones o
suplantar estos servicios para engañar al usuario e interceptar sus
comunicaciones sin que éste se diese cuenta.
En este
caso, si tu implementación de OpenSSL es vulnerable, lo más razonable es
que revoques tu certificado SSL y consigas otro nuevo en el que la
clave privada no haya podido ser comprometida. Según nos comentó Yago,
esta vulnerabilidad es potencialmente grave
y, de hecho, todo el revuelo generado está más que justificado porque
se podrían haber comprometido muchos sitios web sin saberlo.
Concretamente, los principales riesgos son:
a) Que alguien pueda suplantar tu servidor web ya que teniendo la parte
pública (se obtiene conectándote al servidor) y la parte privada (a
través del ataque), nada impediría configurar un servidor web con esos
datos y ser a todos los efectos 'tu' sitio web. Esto no hace que
automáticamente alguien que ponga www.tusite.com sea redirigido al
servidor del atacante (aquí interviene el protocolo DNS) pero, si el
atacante consigue montar un ataque man-in-the-middle,
puede redirigir las conexiones a su servidor y suplantar el sitio
original. El navegador web no mostrará ningún tipo de alerta cuando
negocie la sesión SSL, por tanto, el usuario no sería consciente del
engaño.
"Esta práctica podría ser de mucha utilidad
para países que coartan la libertad de expresión, por ejemplo China. Con
este ataque podrían haberse hecho con la parte privada del certificado
SSL de cualquier sitio web vulnerable y que sea de interés, y de esa
forma poder espiar a sus ciudadanos".
b) Al tener la
clave privada, que es la base para descifrar las comunicaciones entre un
cliente y el servidor, el tráfico SSL se podría descifrar sin problema.
Por tanto, si alguien estuviese a la escucha de nuestras comunicaciones
(realizando sniffing),
el cifrado de las comunicaciones no le importaría porque sería capaz de
descifrarlas y acceder a la información circulante por la red.
Actualizar la versión de OpenSSL, el primer paso para solventar el problema
¿Y cuál es la solución? Como nos podemos imaginar, la solución pasa por la instalación de la nueva versión de OpenSSL
que se ha lanzado, precisamente, para corregir esta vulnerabilidad.
Quizás nos podría parecer algo simple pero cuando hablamos de sistemas
que están en explotación, la actualización de un paquete de software no
siempre es un proceso inmediato; los cambios requieren pruebas y
revisiones. Evidentemente, esta vulnerabilidad no es algo a pasar por
alto, es importante aplicar la solución publicada por OpenSSL lo antes
posible para evitar la exposición de la clave privada pero, además, es importante revocar el certificado SSL
de los servicios web que estaban afectados por esta vulnerabilidad
para, así, anularlo en el caso que éste hubiese sido interceptado. Al
generar los certificados de nuevo, los posibles certificados
interceptados dejarían de tener validez y no se podrían usar con fines
deshonestos.
Nota:
Durante las primeras horas se comentó que esta vulnerabilidad afectaba a
dos tercios de los servidores web; sin embargo, el impacto es mucho más
pequeño (aunque no por ello menos preocupante).
Como bien comentaba Ricardo Galli en Twitter,
el dato de "dos tercios" se corresponde con la proporción de servidores
que se apoyan en Apache y en Nginx que, a su vez, se apoyan sobre
OpenSSL; sin embargo, no todos los servidores web están bajo HTTPS (no siempre se usa SSL) así que la realidad es que el impacto es menor. Según los datos que ha publicado Netcraft, el impacto es del 17% de los servidores web que ofrecen servicios bajo SSL con certificados de autoridades de certificación reconocidas.
Fuente