Vulnerabilidade na subsistem PIDFD do Linux que permite a leitura de arquivos inacessíveis ao usuário.

Foi identificada uma quinta vulnerabilidade crítica no núcleo do Linux (1, 2, 3) nas últimas duas semanas, permitindo que um usuário eleve suas permissões no sistema. Dois exploits funcionais foram publicados: sshkeysign_pwn permite que um usuário não privilegiado leia o conteúdo das chaves SSH do host fechadas em /etc/ssh/ssh_host_*_key, enquanto chage_pwn permite a leitura do arquivo /etc/shadow com hashes de senhas de usuários.

As informações sobre a vulnerabilidade não estavam planejadas para divulgação, mas um dos pesquisadores de segurança conseguiu determinar a essência da vulnerabilidade com base no patch proposto para o núcleo, permitindo a leitura de arquivos disponíveis apenas para o usuário root, como /etc/shadow. A mudança incorporada ao núcleo ajustou a lógica de uso da função get_dumpable() no ptrace ao determinar o nível de acesso na função ptrace_may_access().

A vulnerabilidade é diretamente causada por uma condição de competição que leva à possibilidade de acesso não privilegiado a um descritor de arquivo pidfd após a chamada a um arquivo de um processo suid root. No intervalo entre a abertura do arquivo e a queda de privilégios no programa suid (como através da função setreuid), surge uma situação em que o aplicativo que iniciou o programa suid root pode, através do descritor pidfd, acessar um arquivo aberto no programa suid, mesmo que os permissões do arquivo não permitam isso.

A janela para exploração 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 a execução de exit_mm(), mas antes da chamada a exit_files(). Neste momento, a chamada de sistema pidfd_getfd considera que o identificador de usuário (uid) do processo chamador corresponde ao identificador que tem permissão para acessar o arquivo. Vale notar que a questão já havia sido mencionada em 2020, mas permaneceu sem correção.

No exploit que obtém o conteúdo de /etc/shadow, o ataque consiste na execução cíclica do aplicativo /usr/bin/chage com a flag suid root, que lê o conteúdo de /etc/shadow através de fork+execl. Após o processo ser bifurcado, ocorre a chamada de sistema pidfd_open e uma iteração cíclica pelos descritores pidfd disponíveis através da chamada de sistema pidfd_getfd, verificando-os através de /proc/self/fd. No exploit sshkeysign_pwn, manobras semelhantes são realizadas com o programa suid root ssh-keysign.

O identificador CVE para o problema ainda não foi atribuído, e as atualizações do núcleo e pacotes nas distribuições não foram publicadas. Nos núcleos lançados há algumas horas, 7.0.7, 6.18.30 e 6.12.88, a vulnerabilidade não foi corrigida. No momento da redação da matéria, apenas um patch pode ser usado. Atualmente, estão sendo discutidas possíveis medidas para contornar a vulnerabilidade, como definir sysctl kernel.yama.ptrace_scope=3 ou remover a flag suid root de arquivos executáveis no sistema (pelo menos das ferramentas ssh-keysign e chage, utilizadas em exploits).

Adicional: A vulnerabilidade recebeu o identificador CVE-2026-46333. Foram formadas atualizações 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 com a correção da vulnerabilidade. O status da correção das vulnerabilidades nas distribuições pode ser avaliado nas seguintes páginas: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.

Fonte: opennet.ru

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