Heartbleed: ¿Qué es y cuáles son las opciones para mitigarlo?

Heartbleed: ¿Qué es y cuáles son las opciones para mitigarlo?

Esto es unPregunta canónicasobre cómo comprender y solucionar el problema de seguridad de Heartbleed.

¿Qué es exactamente CVE-2014-0160, también conocido como "Heartbleed"? ¿Cuál es la causa, qué sistemas operativos y versiones de OpenSSL son vulnerables, cuáles son los síntomas y existen métodos para detectar un exploit exitoso?

¿Cómo puedo comprobar si mi sistema está afectado? ¿Cómo se puede mitigar esta vulnerabilidad? ¿Debería preocuparme que mis claves u otros datos privados se hayan visto comprometidos? ¿Qué otros efectos secundarios deberían preocuparme?

Respuesta1

Primero, antes de asustarse, asegúrese de comprender si esta vulnerabilidad realmente se aplica a usted. Si tiene un servidor, pero nunca ha tenido ninguna aplicación que utilice TLS, entonces esto no es una cuestión de alta prioridad que deba solucionar. Si por el contrario tuAlguna vez he tenidoAplicaciones habilitadas para TLS, entonces te espera un placer. Sigue leyendo:

¿Qué es exactamente CVE-2014-0160, también conocido como "Heartbleed"?

Es un gran desastre, eso es lo que es. En resumen, se descubrió una vulnerabilidad explotable de forma remota en las versiones 1.0.1 a 1.0.1f de OpenSSL a través de la cual un atacante puede leer ciertas partes de la memoria del sistema. Esas partes son las que contienen datos confidenciales, como claves privadas, claves previamente compartidas, contraseñas y datos corporativos de alto valor, entre otras cosas.

El error fue descubierto de forma independiente por Neel Mehta de Google Security (21 de marzo de 2014) y la empresa finlandesa de pruebas de seguridad de TI Codenomicon (2 de abril de 2014).

¿Cual es la causa?

Bueno, código errante en OpenSSL.Aquíes el compromiso que introdujo la vulnerabilidad, yaquíes el compromiso que solucionó la vulnerabilidad. El error apareció en diciembre de 2011 y se corrigió hoy, 7 de abril de 2014.

El error también puede verse como un síntoma de un problema mayor. Los dos problemas relacionados son (1) qué proceso existe para garantizar que no se introduzca código erróneo en una base de código y (2) por qué los protocolos y las extensiones son tan complejos y difíciles de probar. El punto (1) es un problema de gobernanza y proceso con OpenSSL y muchos otros proyectos. Muchos desarrolladores simplemente se resisten a prácticas como la revisión, el análisis y el escaneo del código. El punto (2) se está discutiendo en el TLS WG del IETF. VerHeartbleed / complejidad del protocolo.

¿Se insertó maliciosamente el código erróneo?

No especularé sobre si esto fue realmente un error o posiblemente un fragmento de código introducido en nombre de un mal actor. Sin embargo, la persona que desarrolló el código para OpenSSL afirma que fue sin darse cuenta. VerEl hombre que introdujo el grave fallo de seguridad 'Heartbleed' niega haberlo insertado deliberadamente.

¿Qué sistemas operativos y versiones de OpenSSL son vulnerables?

Como se mencionó anteriormente, cualquier sistema operativo que esté utilizando o aplicación que esté vinculada a OpenSSL 1.0.1 a 1.0.1f.

¿Cuáles son los síntomas? ¿Hay algún método para detectar un exploit exitoso?

Esta es la parte aterradora. Hasta donde sabemos, no existe ninguna forma de detectar si esta vulnerabilidad ha sido explotada o no. En teoría, es posible que pronto se publiquen firmas IDS que puedan detectar este exploit, pero al momento de escribir este artículo, no están disponibles.

Hay evidencia de que Heartbleed estaba siendo explotado activamente en la naturaleza ya en noviembre de 2013. Consulte la EFF.Salvaje de corazón: ¿Estaban las agencias de inteligencia utilizando Heartbleed en noviembre de 2013?Y Bloomberg informa que la NSA había convertido el exploit en un arma poco después de que se introdujera la vulnerabilidad. VerSe dice que la NSA explota el error Heartbleed para fines de inteligencia durante años. Sin embargo, la comunidad de inteligencia estadounidense niega las afirmaciones de Bloomberg. VerIC EN EL REGISTRO.

¿Cómo puedo comprobar si mi sistema está afectado?

SiSi mantiene OpenSSL en su sistema, simplemente puede emitir openssl version:

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

Sila distribución mantiene OpenSSL, entonces probablemente no pueda determinar la versión de OpenSSL debido a la aplicación de parches mediante el opensslcomando o la información del paquete (por ejemplo, apt-get, o ). El proceso de parcheo utilizado por la mayoría (¿todas?) de las distribuciones sólo utiliza el número de versión base (por ejemplo, "1.0.1e"); y lo hacedpkgyumrpmnoincluir unversión de seguridad efectiva(por ejemplo, "1.0.1g").

Hay una pregunta abierta sobre Superusuario para determinar la versión de seguridad efectiva para OpenSSL y otros paquetes cuando se aplica un parche a los paquetes. Desafortunadamente, no hay respuestas útiles (aparte de consultar el sitio web de la distribución). VerDeterminar la versión de seguridad efectiva cuando se enfrenta a un backpatching?.

Como regla general: si alguna vez instaló una de las versiones afectadas y alguna vez ejecutó programas o servicios vinculados con OpenSSL para soporte TLS, entonces es vulnerable.

¿Dónde puedo encontrar un programa para probar la vulnerabilidad?

