Patches introduzidos para randomizar endereços de pilha do kernel Linux para chamadas de sistema

Kees Cook, ex-administrador-chefe de sistema do kernel.org e líder da equipe de segurança do Ubuntu, agora trabalhando no Google para proteger o Android e o ChromeOS, publicou um conjunto de patches para randomizar as compensações na pilha do kernel ao processar chamadas do sistema. Os patches melhoram a segurança do kernel alterando o posicionamento da pilha, tornando os ataques à pilha muito mais difíceis 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 kernel principal do Linux. Posteriormente, a iniciativa foi assumida por Kees Cook, que apresentou uma implementação adequada à versão principal do kernel. Os patches estão planejados para serem incluídos como parte da versão 5.13. O modo estará desabilitado por padrão. Para habilitá-lo, são propostos o parâmetro de linha de comando do kernel “randomize_kstack_offset=on/off” e a configuração CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. A sobrecarga de ativação do modo é estimada em aproximadamente 1% de perda de desempenho.

A essência da proteção proposta é escolher um deslocamento aleatório da pilha para cada chamada do sistema, o que dificulta a determinação do layout da pilha na memória, mesmo após o recebimento dos dados de endereço, pois a próxima chamada do sistema alterará o endereço base da pilha. Ao contrário da implementação PaX RANDKSTACK, nos patches propostos para inclusão no kernel, a randomização é realizada não no estágio inicial (cpu_current_top_of_stack), mas após definir a estrutura pt_regs, o que impossibilita o uso de métodos baseados em ptrace para determinar o deslocamento aleatório durante uma chamada de sistema de longa duração.

Fonte: opennet.ru

Adicionar um comentário