A tradução feita no núcleo Linux 6.1 da VMA (Virtual Memory Area) da estrutura de dados "red-black tree" para "maple tree" resultou na vulnerabilidade (CVE-2023-3269), que permite a um usuário não privilegiado executar seu código com privilégios de núcleo. A vulnerabilidade, codinome StackRot, é visível a partir do lançamento do núcleo 6.1 e foi corrigida nas atualizações 6.4.1, 6.3.11 e 6.1.37.
A estrutura "maple tree" é uma variante da B-tree, que suporta a indexação por intervalos de valores e foi projetada para o uso eficiente do cache dos processadores modernos. Comparado à "red-black tree", o uso da "maple tree" proporciona um desempenho mais elevado. A vulnerabilidade é causada por um erro no manipulador de extensão de pilha – na estrutura "maple tree" utilizada para gerenciar áreas de memória virtual no núcleo, a substituição de um nó na árvore poderia ocorrer sem a colocação de um bloqueio para gravação, criando condições para o acesso a uma área de memória após sua liberação (use-after-free).
A exploração da vulnerabilidade foi complicada pelo fato de que os nós na estrutura "maple tree" são liberados em modo diferido usando chamadas de callback com bloqueios RCU (Read-copy-update). No entanto, os pesquisadores conseguiram superar as dificuldades e preparar um exploit funcional, que planejam publicar no final de julho, para dar aos usuários tempo para atualizar seus sistemas. A exploração é possível na quase totalidade das configurações do núcleo e requer apenas privilégios mínimos.
Fonte: opennet.ru