A las pocas horas del anuncio de Heartbleed, varias personas en Internet habían publicitado aplicaciones web de acceso público que supuestamente podrían usarse para verificar la presencia de esta vulnerabilidad en un servidor. Al momento de escribir este artículo, no he revisado ninguna, por lo que no publicaré más sus aplicaciones. Se pueden encontrar con relativa facilidad con la ayuda de su motor de búsqueda preferido.

¿Cómo se mitiga esta vulnerabilidad?

Actualice a una versión no vulnerable y restablezca o vuelva a proteger los datos vulnerables. Como se señala en elSangrado del corazónsitio, los pasos de respuesta apropiados son, en términos generales:

  1. Parchear sistemas vulnerables.
  2. Regenerar nuevas claves privadas.
  3. Envíe una nueva CSR a su CA.
  4. Obtenga e instale un nuevo certificado firmado.
  5. Invalidar claves de sesión y cookies
  6. Restablecer contraseñas y secretos compartidos
  7. Revocar certificados antiguos.

Para un análisis y una respuesta más detallados, consulte¿Qué debe hacer un operador de sitio web ante el exploit Heartbleed OpenSSL?en Security Stack Exchange.

¿Debería preocuparme que mis claves u otros datos privados se hayan visto comprometidos? ¿Qué otros efectos secundarios deberían preocuparme?

Absolutamente. Los administradores de sistemas necesitanasumirque sus servidores que utilizaron versiones vulnerables de OpenSSL están efectivamente comprometidos y responden en consecuencia.

Poco después de que se revelara la vulnerabilidad, Cloudfare ofreció un desafío para ver si la clave privada de un servidor se podía recuperar en la práctica. El desafío lo ganaron de forma independiente Fedor Indutny e Ilkka Mattila. VerEl desafío del sangrado del corazón.

¿Dónde puedo encontrar más información?

Volcado de enlaces, para aquellos que buscan más detalles:


Un cronograma bastante detallado de los eventos de divulgación se puede encontrar enCronología de la divulgación de Heartbleed: quién sabía qué y cuándo.


Si es programador y está interesado en varios trucos de programación, como detectar un ataque Heartbleed a través de msg_cbla devolución de llamada de OpenSSL, consulte OpenSSL.Aviso de seguridad 2014047.

Respuesta2

Una explicación simple del error, por XKCD:

XKCD 1354

Respuesta3

Ubuntu 12.04, 12.10 y 13.10

Ubuntu ha emitidoUSN-2165-1, que indica que los paquetes actualizados ahora están disponibles en los archivos. Ejecute los dos comandos siguientes para obtener la solución.

sudo apt-get update
sudo apt-get upgrade

ubuntu 14.04

Subí un paquete Debian que contiene la nueva versión (1.0.1g) a un PPA que configuré para este propósito. Estos tres comandos agregarán mi PPA a su sistema, actualizarán la lista de paquetes disponibles y actualizarán todo:

sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
sudo apt-get update
sudo apt-get upgrade

Nota: el PPA también proporciona paquetes para Ubuntu 12.04 y 13.10, en caso de que prefiera ejecutar la nueva versión (1.0.1g) en lugar de simplemente usar las versiones parcheadas en los archivos.

ubuntu 10.04

Esta es una versión LTS, la versión del servidor aún es compatible y recibe actualizaciones de seguridad. Pero la vulnerabilidad heartbleed no afectó al paquete openssl de una instalación estándar de ubuntu 10.04, porque la versión es inferior a 1.0.1.

La versión de escritorio ha llegado al final de su vida útil y es necesario actualizarla o reinstalarla.

Ubuntu 13.04 y otras versiones desactualizadas

Ubuntu 13.04 tuvo un ciclo de soporte muy corto que quizás no esperabas. Ya ha llegado al final de su vida útil y ya no recibe actualizaciones de seguridad. Debería haberse actualizado hace mucho tiempo. Si alguien todavía lo está usando, actualícelo ahora, ya sea desde cero o puede actualizarlo de forma no destructiva a 13.10 siguiendo este sencillo procedimiento:http://www.tecmint.com/upgrade-ubuntu-13-04-raring-ringtail-to-ubuntu-13-10-saucy-salamander/Después de la actualización, el sistema recibe el parche Heartbleed del 13.10.

Para todas las demás versiones obsoletas de Ubuntu, significa básicamente que es necesaria una instalación nueva.

Verificar que se aplicó el parche

Básicamente, ejecutaropenssl version -a y asegúrese de que la fecha de compilación sea el 7 de abril de 2014 o posterior, pero vea másaquí.

Reiniciar

La mejor manera de asegurarse de que todos los servicios que dependen de OpenSSL se reinicien esreiniciar.

Respuesta4

Debian sibilante

Debian ha emitidoDSA-2896-1y las bibliotecas parcheadas sondisponible aquí. Un script de shell esdisponible aquí.

1. parche

El repositorio apt-get se actualizó por lo que ahora las bibliotecas parcheadas están disponibles a través deapt-get update && apt-get upgrade

apt-get upgrade libssl1.0.0 openssl

Alternativamente (no recomendado), los paquetes se pueden actualizar manualmente:

wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1e-2+deb7u5_amd64.deb

dpkg -i openssl_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl-dev_1.0.1e-2+deb7u5_amd64.deb

2. Reinicie el servidor/servicios

Para obtener una mejor protección, reinicie todo el servidor o, si el servidor no puede estar fuera de línea, reinicie los servicios necesarios.

3. Verifique la versión de OpenSSL

love@server:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
love@server:~$ dpkg -l libssl1.0.0
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-====================================================
ii  libssl1.0.0                 1.0.1e-2+deb7u6  amd64            SSL shared libraries

información relacionada