¿Cómo parchear el error Heartbleed (CVE-2014-0160) en OpenSSL?

152

A partir de hoy, se ha encontrado un error en OpenSSL que afecta a las versiones 1.0.1 a 1.0.1f ( inclusive) y 1.0.2-beta .

Desde Ubuntu 12.04, todos somos vulnerables a este error. Para corregir esta vulnerabilidad, los usuarios afectados deben actualizar a OpenSSL 1.0.1g .

¿Cómo puede cada usuario afectado aplicar esta actualización ahora ?

    
pregunta Lucio 08.04.2014 - 00:17

6 respuestas

141

Las actualizaciones de seguridad están disponibles para 12.04, 12.10, 13.10 y 14.04 , consulte Aviso de seguridad de Ubuntu USN-2165-1 .

Primero, debe aplicar las actualizaciones de seguridad disponibles, por ejemplo ejecutando

sudo apt-get update
sudo apt-get upgrade

desde la línea de comando.

No olvide reiniciar los servicios (HTTP, SMTP, etc.) que usan la versión de OpenSSL afectada, de lo contrario seguirá siendo vulnerable. Ver también Heartbleed: Qué es y qué son opciones para mitigarlo? en Serverfault.com.

El siguiente comando muestra (después de una actualización) todos los servicios que deben reiniciarse:

sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp

Después de eso, usted necesita para regenerar todas las claves SSL del servidor , y luego evaluar si sus claves pueden haberse filtrado, en cuyo caso los atacantes pueden haber recuperado información confidencial de sus servidores.

    
respondido por el Florian Diesch 08.04.2014 - 00:46
71

El error se conoce como Heartbleed .

¿Soy vulnerable?

Generalmente, se ve afectado si ejecuta algún servidor para el que generó una clave SSL en algún momento. La mayoría de los usuarios finales no se ven afectados (directamente); al menos Firefox y Chrome no usan OpenSSL. SSH no se ve afectado. La distribución de los paquetes de Ubuntu no se ve afectada (se basa en las firmas GPG).

Usted es vulnerable si ejecuta cualquier tipo de servidor que use las versiones 1.0-1.0.1f de OpenSSL (excepto las versiones de curso que fueron parcheadas desde que se descubrió el error). Las versiones de Ubuntu afectadas son 11.10 oneiric a través de 14.04 previos de confianza. Es un error de implementación, no una falla en el protocolo, por lo que solo se ven afectados los programas que usan la biblioteca OpenSSL. Si tiene un programa vinculado a la antigua versión 0.9.x de OpenSSL, no se verá afectado. Solo los programas que usan la biblioteca OpenSSL para implementar el protocolo SSL se ven afectados; los programas que usan OpenSSL para otras cosas no se ven afectados.

Si ejecutó un servidor vulnerable expuesto a Internet, considérelo comprometido a menos que sus registros no muestren conexión desde el anuncio del 2014-04-07. (Esto supone que la vulnerabilidad no se explotó antes de su anuncio). Si su servidor solo se expuso internamente, si necesita cambiar las claves dependerá de qué otras medidas de seguridad existen.

¿Cuál es el impacto?

El error permite que cualquier cliente pueda conectarse a su servidor SSL para recuperar aproximadamente 64kB de memoria del servidor. El cliente no necesita ser autenticado de ninguna manera. Al repetir el ataque, el cliente puede volcar diferentes partes de la memoria en intentos sucesivos.

Uno de los datos críticos que el atacante puede recuperar es la clave privada SSL del servidor. Con estos datos, el atacante puede suplantar a su servidor.

¿Cómo me recupero en un servidor?

  1. Desconecta todos los servidores afectados. Mientras se estén ejecutando, potencialmente están filtrando datos críticos.

  2. Actualice el paquete libssl1.0.0 y asegúrese de que todos los servidores afectados se reinician.
    Puede verificar si los procesos afectados aún se están ejecutando con 'libp' libssl. (eliminado) '/ proc / / maps'

  3. Generar claves nuevas . Esto es necesario porque el error podría haber permitido a un atacante obtener la clave privada anterior. Siga el mismo procedimiento que usó inicialmente.

    • Si usa certificados firmados por una autoridad de certificación, envíe sus nuevas claves públicas a su CA. Cuando obtenga el nuevo certificado, instálelo en su servidor.
    • Si usa certificados autofirmados, instálelos en su servidor.
    • De cualquier forma, retire las viejas llaves y certificados del camino (pero no los elimine, solo asegúrese de que no se usen más).
  4. Ahora que tiene nuevas claves no comprometidas, puede volver a poner su servidor en línea .

  5. Revocar los certificados anteriores.

  6. Evaluación de daños : cualquier información que haya estado en la memoria de un proceso que sirva para conexiones SSL puede haberse filtrado. Esto puede incluir contraseñas de usuario y otros datos confidenciales. Necesitas evaluar qué pueden haber sido estos datos.

    • Si está ejecutando un servicio que permite la autenticación con contraseña, entonces las contraseñas de los usuarios que se conectaron desde un poco antes de que se anunciara la vulnerabilidad deberían considerarse comprometidas. (Un poco antes, porque es posible que la contraseña no se haya utilizado en la memoria por un tiempo). Verifique sus registros y cambie las contraseñas de cualquier usuario afectado.
    • También invalida todas las cookies de sesión, ya que pueden estar en peligro.
    • Los certificados de cliente no están en peligro.
    • Cualquier información que se intercambió desde un poco antes de la vulnerabilidad puede haber permanecido en la memoria del servidor y, por lo tanto, puede haber sido filtrada a un atacante.
    • Si alguien ha grabado una antigua conexión SSL y ha recuperado las claves de su servidor, ahora puede descifrar su transcripción. (A menos que se haya asegurado PFS , si no lo sabe, no fue así)

