O código de exploração em breve estará disponível para uma vulnerabilidade crítica no kernel do Linux que um pesquisador de segurança descobriu e relatou aos administradores do Linux em meados de junho.
O bug, que o pesquisador chamou de StackRot (CVE-2023-3269), afeta o kernel Linux 6.1 a 6.4 e dá aos invasores uma maneira de escalar privilégios em sistemas afetados.
Afeta todas as configurações do Linux
O pesquisador de segurança Ruihan Li, da Universidade de Pequim, na China, descobriu a vulnerabilidade e a descreveu esta semana como afetando quase todas as configurações do kernel Linux e exigindo recursos mínimos para ser acionada.
Uma equipe de resposta, liderada pelo criador do Linux, Linus Torvalds, trabalhou cerca de duas semanas no desenvolvimento de um conjunto de patches para resolver a vulnerabilidade.
“Em 28 de junho, durante a janela de mesclagem para o kernel Linux 6.5, a correção foi mesclada na árvore de Linus”, disse Li em um post no GitHub anunciando sua descoberta. “Linus forneceu uma mensagem de mesclagem abrangente para elucidar a série de patches de uma perspectiva técnica”, observou Li.
Desde então, os patches foram portados para os kernels 6.1.37, 6.2.11 e 6.4.1, “efetivamente resolvendo o bug ‘StackRot’ em 1º de julho”, escreveu Li. “O código de exploração completo e uma gravação abrangente serão disponibilizados publicamente até o final de julho.”
StackRot refere-se à entrega do kernel Linux de expansão de pilha, um mecanismo para aumentar ou expandir automaticamente a memória de pilha de um processo em execução.
A estrutura de dados para gerenciar espaços de memória virtual no kernel Linux lida com uma função de gerenciamento de memória específica de uma maneira que resulta em problemas de uso após liberação por RCU (UAFBR), disse Li. As falhas do UAFBR combinam a vulnerabilidade use-after-free com o que é conhecido como o mecanismo Read-Copy-Update (RCU) no kernel Linux para sincronizar o uso de dados compartilhados.
Use-after-free é um tipo de vulnerabilidade em que um programa de software continua a usar uma referência de memória depois de ter sido desalocado ou liberado. Isso dá aos invasores uma maneira de inserir código arbitrário no espaço de memória liberado, mas ainda usado. “Um usuário local sem privilégios poderia usar essa falha para comprometer o kernel e aumentar seus privilégios”, disse Li. O kernel Linux usa o mecanismo RCU para liberar ou desalocar o espaço de memória usado.
Embora as vulnerabilidades do UAFBR possam ser perigosas, elas não são fáceis de explorar por causa de um certo atraso que acontece com a desalocação de memória quando os espaços de memória são liberados usando retornos de chamada RCU, explicou Li.
Exploração inédita
O pesquisador descreveu o exploit para StackRot como provavelmente o primeiro a explorar com sucesso um bug UAFBR. “Até onde sei, atualmente não há explorações disponíveis publicamente visando bugs de uso após livre por RCU”, disse Li. “Isso marca o primeiro caso em que os bugs da UAFBR provaram ser exploráveis.”
As equipes do kernel Linux corrigiram a falha – lideradas por Torvalds – basicamente modificam o código de expansão da pilha do modo de usuário do kernel para impedir que a condição de uso após livre aconteça.
“Na verdade, é algo que sempre tecnicamente deveríamos ter feito”, disse Torvalds em um post no GitHub. “Mas como não precisávamos estritamente [disso], estávamos sendo preguiçosos (‘oportunista’ soa muito melhor, não é?) sobre as coisas.”
FONTE: DARK READING