Linux pode ativar o rastreamento de ramificação indireta por padrão (IBT)

Linux 6.7-rc3 lançado após uma pequena semana de férias
tux

Um novo patch lançado por um engenheiro de kernel do Google Chrome OS/Linux permitiria o suporte para o Indirect Branch Tracking (IBT) liderado pela Intel por padrão como parte da configuração padrão do kernel para esse recurso de segurança.

Assim, o Indirect Branch Tracking faz parte da Intel Control-Flow Enforcement Technology (CET) com CPUs Tigerlake e mais recentes. O IBT fornece proteção de ramificação indireta para se defender contra ataques JOP/COP, garantindo que as chamadas indiretas cheguem a uma instrução ENDBR.

Linux pode ativar o rastreamento de ramificação indireta por padrão (IBT)

O rastreamento de ramificação indireta no lado do kernel foi atualizado para Linux 5.18 e também requer uma versão mais recente dos compiladores de código GCC ou LLVM Clang.

Embora o IBT já esteja habilitado por padrão para alguns kernels de fornecedores de distribuição, Kees Cook, do Google, sugeriu que ele seja habilitado por padrão para compilações de kernel Linux x86/x86_64.

Com este patch ele justifica a mudança padrão como:

Essa defesa de segurança é habilitada em tempo de execução por meio do ID da CPU, portanto, construa-a por padrão. Ele será habilitado se a CPU suportar. A compilação leva 2 segundos a mais, o que parece um preço pequeno a pagar para obter essa cobertura por padrão. Veremos se essa mudança de segurança padrão do kernel será escolhida para o ciclo v6.1 neste outono.

Configuração de kernel padrão do Linux 6.1 vai avisar na inicialização de mapeamentos W+X

Uma alteração enfileirada como parte das alterações de TIP “x86/mm” que devem chegar ao Linux 6.1 agora terá a configuração padrão avisando no momento da inicialização do kernel em torno de qualquer mapeamento W+X que represente um risco de segurança.

O recurso remonta a 2015, quando a opção do kernel “CONFIG_DEBUG_WX” passou a avisar sobre mapeamentos no momento da inicialização do kernel. Eles são definidos como graváveis e executáveis, pois representam um risco de segurança. 

A intenção desta opção “debug” é avisar sobre mapeamentos W+X deixados pelo kernel após a aplicação do NX. Quaisquer mapeamentos serão despejados no log do kernel para descobrir possíveis problemas do kernel.

CONFIG_DEBUG_WX tem trabalhado nas versões do kernel Linux nos últimos sete anos, embora não faça parte da configuração padrão do kernel x86/x86_64. Porém, com as mudanças do TIP x86/mm desta semana na fila de materiais antes da janela de mesclagem do Linux 6.1, o CONFIG_DEBUG_WX seria habilitado por padrão.

CONFIG_DEBUG_WX

Este commit adiciona a opção CONFIG_DEBUG_WX por padrão para os defconfigs i386 e x86_64. As arquiteturas não x86 estão atualmente inalteradas em sua configuração padrão DEBUG_WX. 

Tudo isso diz respeito apenas sobre a configuração padrão. Sendo assim, os usuários e distribuições são livres para enviar com suas próprias personalizações. Portanto, a maioria dos kernels de distribuição provavelmente já estão sendo enviados com essa opção habilitada. 

Essa verificação W+X acontece apenas no momento da inicialização, sem impacto no tempo de execução ou no desempenho da memória dessa alteração, portanto, deve ser uma alteração de configuração de kernel padrão segura para os usuários que estão avançando.