CVE-2025-40341 in Linux
Sumário
de VulDB • 24/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
futex: Não vazar o ponteiro robust_list em caso de corrida com exec()
sys_get_robust_list() e compat_get_robust_list() usam ptrace_may_access() para verificar se a tarefa que chama está autorizada a acessar o ponteiro robust_list de outra tarefa. Esta verificação apresenta uma condição de corrida (race condition) contra um exec() concorrente no processo alvo.
Durante o exec(), uma tarefa pode transitar de um binário não privilegiado para um privilegiado (por exemplo, um binário setuid), e suas credenciais/mapeamentos de memória podem ser alterados. Se get_robust_list() executar ptrace_may_access() antes dessa transição, ela poderá permitir erroneamente o acesso a informações sensíveis após o alvo se tornar privilegiado.
Um acesso com condição de corrida permite que um atacante explore uma janela durante a qual ptrace_may_access() é aprovado antes que um processo alvo transite para um estado privilegiado via exec().
Por exemplo, considere uma tarefa não privilegiada T prestes a executar um binário setuid-root. Uma tarefa atacante A chama get_robust_list(T) enquanto T ainda está sem privilégios. Como ptrace_may_access() verifica as permissões com base nas credenciais atuais, o teste tem sucesso. No entanto, se T iniciar exec imediatamente em seguida, ele se tornará privilegiado e poderá alterar seus mapeamentos de memória. Como get_robust_list() prossegue acessando T->robust_list sem sincronizar com exec(), pode ler ponteiros do espaço do usuário (user-space) provenientes de um processo agora privilegiado.
Isso viola as restrições de acesso pós-exec pretendidas e poderia expor endereços de memória sensíveis ou ser usado como uma primitiva em uma cadeia de exploração maior. Consequentemente, a condição de corrida pode levar à divulgação não autorizada de informações através dos limites de privilégio e representa um risco potencial para a segurança.
Adquira um bloqueio de leitura (read lock) em signal->exec_update_lock antes de invocar ptrace_may_access() e acessar robust_list/compat_robust_list. Isso garante que o estado exec da tarefa alvo permaneça estável durante a verificação, permitindo uma validação consistente e sincronizada das credenciais.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.