Kernel Linux corrige falha importante de CPU Intel

Kernel Linux 6.13 vai descartar drivers de teste antigos e sem manutenção

O kernel Linux acaba de anunciar um pacote que corrige uma importante falha de CPU Intel. Essa falha foi reportada em março de 2022 e se chama Branch History Injection (BHI). Na verdde, esta é mais uma nova vulnerabilidade do Spectre que afeta as CPUs Intel e Arm. Então, em julho de 2022, foram corrigidos para a Intel trabalhar na prevenção baseada em hardware para ataques Spectre-BHI. Agora, dois anos depois, o kernel Linux está vendo mitigações adicionadas para a vulnerabilidade nativa de Injeção de Histórico de Ramificação dada uma nova variante “BHI nativa”.

Mesclados nesta Patch Tuesday estavam os patches do kernel Linux para ajudar a afastar a Branch History Injection quando emparelhados com o microcódigo de CPU atualizado. A menos que eu esteja ignorando algo ou haja algumas divulgações ainda não publicadas, não está claro por que esses patches de kernel foram fundidos hoje: o Intel Security Center ainda não mostrou nenhuma nova vulnerabilidade hoje, não há nenhuma nova queda de microcódigo de CPU Intel, nem quaisquer outras novas divulgações que eu vi hoje ainda em torno do BHI.

Linus Torvalds mesclou essa ramificação “nativebhi” fornecendo essa mais nova mitigação de vulnerabilidade de segurança da CPU. A mensagem de mesclagem diz:

Atenuações para a vulnerabilidade de hardware BHI nativo:

os ataques BHI (Branch History Injection) podem permitir que um aplicativo mal-intencionado influencie a previsão de ramificação indireta no kernel envenenando o histórico da ramificação. O eIBRS isola alvos de filiais indiretas em ring0. O BHB ainda pode influenciar a escolha da entrada do preditor de ramo indireto, e embora as entradas do preditor de ramo sejam isoladas entre os modos quando o eIBRS está ativado, o BHB em si não é isolado entre os modos.

Adicione mitigações contra ele com a ajuda de microcódigo ou com sequências de software para as CPUs afetadas”

[ Isso também acaba permitindo a mitigação completa por padrão, apesar do endurecimento da chamada do sistema, porque aparentemente há outras chamadas indiretas que ainda estão suficientemente acessíveis, e o caso ‘automático’ simplesmente não é endurecido o suficiente.

Teremos alguns ajustes mais inevitáveis no futuro – Linus ]

A documentação atualizada do kernel aponta para novas pesquisas motivando essa mitigação do BHI:

Kernel Linux corrige falha importante de CPU Intel

“Anteriormente, o único vetor de ataque BHB conhecido no mundo real era via eBPF sem privilégios. Outras pesquisas encontraram ataques que não exigem eBPF sem privilégios. Para uma mitigação completa contra ataques BHB, recomenda-se definir BHI_DIS_S ou usar a sequência de limpeza BHB.”

O novo código adiciona uma opção de tempo de inicialização spectre_bhi= para controles on/off/auto desta mitigação de Injeção de Histórico de Ramificação. Os controles afetam o controle BHI do hardware e a sequência de limpeza BHB do software. Os patches confirmam que os processadores AMD, Zhaoxin e Hygon não são afetados, mas aparentemente apenas processadores Intel de x86/x86_64.


Quanto aos processadores Intel afetados, Alder Lake e mais recentes têm o controle de hardware BHI_DIS_S para mitigar o BHI. Antes de Alder Lake, a Intel lançou uma sequência de software para limpar o histórico da filial.

Kernel Linux corrige falha importante de CPU Intel

Com a mitigação do Linux, o histórico da ramificação é limpo na entrada da chamada do sistema e no VMexit. Por enquanto, pelo menos o histórico de ramificações não é limpo na entrada de interrupção, mas um dos patches observa:

“Por enquanto, o histórico da filial não é limpo na entrada de interrupção, pois acredita-se que os aplicativos maliciosos não tenham controle suficiente sobre os registros, uma vez que o estado de registro anterior é limpo na entrada de interrupção. Os pesquisadores continuam a cutucar essa área e pode ser necessário limpar na entrada também no futuro.”

Então, a partir de um curto período de tempo, o código de mitigação Intel BHI é mesclado ao Git para Linux 6.9 e será portado de volta para versões estáveis do kernel em breve. Ainda estou cutucando para descobrir mais informações sobre por que a mitigação do BHI está acontecendo dois anos após a divulgação original do BHI.

VUSec.net já publicou os detalhes de sua nova pesquisa “Native BHI” sobre Branch History Injection. Eles explicam:

Em nosso trabalho anterior, demonstramos que os ataques Spectre-V2 ainda eram possíveis no kernel por meio da Branch History Injection (BHI), e usamos o eBPF para criar um gadget de divulgação Spectre (ou simplesmente gadget Spectre para simplificar). Em resposta, os fornecedores sugeriram desabilitar o eBPF sem privilégios. Essa mitigação nos deixou com uma pergunta angustiante: “Encontrar gadgets Spectre ‘nativos’ para BHI, ou seja, não implantados por meio de eBPF, é viável?”

Para resolver essa questão, desenvolvemos o InSpectre Gadget. Com esta ferramenta, podemos analisar os gadgets Spectre e raciocinar sobre sua explorabilidade (avançada). Nossos esforços levaram à descoberta de 1.511 gadgets Spectre e 2.105 chamados gadgets de expedição. Estes últimos são muito úteis para um atacante, pois podem ser usados para encadear gadgets e direcionar especulações para um gadget Spectre.

Como o número de gadgets que encontramos aponta para uma superfície de ataque não trivial, os fornecedores agora recomendam mitigar a BHI nativa habilitando mitigações de hardware e, para CPUs mais antigas, mitigações de software.

Dos muitos gadgets que descobrimos, selecionamos um e criamos uma exploração BHI nativa de ponta a ponta (eBPF=off).

A AMD também confirmou que seus processadores não são afetados pelo gadget Native BHI / InSpectre.

O BHI nativo foi designado CVE-2024-2201 e o VUSec demonstrou a vulnerabilidade em uma CPU Core de 13ª geração, enquanto eles dizem que todas as CPUs Intel são afetadas pelo BHI nativo.