No núcleo Linux Identificouse a quinta vulnerabilidade crítica (1, 2, 3) das últimas dúas semanas, que permite a un usuario escalar os seus privilexios no sistema. Publicáronse dúas vulnerabilidades que funcionan: sshkeysign_pwn permite a un usuario sen privilexios ler o contido das claves SSH privadas do host /etc/ssh/ssh_host_*_key e chage_pwn permite a un usuario sen privilexios ler o contido do ficheiro /etc/shadow que contén os hashes do contrasinal do usuario.
A vulnerabilidade non estaba pensada para ser divulgada, pero un investigador de seguridade puido identificala, baseándose nun parche do kernel proposto, que permite a lectura de ficheiros accesibles só para o usuario root, como /etc/shadow. O cambio no kernel axustou a lóxica para usar a función get_dumpable() en ptrace ao determinar os niveis de acceso na función ptrace_may_access().
A vulnerabilidade está causada por unha condición de carreira que permite o acceso sen privilexios ao descritor de ficheiro pidfd despois de acceder a un ficheiro desde un proceso raíz suid. Entre abrir o ficheiro e restablecer os privilexios no programa suid (por exemplo, a través da función setreuid), xorde unha situación na que unha aplicación que executa o programa raíz suid pode acceder a un ficheiro aberto polo programa suid a través do descritor pidfd, mesmo se os permisos do ficheiro non o permiten.
A xanela explotable xorde porque a función "__ptrace_may_access()" omite a comprobación do acceso a ficheiros se o campo task->mm está definido como NULL despois de exit_mm() pero antes de que se chame a exit_files(). Actualmente, a chamada ao sistema pidfd_getfd asume que o ID de usuario (uid) do proceso que realiza a chamada coincide co ID de usuario autorizado para acceder ao ficheiro. Cómpre sinalar que este problema xa se abordou en 2020, pero segue sen corrixirse.
No exploit que obtén o contido de /etc/shadow, o ataque consiste en lanzar repetidamente a aplicación /usr/bin/chage mediante fork+execl co indicador suid root, que le o contido de /etc/shadow. Despois de que o proceso se bifurque, execútase a chamada do sistema pidfd_open e realízase un bucle de descritores pidfd dispoñibles mediante a chamada do sistema pidfd_getfd e a súa verificación mediante /proc/self/fd. No exploit sshkeysign_pwn, realízanse manipulacións similares co programa suid root ssh-keysign.
Aínda non se lle asignou un identificador CVE ao problema e non se publicaron actualizacións do kernel nin do paquete nas distribucións. A vulnerabilidade segue sen ser parcheada nos kernels 7.0.7, 6.18.30 e 6.12.88, publicados hai unhas horas. No momento de escribir isto, só se pode usar o parche. Estanse a discutir posibles solucións alternativas, como configurar sysctl kernel.yama.ptrace_scope=3 ou eliminar o indicador de root suid dos executábeis do sistema (polo menos das utilidades ssh-keysign e chage utilizadas nos exploits).
Actualización: A vulnerabilidade foille asignada o identificador CVE-2026-46333. Xeráronse actualizacións do núcleo. Linux 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 e 5.10.256 con correccións de vulnerabilidades. O estado das correccións de vulnerabilidades para estas distribucións pódese avaliar nestas páxinas: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.
Fonte: opennet.ru
