Junto com o Infraestrutura Rust para solicitação de pull do Linux 6.1, outro pull inicial enviado pelo mantenedor do kernel Kees Cook para Linux 6.1 é a introdução de uma nova implementação”CFI”de integridade de fluxo de controle para o kernel do Linux para substituir o código anterior, menos que o ideal.
O kernel do Linux deu suporte à implementação CFI do Clang, que dependia da ativação do suporte Clang LTO (Link Time Optimization) entre outras ressalvas no suporte. Essa implementação do Clang CFI agora está sendo substituída pela implementação”KCFI”mais recente do Clang, projetada para o uso do kernel em mente e aborda as dores de cabeça anteriores em torno da implementação existente do Clang CFI. O suporte do GCC para KCFI também é esperado no futuro.
Desse novo suporte Clang KCFI para Linux 6.1, Kees Cook resumiu como:
Isto substitui o suporte anterior para a instrumentação de Integridade de Fluxo de Controle (CFI) padrão do Clang, que exigiu muitas condições especiais (por exemplo, LTO) e soluções alternativas. A implementação atual (“Kernel CFI”) é específica para C, projetada diretamente para o kernel Linux, e aproveita recursos de arquitetura como o IBT do x86. Esta série mantém o suporte arm64 e adiciona suporte x86. Suporte arquitetônico”genérico”adicional é esperado em breve.
Mais detalhes através do KCFI pull request enviado em preparação para a iminente janela de mesclagem do Linux 6.1.
O KCFI do Clang (-fsanitize=kcf) é um esquema de integridade de fluxo de controle de borda direta para chamadas indiretas. O KCFI foi projetado para código de baixo nível e esse desinfetante foi mantido no LLVM desde o início do ano. Esse suporte KCFI foi liderado pelo Google nos últimos meses.