Descoberta pelo pesquisador de segurança Ruihan Li, a nova falha StackRot permite escalonamento de privilégios no Linux.
Informações técnicas surgiram para uma vulnerabilidade séria que afeta várias versões do kernel do Linux que podem ser acionadas com “recursos mínimos”.
O problema de segurança está sendo chamado de StackRot (CVE-2023-3269) e pode ser usado para comprometer o kernel e elevar privilégios.
Falha StackRot permite escalonamento de privilégios no Linux
Um patch está disponível para os kernels estáveis afetados desde 1º de julho e detalhes completos sobre o problema, juntamente com um código de exploração completo, são esperados até o final do mês.
O pesquisador de segurança Ruihan Li descobriu e relatou a vulnerabilidade.
Ele explica em um post hoje que isso afeta o subsistema de gerenciamento de memória do kernel, componente responsável por implementar a memória virtual e paginação de demanda, alocação de memória para as necessidades do kernel e os programas de espaço do usuário, além de mapear arquivos para o endereço dos processos espaço.
O StackRot afeta todas as configurações do kernel nas versões do Linux 6.1 a 6.4.
Embora Li tenha enviado o relatório de vulnerabilidade em 15 de junho, a criação de uma correção levou quase duas semanas devido à sua complexidade, e Linus Torvalds liderou o esforço.
O pesquisador esclareceu que:
“Em 28 de junho, durante a janela de mesclagem do kernel Linux 5.5, a correção foi mesclada na árvore de Linus. Linus forneceu uma mensagem de mesclagem abrangente para elucidar a série de patches de uma perspectiva técnica. 37, 6.3.11 e 6.4.1), resolvendo efetivamente o bug “Stack Rot” em 1º de julho.”
O StackRot surge da manipulação do kernel Linux da expansão da pilha dentro de seu subsistema de gerenciamento de memória, vinculado ao gerenciamento de áreas de memória virtual (VMAs).
Especificamente, o ponto fraco está na “árvore de bordo”, um novo sistema de estrutura de dados para VMAs introduzido no kernel Linux 6.1 que substituiu as “árvores rubro-negras” e contou com o mecanismo read-copy-update (RCU).
A vulnerabilidade é um problema use-after-free (UAF) decorrente da maneira como a expansão da pilha foi tratada, porque a árvore de bordo poderia substituir um nó sem obter o bloqueio de gravação do gerenciamento de memória (MM).
À medida que o kernel do Linux expande a pilha e remove a lacuna entre os VMAs, um novo nó é criado na “árvore de bordo” e o antigo é marcado para exclusão após o término das leituras atuais devido à segurança RCU da árvore de bordo.
No entanto, durante o período de carência da RCU, pode ocorrer um problema de uso após liberação quando um processo acessa o nó antigo, criando assim um contexto explorável para elevação de privilégios.
Ruihan Li observa que explorar o StackRot é uma tarefa desafiadora e que o CVE-2023-3269 pode ser o primeiro exemplo de uma vulnerabilidade teoricamente explorável use-after-free-by-RCU (UAFBR).
No entanto, o pesquisador anunciou planos para divulgar os detalhes técnicos completos sobre o StackRot e uma exploração de prova de conceito (PoC) até o final de julho.
O kernel Linux 6.1 foi aprovado como a versão de suporte de longo prazo (LTS) desde fevereiro. No entanto, nem todas as principais distribuições Linux o adotaram.
Por exemplo, o Ubuntu 22.04.2 LTS (Jammy Jellyfish), cujo suporte padrão termina em abril de 2027, vem com o kernel Linux versão 5.19. Por outro lado, o Debian 12 (Bookworm) vem com o kernel Linux 6.1.
Uma lista completa de distribuições do Linux usando o kernel versão 6.1 ou superior está disponível no DistroWatch.
Os usuários devem verificar a versão do kernel em que sua distribuição Linux é executada e escolher uma que não seja afetada pelo StackRot ou uma versão atualizada que contenha a correção.