剣 KENSAI
Alta CVE-2024-6387 Julio de 2024 · 9 min de lectura

CVE-2024-6387: regreSSHion — RCE en OpenSSH después de 18 años

Una condición de carrera en el manejador de señales de OpenSSH permite a atacantes no autenticados ejecutar código arbitrario como root en servidores Linux que ejecutan glibc. Bautizada como «regreSSHion», es una regresión de CVE-2006-5051 que se reintrodujo accidentalmente en 2020. Afecta aproximadamente a 14 millones de servidores SSH expuestos a Internet. CVSS 8.1 ALTA.


8.1
ALTA
AtributoValor
ID de CVECVE-2024-6387
Vector CVSSAV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-364: Condición de carrera en el manejador de señales
Publicación1 de julio de 2024
ExplotaciónTeórica — todavía no se ha confirmado ninguna RCE en entornos reales

¿Qué es CVE-2024-6387?

CVE-2024-6387 es una condición de carrera en el manejador de señales del servidor de OpenSSH (sshd). Cuando un cliente no se autentica dentro del plazo de LoginGraceTime (valor predeterminado: 120 segundos), sshd llama a SIGALRM para finalizar la conexión. El manejador de señales llama a funciones que no son seguras para señales asíncronas — concretamente syslog() —, lo que puede corromper el estado del heap cuando se ejecutan simultáneamente con otras operaciones.

Los investigadores de Qualys que descubrieron la vulnerabilidad la denominaron «regreSSHion» porque un error idéntico (CVE-2006-5051) se corrigió en 2006, pero la corrección se eliminó involuntariamente cuando OpenSSH 8.5p1 se publicó en octubre de 2020, lo que significa que la vulnerabilidad volvió a existir silenciosamente durante casi cuatro años antes de ser descubierta.

⚠ La magnitud de la exposición

Los datos de Shodan y Censys en el momento de la divulgación mostraban aproximadamente 14 millones de servidores OpenSSH accesibles desde Internet que ejecutaban versiones vulnerables. Aunque su puntuación CVSS era Alta (no Crítica) debido al requisito AC:H (complejidad alta), la enorme cantidad de sistemas expuestos convirtió esta vulnerabilidad en una de las de mayor impacto de 2024. Todos los servidores Linux son objetivos potenciales.

Versiones afectadas

Intervalo de versiones de OpenSSHEstado
< 4.4p1Vulnerable (CVE-2006-5051 original)
4.4p1 – 8.4p1Corregida (incluye la corrección de CVE-2006-5051)
8.5p1 – 9.7p1VULNERABLE (regresión reintroducida)
9.8p1+Corregida

Requisito de glibc: El PoC de Qualys explotó la implementación de malloc de glibc. El sshd de OpenBSD no es vulnerable. Alpine Linux (que utiliza musl libc) y macOS no son vulnerables a la técnica de explotación demostrada, aunque la condición de carrera sigue existiendo.

Explicación de la condición de carrera

Los manejadores de señales de los programas en C solo deben llamar a funciones «seguras para señales asíncronas», un pequeño subconjunto de funciones de libc que pueden ejecutarse de forma segura desde un manejador de señales porque no utilizan estado compartido. La función syslog() no es segura para señales asíncronas porque utiliza malloc internamente.

# La ruta de código problemática (simplificada):
# Cuando LoginGraceTime vence:
SIGALRM → grace_alarm_handler() → syslog() → malloc() internamente
                                              ↕ CARRERA
           el hilo principal de sshd también llama a malloc() / free()

# Si ambas operaciones malloc se intercalan:
# → Corrupción del heap
# → Con suficientes intentos: disposición controlada del heap
# → Ejecución remota de código como root

La explotación requiere ganar la condición de carrera de forma fiable, lo que exige miles de intentos de conexión durante varios minutos. Esto hace que la explotación automatizada a escala de Internet sea algo más lenta que la de las vulnerabilidades típicas de «disparar y olvidar», pero los actores sofisticados con acceso persistente a un objetivo disponen de tiempo de sobra.

Dificultad de explotación

Qualys demostró una explotación fiable en sistemas de 32 bits (x86). En sistemas de 64 bits, ASLR aumenta considerablemente la dificultad. Los investigadores señalan que, con unos 10 000 intentos durante 6-8 horas, la explotación es teóricamente posible en sistemas de 64 bits, pero no publicaron un PoC funcional para x86_64.

Sin embargo, la dificultad puede reducirse mediante:

Detección

# Comprobar la versión de OpenSSH
ssh -V
sshd -V

# Comprobar la versión del paquete instalado (Debian/Ubuntu)
dpkg -l openssh-server | grep openssh

# Comprobar la versión del paquete instalado (RHEL/CentOS)
rpm -qa | grep openssh-server

# Buscar intentos de fuerza bruta indicativos de la explotación de regreSSHion
# (frecuencia de conexión muy alta desde una sola IP, todos fallidos durante el período de gracia)
grep "Connection closed by" /var/log/auth.log | 
  awk '{print $9}' | sort | uniq -c | sort -rn | head -20

# Buscar inicios de sesión fallidos con una frecuencia alta
grep "Failed\|Invalid" /var/log/auth.log | 
  awk '{print 1}' | sort | uniq -c | sort -rn | head -10

Mitigación

  1. Actualizar OpenSSH a 9.8p1 o posterior: Todas las distribuciones principales publicaron parches pocos días después de la divulgación. apt update && apt upgrade openssh-server o equivalente.
  2. Establecer LoginGraceTime en 0: Configurar LoginGraceTime 0 en /etc/ssh/sshd_config impide que se llame al manejador SIGALRM, eliminando la condición de carrera (aunque también elimina el tiempo límite de gracia):
    echo "LoginGraceTime 0" >> /etc/ssh/sshd_config
    systemctl reload sshd
  3. Limitar la frecuencia de las conexiones SSH: Configurar fail2ban o la limitación de frecuencia de iptables para impedir los miles de intentos de conexión necesarios para la explotación
  4. Restringir el acceso SSH por IP: Limitar sshd a intervalos de IP de administración conocidos mediante AllowUsers, ListenAddress o reglas de firewall
  5. Utilizar únicamente claves SSH: Desactivar la autenticación mediante contraseña; la autenticación basada en claves añade un sólido filtro previo a la autenticación
  6. Considerar trasladar SSH a un puerto no estándar: Reduce el ruido de los escáneres oportunistas, aunque no constituye un control de seguridad

Capacidad de detección de KENSAI

¿Cuántos de sus servidores SSH ejecutan una versión vulnerable de OpenSSH?

KENSAI inventaría todos los servidores SSH de su entorno — internos y externos — y señala al instante las versiones vulnerables a regreSSHion. No se necesitan agentes para la exposición externa.

Audite su exposición SSH →

Artículos relacionados

INTERPOL desmantela 45 000 IP maliciosas Alertas falsas de VS Code en GitHub propagan malware; un grupo proiraní atacó al director del FBI Actualización de marzo de 2026 sobre normativas de seguridad: NIS2