O Diário do Analista
Vol. 2  |  N. 5  |  Pp. 143–146  |  2026  |  ISSN xxxx-xxxx

Alerta: Nova vulnerabilidade de Linux permite a leitura de arquivos sensíveis por usuários não-privilegiados (CVE-2026-46333)

Foi catalogada, recentemente, uma vulnerabilidade para máquinas Linux apelidada de “ssh-keysign-pwn” [1], a qual permite que usuários comuns (i.e., não privilegiados) leiam o conteúdo de arquivos sensíveis que normalmente necessitam de permissões de superusuário para serem lidos. Esta vulnerabilidade, que está sendo rastreada como CVE-2026-46333 [3] com CVSS Versão 3.0 de 5.5, foi divulgada em 15 de Maio de 2026 por pesquisadores da Qualys e já possui patches disponíveis.


Contexto e Origem

Esta vulnerabilidade explora uma falha de programação presente na função __ptrace_may_access() do kernel do Linux, permitindo que o atacante se aproveite de uma condição de corrida em um processo privilegiado que está no processo de ser desligado para roubar seus file descriptors e, com isso, acessar arquivos privilegiados mesmo sendo um usuário comum.

O conceito que abrange este problema já havia sido descrito em Outubro de 2020 pelo desenvolvedor do kernel Jann Horn, mas alterações que impedissem esse tipo de comportamento não chegaram ao código final do kernel. Quase seis anos depois, em Maio de 2026, pesquisadores da empresa de segurança Qualys reportaram a vulnerabilidade aos desenvolvedores do kernel e uma correção foi adicionada ao código já no dia 14 de Maio, um dia antes da divulgação oficial.

Meras horas depois da correção, o usuário _SiCk (@0xdeadbeefnetwork) disponibilizou em seu GitHub [1] duas provas de conceito da exploração da vulnerabilidade, demonstrando leituras, por parte de um usuário não-privilegiado, dos arquivos /etc/ssh/ssh_host_*_key e /etc/shadow.

 


Como a vulnerabilidade é explorada

Um atacante pode executar um processo não privilegiado que acessa arquivos privilegiados durante sua execução, como ssh-keysign ou chage -l, e, durante o término do processo, tentar executar diversas vezes uma leitura de informações sobre o processo. Durante o término do processo, a memória do processo é limpa antes que os arquivos abertos por este sejam fechados. Durante este intervalo de tempo entre a saída da memória e a dos arquivos, uma falha de programação faz com que algumas verificações de permissão sobre inspeção do processo terminante sejam ignoradas, permitindo ao atacante que “roube” os file descriptors que estavam sendo utilizados pelo processo, conseguindo, assim, ler o conteúdo de arquivos sensíveis mesmo não tendo privilégios de superusuário.

 

Confira o apêndice técnico para informações mais detalhadas sobre o funcionamento da vulnerabilidade.

 


Versões afetadas

Todos os kernels do Linux anteriores ao commit 31e62c2ebbfd — ou, de forma mais geral, todos lançados até antes de 14 de Maio — são vulneráveis [4].
Referência do upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/?id=31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a.

 


Mitigações

Mitigação permanente:

Atualize o kernel Linux de todas suas máquinas para as versões mais recentes. Versões mais recentes da distribuição LTS (isto é, desde as versões LTS 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207, e 5.10.256 [2]) já incluem as correções necessárias para mitigar a vulnerabilidade.

Mitigação temporária:

Caso a atualização não seja possível no momento, pode-se, também, mitigar de forma direta e, idealmente, temporária ao se restringir o escopo do ptrace para garantir que usuários não-root não consigam inspecionar os próprios processos com os seguintes comandos:
echo "kernel.yama.ptrace_scope=2" > /etc/sysctl.d/ptrace-restrict.conf
sysctl --system

Esta mitigação efetivamente bloqueia todas as formas de exploração conhecidas, mas pode interferir com demais workflows de debugging que possam ser desejáveis na máquina. Além disso, podem existir outros métodos ainda não conhecidos de explorar essa vulnerabilidade. Caso queira uma mitigação mais rigorosa, pode-se limitar, com o seguinte código, ainda mais o escopo do ptrace para o nível 3, que desabilita qualquer tipo de profiling de processos, oferecendo maior segurança, mas a troco de possíveis maiores instabilidades, requerendo testes amplos antes da implementação efetiva:

echo "kernel.yama.ptrace_scope=3" > /etc/sysctl.d/ptrace-restrict.conf
sysctl --system

Visto as limitações que impõe, caso seja usado este método, é ideal que seja tratado como solução temporária e que eventualmente se resolva ao atualizar o kernel para versões mais recentes. Para reverter as mitigações temporárias, basta remover o arquivo /etc/sysctl.d/ptrace-restrict.confe executar novamente o comando sysctl --system.

 


Apêndice Técnico

A seguir está uma explicação um pouco mais detalhada e técnica do funcionamento da vulnerabilidade, para os curiosos…

A função __ptrace_may_access() verifica se o processo que a executou possui permissões para inspecionar ou interagir com outro determinado processo. A vulnerabilidade ocorre devido ao fato de que, quando um processo é terminado, sua memória (mm) é limpada (através da chamada exit_mm()) consideravelmente antes que o processo feche arquivos que possuia em aberto (com exit_files(). Quando a função __ptrace_may_access() é executada em um processo que já não gerencia mais memória pois já executou o passo exit_mm(), as verificações que executa para determinar se um processo é inspecionável (dumpable) são ignoradas e, portanto, qualquer usuário pode, antes que um processo privilegiado feche seus arquivos, copiar os file descriptors que este usava e acessar o conteúdo de quaisquer arquivos que o processo gerenciava, independente de seus privilégios [4] .

Na prática, um atacante pode executar um comando que acessa, de forma privilegiada, arquivos sensiveis acessíveis apenas a nível de superusuário, e, durante o processo de saída deste, executa diversas vezes a função pidfd_getfd(), que tenta obter os file descriptors do processo em questão, obtendo sucesso caso a função consiga ser executada no periodo de tempo entre o exit_mm() e o exit_files() do processo terminante (geralmente dentro de 100 a 2000 tentativas de execução da função). A partir disso, pode manipular os file descriptors para obter o conteúdo dos arquivos [1].

 


Referências

[1] 0XDEADBEEFNETWORK. GitHub – 0xdeadbeefnetwork/ssh-keysign-pwn: Steal SSH host private keys and /etc/shadow via the ptrace_may_access mm-NULL bypass + pidfd_getfd. Pre-31e62c2ebbfd kernels. Disponível em: https://github.com/0xdeadbeefnetwork/ssh-keysign-pwn/. Acesso em: 19 maio. 2026.

[2] JZB. Seven new stable kernels with patches for CVE-2026-46333. Disponível em: https://lwn.net/Articles/1073060/. Acesso em: 19 maio. 2026.

[3] NIST. NVD – CVE-2026-46333. Disponível em: <https://nvd.nist.gov/vuln/detail/CVE-2026-46333>. Acesso em: 19 maio. 2026.

[4] WRIGHT, J. ssh-keysign-pwn (CVE-2026-46333) Patches Released. Disponível em: https://almalinux.org/blog/2026-05-15-ssh-keysign-pwn-cve-2026-46333/. Acesso em: 19 maio. 2026.

Tags: , , , , , , .

Categorias: CentOS, CVE, Debian, Falhas, Kernel, Linux, Linux Kernel, LPE, OpenSUSE, Patches, PoC, Red Hat, Ubuntu, Vulnerabilidade.