Vulnerabilidad Severa de OpenSSL en la extensión TLS Heartbeat (CVE-2014-0160)

Existe una vulnerabilidad severa en la implementación OpenSSL de la extensión TLS/DTLS (transport layer security protocols) heartbeat (RFC6520). Esta vulnerabilidad es muy severa y se le ha asignado el identificador CVE-2014-0160.

La explotación de esta vulnerabilidad puede llevar a la revelación de el contenido de la memoria del servidor al cliente y del cliente hacia el servidor. Cualquier atacante puede obtener de manera remota información sensible de la memoria, incluyendo, y sin limitarse a llaves secretas usadas para el cifrado SSL y tokens de autenticación.

Para mas información de los ataques ir a heartbleed.com.

¿Cómo afecta esto a Ruby?

Ruby se considera afectado cuando ha sido compilado estáticamente a alguna versión vulnerable de OpenSSl a través de la extensión OpenSSL de C estándar.

Las versions de OpenSSL 1.0.1 a 1.0.1f (inclusiva) son vulnerables a este ataque. Para verificar que versión de la librería OpenSSL está siendo ligada dinámicamente a Ruby, ejecuta lo siguiente:

ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'

Para verificar la versión de OpenSSL instalada con Ruby, ejecuta lo siguiente:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

Puedes verificar si tu software cliente o algún servicio es vulnerable utilizando este script por emboss.

Soluciones

Para actualizar a la versión más actual de OpenSSL 1.0.1g o más nueva, debes usar el manejo de paquetes de tu sistema operativo para asegurarte de que proveen una versión actualizada de OpenSSL. Puede que necesites consultar con tu distribuidor de sistema operativo para verificar que la versión de OpenSSL que utilizan está parchada, sin importar el número de versión disponible.

Si actualizar no es una opción, recompila una versión parchada de OpenSSL con la opción -DOPENSSL_NO_HEARTBEATS.

Con la versión actualizada de OpenSSL se recomienda recompilar Ruby para asegurarse de que no hay relación con la versión vulnerable de OpenSSL.

Esto significa actualizar cualquier herramienta que se utiliza para compilar Ruby como RVM o ruby-build. Si tu compilaste Ruby, utiliza la opción --with-openssl-dir al momento de compilar para ligar al directorio con la versión actualizada de OpenSLL.

$ ./configure --with-openssl-dir=/path/to/openssl
$ make
$ make install

Después de actualizar OpenSSL y Ruby, es importante reiniciar todos los programas que estén utilizando la versión vulnerable.

Muchas distribuciones de sistemas operativos ya proveen (o pronto lo harán) versiones parchadas y paquetes recompilados de las librerías vulnerables a este ataque. Es importante mantenerte al tanto de las noticias de tu sistema operativo para asegurarte de que tus servidores están seguros.