Se ha corregido una vulnerabilidad en el núcleo de Linux, conocida de manera no oficial como ssh-keysign-pwn. El problema permite a un usuario local no privilegiado leer archivos que deberían ser accesibles solo para root, incluyendo claves privadas de host SSH y, en ciertos escenarios, /etc/shadow. Hasta el momento de la publicación, no se había asignado un CVE separado para el problema.
A pesar de su nombre, no se trata de un error en OpenSSH como servidor de red sshd, sino de un defecto en la lógica del núcleo de Linux relacionado con las verificaciones de ptrace y el acceso a los descriptores de archivos de otro proceso a través de pidfd_getfd(2). La utilidad ssh-keysign de OpenSSH resultó ser un ejemplo conveniente de explotación, ya que trabaja con claves de host privadas que usualmente pertenecen a root y no están disponibles para usuarios normales.
La esencia del error es que la función __ptrace_may_access() manejaba de manera incorrecta el estado de un proceso que ya había perdido la estructura de memoria mm, aunque los descriptores de archivo todavía estaban abiertos. Durante la finalización de un proceso, el núcleo llama a exit_mm() antes de cerrar los archivos a través de exit_files(). En este breve intervalo, el proceso parece no tener un espacio de direcciones de usuario normal, pero sus archivos abiertos aún existen. Debido a esto, la verificación del estado 'dumpable' podría ser eludida, y pidfd_getfd() podría acceder a un descriptor de archivo ajeno con un UID coincidente.
Un escenario práctico se construye alrededor de programas setuid, que primero abren un archivo sensible con derechos de root, luego reducen sus privilegios y finalizan, aún teniendo un descriptor abierto. En la descripción publicada, como ejemplo se menciona ssh-keysign: abre /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key, luego reduce sus derechos y puede finalizar si EnableSSHKeysign está deshabilitado. Estas claves deberían estar disponibles solo para root, ya que se utilizan para la autenticación basada en hosts.
Un segundo ejemplo es chage, que puede abrir /etc/shadow, luego reducir los derechos efectivos y finalizar. Como resultado, el ataque no necesariamente proporciona inmediatamente una shell con derechos de root, pero permite obtener el contenido de archivos que generalmente se consideran extremadamente confidenciales. La filtración de /etc/shadow es peligrosa por la posibilidad de un posterior ataque de fuerza bruta fuera de línea, y la filtración de claves privadas de host SSH conlleva el riesgo de suplantación de host o ataques en scripts SSH de confianza.
La corrección ya ha sido aceptada en la rama principal de Linux. El commit 31e62c2ebbfd con el título ptrace: lógica ‘get_dumpable()’ ligeramente más sensata cambia el comportamiento de la verificación de dumpability: el núcleo ahora conserva el estado user_dumpable cuando desaparece mm y requiere una verificación correcta de CAP_SYS_PTRACE para eludir. El parche afecta a include/linux/sched.h, kernel/exit.c y kernel/ptrace.c.
La vulnerabilidad fue reportada por Qualys y corregida por Linus Torvalds el 14 de mayo de 2026. Phoronix señala que al momento de la publicación, el problema afectaba todas las versiones del núcleo de Linux hasta el estado actual del árbol mainline antes de la corrección. El autor de PoC también indica que los núcleos anteriores al commit 31e62c2ebbfd son vulnerables, incluidas las ramas estables hasta el 14 de mayo.
Es importante señalar que no se requiere cargar módulos específicos del núcleo para la explotación, como en varias vulnerabilidades recientes de LPE. Es suficiente con tener acceso local no privilegiado al sistema y que haya un proceso helper privilegiado adecuado. El desarrollador de Debian, Daniel Baumann, señaló, indica que este problema debe resolverse mediante una actualización del núcleo y el posterior reinicio en el núcleo corregido.
En el repositorio publicado con la demostración, se alega que verifica en Raspberry Pi OS Bookworm con el núcleo 6.12.75, Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Arch y CentOS 9. Esta lista debe considerarse como información del autor de PoC, y no como un listado exhaustivo: dado que el error está en la lógica general del núcleo, la cobertura real depende de la versión del núcleo y de la disponibilidad del parche backport en el distribuidor específico.
Para los administradores, la recomendación principal es simple: instalar el paquete de núcleo actualizado de su distribución y reiniciar el sistema. Si hay razones para creer que ya hubo acceso local no privilegiado por parte de un atacante en la máquina, después de la actualización, se deben considerar además la rotación de las claves host SSH y la verificación de las cuentas en /etc/shadow, ya que la vulnerabilidad en sí está relacionada con la lectura de archivos sensibles y no solo con eludir la verificación de acceso.
En Debian ya se ha comenzado a trabajar en la transferencia de la corrección: Baumann informó sobre el cherry-pick del commit upstream en trixie-fastforward-backports y el envío de una solicitud de fusión para Debian sid. En la solicitud de fusión se indica explícitamente que se transfiere el commit 31e62c2 para corregir la lógica dumpability de ptrace, lo que permite leer archivos de root a un usuario no privilegiado.
Fuente: linux.org.ru
