Parece que o FineIBT combinando o melhor da tecnologia de aplicação de fluxo de controle da Intel e integridade de fluxo de controle como uma implementação de integridade de fluxo de controle (CFI) alternativa aprimorada pode estar pronta para a linha principal com o próximo ciclo do Linux 6.2.

O suporte FineIBT foi adicionado à ramificação x86/core do TIP, onde as alterações do núcleo x86 normalmente residem até serem enviadas como parte da janela de mesclagem do próximo ciclo do kernel. Dado o momento e impedindo que quaisquer problemas sejam levantados com o FineIBT, agora que atingiu o TIP x86/core, é provável que seja enviado para a janela de mesclagem do Linux 6.2 em dezembro.

Os engenheiros da Intel trabalharam neste código”Fine Indirect Branch Tracking”. Conforme explicado no o patch:

Implemente um esquema CFI alternativo que mescla tanto a natureza refinada do kCFI, mas também aproveita ao máximo o CFI de hardware de granulação grossa fornecido pelo IBT.

Para contrastar:

kCFI é um esquema CFI de software puro e depende da capacidade de ler texto–especificamente a instrução *antes* do símbolo de destino e faz a validação de hash *antes* de fazer o call (caso contrário, o fluxo de controle já está comprometido).

FineIBT é um esquema híbrido de software e hardware; garantindo que cada destino de ramificação comece com uma validação de hash, é possível colocar a validação de hash após a ramificação. Isso tem várias vantagens:

o carregamento (hash) é evitado; nenhum memorando; nenhum requisito de RX.

o estado IBT WAIT-FOR-ENDBR é uma parada de especulação; colocando a validação de hash na instrução imediata após o alvo da ramificação, há uma janela de especulação mínima e o todo é uma defesa viável contra o SpectreBHB.

o Kees se sente obrigado a mencionar que é um pouco mais vulnerável quando o invasor pode escrever código.

Obviamente, este patch depende do kCFI, mas também depende do preenchimento dos patches de rastreamento de profundidade de chamadas. Ele usa esse preenchimento para colocar a validação de hash enquanto os sites de chamada são reescritos para modificar o destino indireto para ficar 16 bytes na frente do destino original, atingindo esse novo preâmbulo.

Notavelmente, não há hardware que precise de rastreamento de profundidade de chamada (Skylake) e suporte IBT (Tigerlake em diante).

A opção de configuração para este recurso do kernel está em”FINEIBT”.

Categories: IT Info