FERRAMENTAS LINUX: O Google posta um código mais recente para o KCFI como tendo uma melhor integridade de fluxo de controle para o kernel Linux

segunda-feira, 16 de maio de 2022

O Google posta um código mais recente para o KCFI como tendo uma melhor integridade de fluxo de controle para o kernel Linux

 



Confira !!

O engenheiro do Google Sami Tolvanen postou a segunda série de patches de "solicitação de comentários" no KCFI como uma implementação de integridade de fluxo de controle melhor voltada para o uso do kernel Linux do que o suporte CFI existente.

Desde o ano passado, há o suporte do CFI baseado em Clang para Linux no AArch64, que também depende da ativação de otimizações de tempo de link (LTO) para a compilação do kernel. A integridade de fluxo de controle baseada em sanitizador do Clang fornece verificações em tempo de execução antes de cada chamada de função indireta para garantir que o destino seja uma função válida com um tipo estático válido.

Sami Tolvanen descreve KCFI como, "um esquema de integridade de fluxo de controle de borda avançada proposto para Clang, que é mais adequado para uso do kernel do que o esquema CFI existente usado por CONFIG_CFI_CLANG. O KCFI não requer LTO, não altera as referências de função para apontar para uma tabela de salto e não quebra a igualdade de endereço de função. "

Ele acrescentou: "O KCFI requer que as funções do assembly que são chamadas indiretamente do código C sejam anotadas com identificadores de tipo. Como as informações de tipo só estão disponíveis em C, o compilador emite identificadores de tipo esperados na tabela de símbolos, para que possam ser referenciados do assembly sem precisar codificar hashes de tipo... No caso de uma incompatibilidade de tipo, o KCFI sempre intercepta. Para dar suporte ao tratamento de erros, o compilador gera uma seção .kcfi_traps para x86_64, que contém os locais de cada trap, e para arm64, codifica as informações de registro necessárias para o ESR. "

Além dos patches do kernel do Linux, há também um novo desinfetante "KCFI" que precisa ser upstream no repositório LLVM para Clang. Não há nenhum suporte semelhante ao compilador GCC a partir de agora.

A esperança dos engenheiros do Google é que o KCFI no kernel Linux possa ser um substituto para o suporte AArch64 CFI existente. O suporte da linha principal KCFI também lidaria com x86_64 além de AArch64.

Mais detalhes sobre este último trabalho do Control-Flow Integrity para o kernel Linux podem ser encontrados nesta série de patches .





Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário