Saltar al contenido principal Saltar a la búsqueda Saltar a la navegación principal
Menú
Importante Ciberseguridad Puntuación: 8/10

Vulnerabilidad en el kernel de Linux: una condición de carrera permite leer archivos ajenos

Una vulnerabilidad en la gestión de memoria del kernel de Linux permite a usuarios locales leer archivos protegidos como claves SSH o /etc/shadow. Ya hay un parche disponible.

¿Qué ha ocurrido?

Un investigador de seguridad con el seudónimo _SiCK ha publicado en Github varios exploits de prueba de concepto (PoC) que aprovechan una vulnerabilidad en la gestión de memoria y procesos del kernel de Linux. La brecha permite a usuarios locales sin privilegios especiales leer, bajo ciertas condiciones, archivos que en principio solo son accesibles para el usuario root. Se trata ya de la cuarta vulnerabilidad en pocos días que permite a usuarios de Linux escalar sus privilegios.

El ejemplo PoC con las consecuencias más graves se llama ssh-keysign-pwn. Este extrae la clave privada SSH de la máquina, un archivo que en circunstancias normales solo es accesible para el usuario root. Otro ejemplo utiliza el programa "chage" para leer el archivo de contraseñas /etc/shadow durante su ejecución.

Los detalles

La causa de la vulnerabilidad se encuentra en las profundidades del kernel: la función ptrace_may_access() falla de forma demasiado permisiva (el llamado "fail open") en procesos que se encuentran en fase de finalización. Si un atacante gana una condición de carrera, es decir, una competencia entre varios procesos que se ejecutan simultáneamente, puede acceder, a pesar de no tener los permisos necesarios, a archivos que el proceso moribundo había abierto previamente. Por lo tanto, potencialmente se ven afectados todos los archivos abiertos por programas con privilegios de root (setuid root), como /etc/shadow o /etc/ssh/ssh_host_key.

El fallo fue descubierto por la empresa de seguridad Qualys. El administrador de Linux, Linus Torvalds, lo solucionó el jueves por la tarde. Poco después, el fundador de grsecurity, Brad Spengler, llamó la atención sobre el fallo en un breve análisis publicado en la red social X, lo que a su vez despertó el interés de _SiCK por desarrollar sus propios exploits. Hasta el momento no existe un identificador CVE oficial para esta vulnerabilidad.

Es destacable que el experto en seguridad de Google Jann Horn ya había detectado este fallo hace varios años. En aquel momento ya había propuesto una solución, pero esta no llegó a implementarse. El kernel de Linux 7.0.8 contiene ahora exclusivamente la corrección para la vulnerabilidad explotada por ssh-keysign-pwn. El administrador del kernel Greg Kroah-Hartman comentó la situación en el Fediverso con una observación autoirónica sobre un "gran botón" en su escritorio para lanzar nuevas versiones del kernel.

Contextualización

Para el sector de la tecnología de seguridad, esta vulnerabilidad es relevante por varios motivos. Los sistemas de control de acceso, videovigilancia y gestión de alarmas suelen ejecutarse en servidores basados en Linux o dispositivos embebidos. Si usuarios locales —por ejemplo, a través de cuentas de servicio comprometidas o accesos insuficientemente protegidos— pueden leer archivos protegidos por root, como claves SSH o archivos de contraseñas, esto abre la puerta a ataques posteriores contra toda la infraestructura.

Especialmente crítico es el hecho de que la vulnerabilidad no es nueva: ya se conocía desde hace años, pero no se había corregido. Esto demuestra de forma ejemplar la importancia de una gestión continua de parches, incluso para sistemas aparentemente estables y maduros. Dado que la vulnerabilidad es, en principio, aplicable a cualquier archivo ejecutable con privilegios de root (setuid root), la superficie de ataque es potencialmente muy amplia y no se limita a los ejemplos PoC publicados hasta ahora.

Consejos prácticos

  • Los administradores de sistemas pueden aplicar de forma provisional el comando "echo 3 > /proc/sys/kernel/yama/ptrace_scope" como solución para todos los casos conocidos hasta ahora de esta vulnerabilidad.
  • La corrección oficial ya está incluida en el kernel de Linux 7.0.8; los sistemas afectados deberían actualizarse cuanto antes en cuanto la distribución correspondiente ofrezca el paquete de kernel correspondiente.
  • Hasta que estén disponibles los paquetes de distribución parcheados, la solución alternativa mencionada debería aplicarse con prioridad, especialmente en servidores con datos de acceso sensibles (claves SSH, archivos de contraseñas) y en sistemas críticos para la seguridad, como servidores de control de acceso o videovigilancia.
  • En general, se recomienda revisar qué cuentas de usuario locales tienen acceso a los sistemas afectados, con el fin de reducir la superficie de ataque frente a exploits de condición de carrera en general.

Perspectivas

Dado que las distribuciones de Linux, tanto grandes como pequeñas, deben ahora incorporar y distribuir la corrección en nuevos paquetes de kernel, es previsible, según la experiencia, cierto retraso hasta que todos los sistemas en producción queden protegidos. Durante esta fase de transición, la solución alternativa descrita mediante el ajuste de Yama ptrace sigue siendo la medida inmediata más importante para los administradores.

Dado que ya se trata de la cuarta vulnerabilidad comparable en pocos días, cabe esperar que los investigadores de seguridad y los desarrolladores del kernel sigan estudiando intensamente la gestión de memoria y procesos del kernel de Linux. Para los operadores de infraestructuras críticas para la seguridad —desde sistemas de alarma y videovigilancia hasta soluciones de control de acceso—, el incidente pone de relieve la necesidad de mantener procesos de gestión de parches estrictamente coordinados e implementar con rapidez incluso las actualizaciones del kernel aparentemente menores.