¿Cómo me recupero en un cliente?

Hay solo algunas situaciones en las que las aplicaciones del cliente se ven afectadas. El problema en el lado del servidor es que cualquiera puede conectarse a un servidor y explotar el error. Para explotar un cliente, se deben cumplir tres condiciones:

  • El programa cliente usó una versión con errores de la biblioteca OpenSSL para implementar el protocolo SSL.
  • El cliente se conectó a un servidor malicioso. (Por ejemplo, si se conectó a un proveedor de correo electrónico, esto no es una preocupación). Esto tenía que ocurrir después de que el propietario del servidor se diera cuenta de la vulnerabilidad, por lo que presumiblemente después de 2014-04-07.
  • El proceso del cliente tenía datos confidenciales en la memoria que no se compartieron con el servidor. (Entonces, si acaba de ejecutar wget para descargar un archivo, no hay datos que filtrar).

Si lo hizo entre la tarde del 2014-04-07 y la actualización de su biblioteca OpenSSL, considere que los datos que se encontraban en la memoria del proceso del cliente podrían verse comprometidos.

Referencias

respondido por el Gilles 08.04.2014 - 12:02
40

Para ver qué versión de OpenSSL está instalada en Ubuntu, ejecute:

dpkg -l | grep openssl

Si ve el siguiente resultado de la versión, se debe incluir el parche para CVE-2014-0160.

ii  openssl      1.0.1-4ubuntu5.12      Secure Socket Layer (SSL)...

Al mirar enlace , se muestra qué tipo de errores se corrigieron:

...
 SECURITY UPDATE: memory disclosure in TLS heartbeat extension
    - debian/patches/CVE-2014-0160.patch: use correct lengths in
      ssl/d1_both.c, ssl/t1_lib.c.
    - CVE-2014-0160
 -- Marc Deslauriers <email address hidden>   Mon, 07 Apr 2014 15:45:14 -0400
...
    
respondido por el crimi 08.04.2014 - 08:40
17

Si sus repositorios apt-get no contienen ninguna versión 1.0.1g OpenSSL precompilada, simplemente descargue las fuentes del sitio web oficial y compílelas.

Debajo de la línea de comando única para compilar e instalar la última versión de openssl.

curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install

Reemplaza el archivo binario anterior de openssl por uno nuevo a través de un enlace simbólico.

sudo ln -sf /usr/local/ssl/bin/openssl 'which openssl'

¡Eres todo bueno!

# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014

Por este publicación de blog .

NB: como se indica en la publicación del blog, esta solución no solucionará "Nginx y el servidor Apache que deben recompilarse con las fuentes 1.0.1g openSSL".

    
respondido por el Quentin Rousseau 08.04.2014 - 04:18
12

Para aquellos que no quieren hacer una actualización de paquete en todo el servidor. Leí un montón de estas guías hoy y apt-get upgrade openssl === apt-get upgrade esto aplicará todas las correcciones de seguridad requeridas por su máquina. Maravilloso, a menos que esté explícitamente apoyándose en una versión de paquete anterior en alguna parte.

Esta es la acción mínima requerida en Ubuntu 12.04 LTS con Apache 2:

  • Vaya a esta dirección y compruebe que tiene la vulnerabilidad. Debe usar la DIRECCIÓN EXTERNA DIRECTA DE SU SERVIDOR WEB. Si usa un loadbalancer (por ejemplo, ELB), es posible que no se contacte directamente con su servidor web.

  • Ejecute el siguiente 1 liner para actualizar paquetes y reiniciar. Sí. Vi a todas las guías decir que debería tener una marca de tiempo posterior al 4 de abril de 2014, este no parece ser el caso para mí.

    apt-get update & amp; & amp; apt-get install openssl libssl1.0.0 & amp; & amp; /etc/init.d/apache2 restart

  • Asegúrese de tener instaladas las versiones apropiadas del paquete y verifique una vez más su vulnerabilidad.

Los paquetes de claves son los siguientes, determiné esta información usando el siguiente comando y luego eliminé el fragmento (no necesita saber mucho sobre el estado de mis máquinas).

$ dpkg -l | grep ssl

ii  libssl-dev                       1.0.1-4ubuntu5.12          SSL development libraries, header files and documentation
ii  libssl1.0.0                      1.0.1-4ubuntu5.12          SSL shared libraries
ii  openssl                          1.0.1-4ubuntu5.12          Secure Socket Layer (SSL)* binary and related cryptographic tools

1.0.1-4ubuntu5.12 NO debe contener la vulnerabilidad. Asegúrese de que este es el caso al volver al sitio web a continuación y probar su servidor web.

enlace

    
respondido por el Adrian 08.04.2014 - 23:56
11

Noté que muchos comentaristas aquí necesitan ayuda con urgencia. Están siguiendo las instrucciones, actualizando y reiniciando, y aún siendo vulnerables al usar algunos de los sitios web de prueba.

Debes verificar que no tengas paquetes en espera como libssl.

:~$ sudo apt-get upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  libssl-dev (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  libssl1.0.0 (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  linux-image-virtual (3.2.0.31.34 => 3.2.0.60.71)
  linux-virtual (3.2.0.31.34 => 3.2.0.60.71)
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

Para actualizar esos apt-mark unhold libssl1.0.0 (por ejemplo). Luego actualice: apt-get upgrade -V . Luego, reinicie los servicios afectados.

    
respondido por el Domino 08.04.2014 - 19:51

Lea otras preguntas en las etiquetas