CVE-2024-6387 regreSSHion: detecte y corrija esta vulnerabilidad en OpenSSH

El lunes 1 de julio de 2024 se publicó una nueva CVE sobre el software OpenSSH, conocido por ser uno de los programas más utilizados para administrar servidores Linux de forma remota. Esta vulnerabilidad, registrada bajo la referencia CVE-2024-6387 y bautizada como regreSSHion, permite la ejecución de código sin autenticación y con privilegios de administrador en un servidor vulnerable.

¿Qué es OpenSSH?

OpenSSH (OpenBSD Secure Shell) es un conjunto de herramientas que permiten establecer una comunicación segura con un servidor a través de redes no seguras. OpenSSH es una implementación del protocolo SSH (Secure Shell) y se utiliza ampliamente para administrar servidores Linux: una búsqueda en Shodan.io revela, por ejemplo, la presencia de más de 23 millones de puertos OpenSSH expuestos públicamente en Internet.

¿Qué es la vulnerabilidad CVE-2024-6387?

La vulnerabilidad CVE-2024-6387 es una vulnerabilidad de alta gravedad (puntuación CVSSv3.1 de 8.1 sobre 10), mencionada en una alerta de la ANSSI (Agencia Nacional de Seguridad de los Sistemas de Información) en su boletín CERTFR-2024-ALE-009.

Esta CVE está relacionada con una condición de carrera, es decir, una situación en la que un atacante puede manipular la forma en que se ejecutan varios procesos para forzar a un programa a comportarse de una manera no prevista.

¿Cómo funciona la CVE-2024-6387?

La CVE-2024-6387 es una condición de carrera (Race Condition). Esta vulnerabilidad aprovecha el hecho de que un cliente OpenSSH que establece comunicación con un servidor OpenSSH dispone normalmente de un plazo determinado para autenticarse. Este plazo se configura mediante un parámetro llamado LoginGraceTime. Cuando se supera este tiempo, se activa de forma asíncrona una señal SIGALRM (señal de tiempo límite excedido) por parte de OpenSSH. Como recordatorio, una señal es un sistema de comunicación asíncrona entre procesos que permite indicar que ha ocurrido un evento.

La señal SIGALRM generada por LoginGraceTime es captada posteriormente por procesos que no son «async-signal-safe», es decir, que no verifican si el estado de la memoria se ha mantenido coherente entre el momento en que se emitió la señal y el momento en que se recibió. En este caso, el proceso syslog intercepta la señal SIGALRM y utiliza funciones de asignación y liberación de memoria (malloc y free).

Un atacante puede enviar datos al servidor objetivo con una clave pública SSH diseñada específicamente para este fin. Durante la lectura de esta clave pública, el servidor asignará datos en la memoria (mediante la función malloc). Si se produce una señal SIGALRM durante esta asignación de memoria, es posible activar las llamadas a malloc y free dentro de syslog de tal manera que se provoque un estado incoherente de la memoria, lo que conduce a la ejecución de código.

Cabe señalar que la explotación de esta vulnerabilidad requiere numerosos intentos y, por tanto, consume mucho tiempo (aproximadamente 8 horas en un sistema de 32 bits).

¿Cómo explotar la CVE-2024-6387 en OpenSSH?

La explotación de la CVE-2024-6387 requiere un enfoque estadístico en el que el atacante envía numerosas series de autenticación SSH y hace que la señal SIGALRM (vinculada al vencimiento del valor LoginGraceTime) se active mientras el servidor está cargando en memoria la clave pública del atacante.

En el momento de redactar este artículo, la comunidad no reconoce ningún exploit público sencillo.

CVE-2024-6387: ¿qué sistemas están afectados?

La CVE-2024-6387 afecta a una amplia familia de versiones de OpenSSH, dependiendo de sus configuraciones:

  • Ciertas configuraciones de versiones de OpenSSH estrictamente inferiores a 4.4p1 son vulnerables;
  • OpenSSH desde la versión 8.5p1 incluida hasta la versión 9.8p1 excluida.

En la práctica, dado que OpenSSH rara vez se utiliza directamente en una de estas versiones, sino que se instala mediante los gestores de paquetes de las distribuciones Linux, podemos establecer la siguiente lista:

  • Debian (fuente) : Debian 11 no afectado; Debian 12 vulnerable en 1:9.2p1-deb12u3; Debian SID vulnerable en 1:9.7p1-7.
  • Alpine Linux : Edge vulnerable en 9.8_p1-r0; 3.17 en 9.8_p1-r6; 3.18 en 9.3_p2-r2; 3.19 en 9.6_p1-r1.
  • Amazon Linux (fuente) : Amazon Linux 2023 vulnerable en 8.7p1-8.amzn2023.0.11.
  • ArchLinux (fuente) : vulnerable en 9.8p1-1.
  • Oracle Linux (fuente) : versiones 6, 7 y 8 no afectadas; Oracle Linux 9 vulnerable en 8.7p1-38.0.2.el9.
  • Palo Alto (fuente) : ningún producto afectado.
  • Red Hat (fuente) : RHEL 6, 7 y 8 no afectados; RHEL 9 vulnerable en la versión 8.7p1-38.el9_4.1.
  • SUSE (fuente) : SUSE 15 SP6 vulnerable en la versión 9.6p1-150600.6.3.1.
  • Ubuntu (fuente) : 22.04 vulnerable en la versión 1:8.9p1-3ubuntu0.10; 23.10 en la 1:9.3p1-1ubuntu3.6; 24.04 en la 1:9.6p1-3ubuntu13.3.
  • VMware PhotonOS (fuente) : PhotonOS 4 vulnerable en la versión 8.9p1-8.ph4.x86_64; PhotonOS 5 en la 9.3p2-9.ph5.x86_64.

Es muy probable que otras distribuciones se pronuncien en las próximas horas sobre su exposición a esta vulnerabilidad, por lo que esta página se actualizará en consecuencia.

Utilizo un sistema afectado por CVE-2024-6387, ¿qué debo hacer?

Cyberwatch recomienda aplicar a la mayor brevedad posible los parches de seguridad proporcionados por su distribución.

Además, Cyberwatch recomienda revisar los registros de SSHD para controlar todas las conexiones entrantes.

Si no fuera posible realizar una actualización, establecer LoginGraceTime en 0 permite neutralizar la vulnerabilidad, aunque puede provocar una pérdida de disponibilidad del servidor. Por lo tanto, se recomienda encarecidamente implementar los parches de seguridad.

¿Cómo detectar la CVE-2024-6387?

Compruebe si utiliza alguna de las versiones de OpenSSH mencionadas anteriormente en este artículo.

Los usuarios de la plataforma CTEM de Cyberwatch ya pueden detectar esta vulnerabilidad desde el 1 de julio de 2024. No dude en contactar con nuestro equipo para cualquier solicitud de información.

Historial de cambios

01/07/2024 a las 23:33 GMT+2: versión inicial
02/07/2024 a las 11:30 GMT+2: adición de sistemas vulnerables
03/07/2024 a las 01:25 GMT+2: adición de sistemas vulnerables tras nuevas publicaciones de los editores
03/07/2024 a las 21:15 GMT+2: adición del boletín de seguridad de Red Hat con parche.

Gracias por enviar el formulario.