Intel envia o tão esperado suporte Shadow Stack para Linux 6.4

SOF 2.6 da Intel tem firmware aberto de som preparado para Lunar Lake
“Processador Intel” substitui as marcas Pentium e Celeron

O suporte Intel Shadow Stack existe pelo menos desde a chegada das CPUs Tiger Lake. Fazem parte da Tecnologia de Aplicação de Fluxo de Controle (CET) da Intel. Então, finalmente, para o kernel Linux 6.4 esse recurso de segurança está sendo ativado com o kernel Linux principal. Portanto, a Intel envia o tão esperado suporte Shadow Stack para Linux 6.4.

Os engenheiros da Intel Linux trabalham há muito tempo no suporte à pilha de sombra como parte do CET. A outra parte do CET, Indirect Branch Tracking, foi upstream de volta no Linux 5.18.

A funcionalidade de pilha de sombra da Intel para Linux 6.4 é proteção de endereço de retorno para se defender contra ataques de programação orientada a retorno (ROP).

As CPUs AMD mais recentes também fornecem a funcionalidade Shadow Stack compatível com a implementação da Intel.O engenheiro de longa data da Intel Linux, Dave Hansen, enviou a solicitação pull x86/shstk na segunda-feira para finalmente introduzir esse recurso. 

Ele explicou nessa mensagem:

Por favor, puxe x86/shstk para 6.4. Este é o tão esperado suporte Shadow Stack. É o recurso de segurança de hardware mais desejado em muito tempo. Tanto a AMD quanto a Intel têm implementações (compatíveis). Ele está presente no lado da Intel desde os processadores de 11ª geração, mas teve alguns tropeços no caminho e está um pouco atrasado.A parte mais complicada de tudo isso (IMNHO) foi que as pilhas de sombra existem em uma área cinza de permissão. Uma PTE de pilha de sombra diz literalmente Write=0, mas algumas instruções _podem_ gravar nela. Os PTEs também não podem ser somente leitura, portanto, não podem ser COW’d. 

Eles são estranhos.As permissões Write=0,Dirty=1 PTE também significam que o bit sujo não pode ser usado livremente como antes. Essas duas coisas se combinam para criar uma boa quantidade de rotatividade de gerenciamento de PTE.Mais algumas coisas que você deve saber:1. Há uma quantidade não trivial de churn de mm de núcleo.

Tem críticas do pessoal da mm e espero que não seja surpresa para o Andrew. Eles adicionam um argumento VMA a pte_mkwrite(). Há um novo usuário na pilha de Andrew que precisará ser consertado antes que seja mesclado com a árvore mm.2. Houve um emaranhado incomum de problemas de compatibilidade de espaço de usuário com pilhas de sombra. Embora a mudança para os novos valores arch_prctl() tenha ajudado, ainda podemos imaginar cenários em que esse código antigo pode nos morder. 

O plano é tentar proibir qualquer aplicativo problemático de usar o shadow stack se algo acontecer na prática. Obviamente, devemos estar atentos a eles.3. Isso entra em conflito com o código LAM que vem em x86/mm. Discutirei a resolução quando enviar x86/mm.

Intel envia o tão esperado suporte Shadow Stack para Linux 6.4

Até o momento, Linus Torvalds ainda não conseguiu obter o suporte Shadow Stack ou fazer comentários na lista de discussão. Veremos se está tudo bem com Linus puxando esse recurso para o Linux 6.4 ou se ele tem reservas devido aos comentários acima. Esperançosamente, esse recurso de segurança Intel/AMD para ajudar a evitar ataques ROP será finalmente mesclado.

Acesse a versão completa