Vulnerabilidade em Linux- o subsistema pidfd, que permite a leitura de arquivos inacessíveis ao usuário

No núcleo Linux A quinta (1, 2, 3) vulnerabilidade crítica identificada nas últimas duas semanas permite que um usuário eleve seus privilégios no sistema. Dois exploits funcionais foram publicados: o sshkeysign_pwn permite que um usuário sem privilégios leia o conteúdo das chaves SSH privadas do host em /etc/ssh/ssh_host_*_key, e o chage_pwn permite que um usuário sem privilégios leia o conteúdo do arquivo /etc/shadow que contém os hashes das senhas dos usuários.

A vulnerabilidade não deveria ter sido divulgada, mas um pesquisador de segurança conseguiu identificá-la com base em uma proposta de correção para o kernel, permitindo a leitura de arquivos acessíveis apenas ao usuário root, como /etc/shadow. A alteração no kernel ajustava a lógica de uso da função get_dumpable() no ptrace ao determinar os níveis de acesso na função ptrace_may_access().

A vulnerabilidade é causada por uma condição de corrida que permite acesso não privilegiado ao descritor de arquivo pidfd após o acesso a um arquivo a partir de um processo root com privilégios SUID. Entre a abertura do arquivo e a redefinição dos privilégios no programa SUID (por exemplo, através da função setreuid), surge uma situação em que um aplicativo executando o programa root com privilégios SUID pode acessar um arquivo aberto pelo programa SUID através do descritor pidfd, mesmo que as permissões do arquivo não o permitam.

A vulnerabilidade surge porque a função "__ptrace_may_access()" ignora a verificação de acesso ao arquivo se o campo task->mm for definido como NULL após exit_mm(), mas antes da chamada de exit_files(). Atualmente, a chamada de sistema pidfd_getfd pressupõe que o ID de usuário (uid) do processo que a invoca corresponda ao ID de usuário autorizado a acessar o arquivo. Vale ressaltar que esse problema já havia sido abordado em 2020, mas permanece sem solução.

Na vulnerabilidade que permite obter o conteúdo de /etc/shadow, o ataque consiste em executar repetidamente o aplicativo /usr/bin/chage via fork+execl com a flag suid root, que lê o conteúdo de /etc/shadow. Após a criação do processo filho, a chamada de sistema pidfd_open é executada, e um loop pelos descritores pidfd disponíveis é realizado através da chamada de sistema pidfd_getfd e sua verificação via /proc/self/fd. Na vulnerabilidade sshkeysign_pwn, manipulações semelhantes são realizadas com o programa ssh-keysign com privilégios de root (suid root).

A vulnerabilidade ainda não recebeu um identificador CVE e não foram publicadas atualizações para o kernel e pacotes nas distribuições. Ela permanece sem correção nos kernels 7.0.7, 6.18.30 e 6.12.88, lançados há algumas horas. No momento da redação deste texto, apenas o patch pode ser utilizado. Possíveis soluções alternativas estão sendo discutidas, como definir `sysctl kernel.yama.ptrace_scope=3` ou remover a flag `suid root` dos executáveis ​​no sistema (pelo menos dos utilitários `ssh-keysign` e `chage` usados ​​nos exploits).

Atualização: A vulnerabilidade recebeu o identificador CVE-2026-46333. Atualizações do kernel foram geradas. Linux As versões 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 e 5.10.256 contêm correções de vulnerabilidades. O status das correções de vulnerabilidades para essas distribuições pode ser verificado nestas páginas: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster