Um ataque de cache cruzado recém-identificado no kernel Linux, chamado SLUBStick, ostenta uma taxa de sucesso de 99% na transformação de uma vulnerabilidade de heap limitada em uma capacidade de leitura e gravação de memória arbitrária. Essa capacidade permite que os invasores aumentem privilégios ou escapem de contêineres.
O ataque foi descoberto por uma equipe de pesquisadores da Universidade de Tecnologia de Graz, que o demonstrou nas versões 5.9 e 6.2 (mais recente) do kernel Linux usando nove CVEs existentes em sistemas de 32 bits e 64 bits, destacando sua alta versatilidade.
Além disso, o ataque ignorou todas as defesas modernas do kernel, incluindo a Prevenção de Execução do Modo Supervisor (SMEP), a Prevenção de Acesso ao Modo Supervisor (SMAP) e a Randomização do Layout do Espaço de Endereço do Kernel (KASLR).
Os detalhes do SLUBStick serão apresentados na próxima conferência Simpósio de Segurança Usenix no final deste mês, onde os pesquisadores demonstrarão escalonamento de privilégios e escape de contêiner nos sistemas Linux mais recentes com defesas de última geração habilitadas.
Enquanto isso, o artigo técnico publicado fornece detalhes abrangentes sobre o ataque e possíveis cenários de exploração.
Detalhes do SLUBStick
O kernel Linux gerencia a memória de forma eficiente e segura aoalocar edesalocar blocos de memória conhecidos como “slabs” para várias estruturas de dados. No entanto, falhas nesse processo de gerenciamento de memória podem levar aataques de cache cruzado, onde os invasores corrompem ou manipulam estruturas de dados. Esses ataques são normalmente eficazes em torno de 40% do tempo e frequentemente resultam emtravamentos do sistema.
O SLUBStick aproveita uma vulnerabilidade de heap, como double-free, use-after-free ou out-of-bounds write, para interromper o processo de alocação de memória. Em seguida, ele utiliza um canal lateral de temporização para determinar precisamente os momentos de alocação e desalocação de blocos de memória, permitindo que o invasor preveja econtrole a reutilização da memória.
CVEs usados com sucesso nos experimentos dos pesquisadores
Fonte: stefangast.eu
Ao usar essas informações de tempo, o SLUBStickaumenta a taxa de sucesso da exploração de cache cruzado para 99%, tornando-o altamente eficaz.
Taxas de sucesso medidas
Fonte: stefangast.eu
A conversão de uma falha de heap em recursos arbitrários de leitura e gravação de memória envolve três etapas:
- Liberar blocos de memória específicos e esperar que o kernel os reutilize.
- Realocar esses blocos de forma controlada, garantindo que sejam reaproveitados para estruturas de dados críticas, como tabelas de páginas.
- Uma vez que esses blocos são recuperados, o invasor pode sobrescrever as entradas da tabela de páginas, ganhando a capacidade de ler e gravar qualquer local de memória.
Visão geral do SLUBStick
Fonte: stefangast.eu
Impacto no mundo real
Como a maioria dos ataques de canal lateral, o SLUBStick requeracesso local à máquina alvo com a capacidade de executar código. Além disso, a presença de uma vulnerabilidade de heap no kernel do Linux é necessária para que o ataque obtenha acesso de leitura e gravação à memória.
Embora esses requisitos possam parecer limitar a praticidade do ataque, o SLUBStick oferece vantagens significativas aos invasores. Para aqueles com capacidades de execução de código, o SLUBStick pode facilitar a escalada de privilégios, ignorar defesas do kernel, habilitar escapes de contêiner ou ser integrado a uma cadeia de ataque mais complexa.
A escalada de privilégios pode elevar privilégios para root, concedendoacesso ilimitado ao sistema, enquanto escapes de contêiner permitem que invasores saiam de ambientes sandbox e acessem o sistema host.
Na fase pós-exploração, o SLUBStick pode modificar estruturas ou ganchos do kernel para manter a persistência, tornando malware mais desafiador para os defensores detectarem.
Adulteração de dados ‘/etc/passwd’
Fonte: stefangast.eu
Para aqueles interessados em explorar o SLUBStick mais a fundo, os exploits usados pelos pesquisadores da Universidade de Graz estão disponíveis em seu repositório GitHub.
Fonte: BleepingComputer, Bill Toulas