Kees Cook, ex-administrador chefe do kernel.org e líder da Ubuntu Security Team, atualmente trabalhando na Google para garantir a segurança do Android e do ChromeOS, publicou um conjunto de patches que implementam a randomização de offsets na pilha do núcleo durante o processamento de chamadas de sistema. Os patches aumentam a segurança do núcleo ao alterar a disposição da pilha, o que torna ataques à pilha significativamente mais complexos e menos bem-sucedidos. A implementação inicial suporta processadores ARM64 e x86/x86_64.
A ideia original do patch pertence ao projeto PaX RANDKSTACK. Em 2019, Elena Reshetova, engenheira da Intel, tentou criar uma implementação dessa ideia, adequada para inclusão no núcleo Linux principal. Mais tarde, Kees Cook assumiu a iniciativa e apresentou uma implementação adequada para a versão principal do núcleo. Os patches estão planejados para serem incluídos na versão 5.13. O modo estará desativado por padrão. Para ativá-lo, são sugeridos o parâmetro de linha de comando do núcleo "randomize_kstack_offset=on/off" e a configuração CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. O overhead ao ativar o modo é estimado em aproximadamente 1% de perda de desempenho.
A essência da proteção proposta é a escolha de um deslocamento aleatório da pilha a cada chamada de sistema, o que dificulta a determinação da disposição da pilha na memória, mesmo obtendo dados sobre os endereços, já que na próxima chamada de sistema o endereço base da pilha mudará. Ao contrário da implementação do PaX RANDKSTACK, nos patches propostos para inclusão no núcleo, a randomização é realizada não na fase inicial (cpu_current_top_of_stack), mas após a definição da estrutura pt_regs, o que torna impossível o uso de métodos baseados em ptrace para determinar o deslocamento randomizado durante a execução de chamadas de sistema prolongadas.
Fonte: opennet.ru
