Ir para o conteúdo principal Saltar para a pesquisa Saltar para a navegação principal
Menu
Importante Cibersegurança Pontuação: 8/10

Falha no Kernel Linux: Race Condition Permite Leitura de Ficheiros Alheios

Uma vulnerabilidade na gestão de memória do kernel Linux permite a utilizadores locais ler ficheiros protegidos, como chaves SSH ou /etc/shadow. Já existe uma correção disponível.

O que aconteceu?

Um investigador de segurança com o pseudónimo _SiCK publicou no Github vários exploits de prova de conceito (PoC) que exploram uma vulnerabilidade na gestão de memória e de processos do kernel Linux. A falha permite que utilizadores locais sem privilégios especiais, sob determinadas condições, leiam ficheiros que normalmente só são acessíveis ao utilizador root. Trata-se já da quarta vulnerabilidade em poucos dias que permite a utilizadores Linux uma escalada de privilégios.

O exemplo PoC com as consequências mais graves chama-se ssh-keysign-pwn. Ele lê a chave privada SSH da máquina — um ficheiro que, em circunstâncias normais, só é acessível ao utilizador root. Outro exemplo utiliza o programa "chage" para ler o ficheiro de palavras-passe /etc/shadow durante a sua execução.

Os detalhes

A causa da vulnerabilidade encontra-se nas profundezas do kernel: a função ptrace_may_access() falha de forma demasiado permissiva ("fail open") em processos que se encontram em processo de terminação. Se um atacante conseguir ganhar uma race condition, ou seja, uma disputa entre vários processos a decorrer simultaneamente, pode, apesar de não ter permissões, aceder a ficheiros que o processo em terminação tinha aberto anteriormente. Estão potencialmente afetados todos os ficheiros abertos por programas com privilégios root (setuid root), como /etc/shadow ou /etc/ssh/ssh_host_key.

A falha foi descoberta pela empresa de segurança Qualys. O responsável pelo Linux, Linus Torvalds, corrigiu-a na tarde de quinta-feira. Pouco depois, o fundador do grsecurity, Brad Spengler, chamou a atenção para a falha numa breve análise na rede social X, o que, por sua vez, despertou o interesse de _SiCK em desenvolver os seus próprios exploits. Até ao momento, não existe um identificador CVE oficial para esta vulnerabilidade.

É digno de nota que o erro já tinha sido detetado há vários anos pelo especialista em segurança da Google, Jann Horn. Na altura, ele já tinha proposto uma solução — que, no entanto, não foi implementada. O kernel Linux 7.0.8 contém agora exclusivamente a correção para a vulnerabilidade explorada pelo ssh-keysign-pwn. O responsável pelo kernel, Greg Kroah-Hartman, comentou a situação no Fediverso com uma observação autoirónica sobre um "grande botão" na sua secretária para lançar novas versões do kernel.

Enquadramento

Para o setor da tecnologia de segurança, esta vulnerabilidade é relevante por vários motivos. Sistemas de controlo de acessos, videovigilância e gestão de sistemas de alarme funcionam frequentemente em servidores baseados em Linux ou em dispositivos embutidos. Se utilizadores locais — por exemplo, através de contas de serviço comprometidas ou acessos insuficientemente protegidos — conseguirem ler ficheiros protegidos por root, como chaves SSH ou ficheiros de palavras-passe, isso abre portas para ataques mais amplos a toda a infraestrutura.

É particularmente crítico o facto de a vulnerabilidade não ser nova: já era conhecida há anos, mas não foi corrigida. Isto demonstra, de forma exemplar, a importância de uma gestão contínua de patches, mesmo para sistemas alegadamente estáveis e maduros. Como a falha é, em princípio, possível para qualquer ficheiro executável com privilégios root (setuid root), a superfície de ataque é potencialmente vasta e não se limita aos exemplos PoC publicados até agora.

Dicas práticas

  • Os administradores de sistemas podem, como medida provisória, aplicar o comando "echo 3 > /proc/sys/kernel/yama/ptrace_scope" para mitigar todos os casos conhecidos desta vulnerabilidade.
  • A correção oficial já está incluída no kernel Linux 7.0.8 — os sistemas afetados devem ser atualizados o mais rapidamente possível, assim que a respetiva distribuição disponibilizar o pacote de kernel correspondente.
  • Até que os pacotes corrigidos das distribuições estejam disponíveis, a solução alternativa mencionada deve ser implementada com prioridade, especialmente em servidores com dados de acesso sensíveis (chaves SSH, ficheiros de palavras-passe) e em sistemas críticos para a segurança, como servidores de controlo de acessos ou videovigilância.
  • De um modo geral, recomenda-se verificar quais as contas de utilizador locais que têm efetivamente acesso aos sistemas afetados, de forma a reduzir a superfície de ataque para exploits de race condition em geral.

Perspetivas

Como as grandes e pequenas distribuições Linux têm agora de incorporar e disponibilizar a correção em novos pacotes de kernel, é de esperar, com base na experiência, alguma demora até que todos os sistemas em produção estejam protegidos. Nesta fase de transição, a solução alternativa descrita através da definição Yama ptrace continua a ser a medida imediata mais importante para os administradores.

Tendo em conta que esta já é a quarta vulnerabilidade comparável em poucos dias, é de esperar que investigadores de segurança e programadores do kernel continuem a debruçar-se intensamente sobre a gestão de memória e de processos do kernel Linux. Para os operadores de infraestruturas críticas de segurança — desde sistemas de alarme, passando por sistemas de videovigilância, até soluções de controlo de acessos — este incidente sublinha a necessidade de processos de gestão de patches bem coordenados e de aplicar rapidamente até mesmo atualizações de kernel aparentemente pequenas.