Kernel Linux é impactado por ataque de cache cruzado SLUBStick

O Kernel Linux está sendo impactado por ataque de cache cruzado SLUBStick. Um impacto de 99% de sucesso na conversão de uma vulnerabilidade de heap limitada em uma capacidade arbitrária de leitura e gravação de memória, permitindo que os pesquisadores elevem privilégios ou escapem de contêineres.

Kernel Linux é impactado por ataque SLUBStick

A descoberta vem de uma equipe de pesquisadores da Universidade de Tecnologia de Graz, que demonstrou o ataque nas versões 5.9 e 6.2 (mais recentes) do kernel Linux usando nove CVEs existentes em sistemas de 32 e 64 bits, indicando alta versatilidade. Além disso, o ataque funcionou com todas as defesas modernas do kernel, como Supervisor Mode Execution Prevention (SMEP), Supervisor Mode Access Prevention (SMAP) e Kernel Address Space Layout Randomization (KASLR) ativas.

O SLUBStick será apresentado em detalhes na próxima conferência Usenix Security Symposium no final deste mês. Os pesquisadores mostrarão a escalada de privilégios e o escape de contêiner no Linux mais recente com defesas de última geração habilitadas. Enquanto isso, o artigo técnico publicado contém todos os detalhes sobre o ataque e os possíveis cenários de exploração.

Detalhes do SLUBStick

Uma maneira pela qual o kernel do Linux gerencia a memória de forma eficiente e segura é alocando e desalocando blocos de memória, chamados “slabs”, para diferentes tipos de estruturas de dados. Falhas nesse processo de gerenciamento de memória podem permitir que invasores corrompam ou manipulem estruturas de dados, chamados ataques de cache cruzado. No entanto, eles são eficazes em cerca de 40% das vezes e geralmente levam a travamentos do sistema mais cedo ou mais tarde.

O SLUBStick explora uma vulnerabilidade de heap, como liberação dupla, usuário após liberação ou gravação fora dos limites, para manipular o processo de alocação de memória. Em seguida, ele usa um canal lateral de temporização para determinar o momento exato de alocação/desalocação de blocos de memória, permitindo que o invasor preveja e controle a reutilização da memória.

Imagem com tabela
CVEs usados com sucesso em experimentos de pesquisadores
Imagem: stefangast.eu

O uso dessas informações de tempo aumenta o sucesso da exploração de alterações cruzadas para 99%, tornando o SLUBStick muito prático. A conversão da falha de heap em primitiva arbitrária de leitura e gravação de memória é feita em três etapas:

Libere pedaços de memória específicos e espere o kernel reutilizá-los.
Realoque esses blocos de maneira controlada, garantindo que eles sejam redirecionados para estruturas de dados críticas, como tabelas de páginas.
Uma vez recuperado, o invasor sobrescreve as entradas da tabela de páginas, obtendo a capacidade de ler e gravar em qualquer local da memória.

Como na maioria dos ataques envolvendo um canal lateral, o SLUBStick requer acesso local na máquina alvo com capacidades de execução de código. Além disso, o ataque requer a presença de uma vulnerabilidade de heap no kernel Linux, que será então usada para obter acesso de leitura e gravação à memória.

Embora isso possa fazer com que o ataque pareça impraticável, ele traz alguns benefícios aos invasores. Mesmo para invasores com recursos de execução de código, o SLUBStick oferece a capacidade de obter escalonamento de privilégios, ignorar defesas do kernel, executar escapes de contêiner ou usá-lo como parte de uma cadeia de ataque complexa.

A escalada de privilégios pode ser usada para elevar privilégios ao root, permitindo operações ilimitadas, enquanto o escape de contêiner pode ser usado para sair de ambientes isolados e acessar o sistema host. Além disso, na fase pós-exploração, o SLUBStick pode modificar estruturas do kernel ou ganchos para manter a persistência, tornando o malware mais difícil de ser detectado pelos defensores.

Via: Bleeping Computer