¿Qué es CVE-2026-46333?
CVE-2026-46333, conocido como ptrace exit-race o ssh-keysign-pwn, es una vulnerabilidad de divulgación de información en el kernel de Linux que en la práctica equivale a una escalación de privilegios. Fue divulgada el 15 de mayo de 2026.
El fallo está en la comprobación de acceso de ptrace durante el camino de salida de procesos. Entre el momento en que el descriptor de memoria de la tarea se desvincula y el momento en que se cierra su tabla de descriptores de archivo, la comprobación de ptrace omite la salvaguarda dumpable porque el descriptor de memoria ya es NULL. Durante esa ventana un atacante local sin privilegios usa pidfd_getfd(2) (disponible en kernels 5.6 o superiores) para copiar descriptores de archivo desde procesos privilegiados que están saliendo.
Los objetivos principales son binarios SUID que abren archivos sensibles en su rutina de salida: ssh-keysign (claves privadas del host SSH) y chage (base de datos de contraseñas /etc/shadow). Con esos contenidos un atacante puede impersonar al host SSH o crackear hashes de root.
Existe prueba de concepto pública. Los parches están en desarrollo activo en el árbol upstream (commit 31e62c2ebbfd).
¿Te afecta?
La vulnerabilidad existe en cualquier kernel con el bug, pero solo es explotable en la práctica sobre kernels que incluyan pidfd_getfd(2) (Linux 5.6 o superior):
- Explotable: CloudLinux 8 LTS, CloudLinux 9, CloudLinux 10, AlmaLinux 9, AlmaLinux 10, Rocky Linux 9/10, RHEL 9/10, Ubuntu y Debian modernos.
-
Vulnerable pero no explotable (kernel 4.18 sin
pidfd_getfd): CloudLinux 7h, CloudLinux 8 base. - No afectado: CloudLinux 7.
Los entornos con CageFS activo están protegidos para sus inquilinos enjaulados (los binarios SUID objetivo no existen dentro del jaula). La mitigación a nivel de host sigue siendo necesaria.
Cómo comprobar si tu servidor está vulnerable
Verifica la versión del kernel:
uname -r
Confirma si pidfd_getfd está expuesto al espacio de usuario (sin él, el exploit público no funciona):
grep -w __NR_pidfd_getfd /usr/include/asm-generic/unistd.h 2>/dev/null || \
grep -w __NR_pidfd_getfd /usr/include/x86_64-linux-gnu/asm/unistd_64.h 2>/dev/null
Cómo mitigar
| Opción | Ideal para | ¿Reinicio? | ¿Duradero? |
|---|---|---|---|
| Instalar kernel parcheado del vendor | Todos, solución a largo plazo | Sí | Sí |
| Livepatch de KernelCare | Servidores con KernelCare | No | Sí |
Sysctl kernel.user_ptrace=0
|
Servidores CloudLinux mientras esperan el parche | No | Temporal |
Quitar SUID de ssh-keysign y chage
|
Defensa en profundidad | No | Sí |
Opción A: kernel parcheado del vendor
Versiones mínimas con la corrección (las restantes ramas están en desarrollo al momento de publicar este artículo):
- AlmaLinux / CloudLinux / Rocky 9:
kernel-5.14.0-611.54.6.el9_7 - AlmaLinux / CloudLinux / Rocky 10:
kernel-6.12.0-124.56.5.el10_1 - CloudLinux 8 LTS, CloudLinux 7h y CloudLinux 8: parches en desarrollo, sigue el aviso del fabricante.
Aplica la actualización y reinicia:
dnf -y update 'kernel*'
reboot
Opción B: livepatch de KernelCare
El livepatch está en construcción al momento de publicar este artículo. Cuando esté disponible:
kcarectl --update
kcarectl --patch-info | grep CVE-2026-46333
Opción C: sysctl kernel.user_ptrace=0 (servidores CloudLinux)
Este sysctl específico de CloudLinux deshabilita la capacidad de los usuarios sin privilegios de adjuntar ptrace a sus propios procesos, bloqueando el camino de explotación a nivel del kernel:
sysctl -w kernel.user_ptrace=0
Para persistir el ajuste tras un reinicio:
echo 'kernel.user_ptrace = 0' > /etc/sysctl.d/99-ptracenull.conf
sysctl --system
Coste: los usuarios sin privilegios no podrán usar gdb -p, strace -p ni herramientas similares sobre sus propios procesos. Para la mayoría de servidores de producción esto es aceptable.
Opción D: quitar SUID a los binarios objetivo (defensa en profundidad)
Reduce la superficie de ataque eliminando el bit SUID de los binarios que abren archivos sensibles en su salida:
chmod u-s /usr/libexec/openssh/ssh-keysign 2>/dev/null
chmod u-s /usr/bin/chage
No cubre todos los binarios SUID-root del sistema, pero corta los dos vectores conocidos del PoC público. Es complementario, no sustituye al kernel parcheado.
Después de mitigar
- Confirma el kernel en ejecución con
uname -r. - Si aplicaste el sysctl, verifica:
sysctl kernel.user_ptrace - Si tu servidor estuvo expuesto a usuarios no privilegiados sin parche, rota las claves del host SSH y fuerza el cambio de contraseñas de root y de cuentas con privilegios:
rm /etc/ssh/ssh_host_* dpkg-reconfigure openssh-server # Debian/Ubuntu sshd-keygen # familia RHEL systemctl restart sshd - Distribuye las nuevas huellas del host (
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub) a tus usuarios y herramientas de monitorización.
¿Necesitas ayuda?
Abre un ticket en soporte.telecu.cloud y menciona la referencia: CVE-2026-46333.