Vulnerabilidade de CPU de execução transitória - Transient execution CPU vulnerability

Vulnerabilidades de execução transitória da CPU são vulnerabilidades em um sistema de computador no qual uma otimização de execução especulativa implementada em um microprocessador é explorada para vazar dados secretos para uma parte não autorizada. O exemplo clássico é o Spectre, que deu nome a esse tipo de ataque de canal lateral , mas desde janeiro de 2018 muitas vulnerabilidades diferentes foram identificadas.

Visão geral

Os computadores modernos são dispositivos altamente paralelos, compostos por componentes com características de desempenho muito diferentes. Se uma operação (como uma ramificação) ainda não pode ser realizada porque alguma operação lenta anterior (como uma leitura de memória) ainda não foi concluída, um microprocessador pode tentar prever o resultado da operação anterior e executar a operação posterior especulativamente , agindo como se a previsão estivesse correta. A previsão pode ser baseada no comportamento recente do sistema. Quando a operação anterior mais lenta é concluída, o microprocessador determina se a previsão estava correta ou incorreta. Se estiver correto, a execução continua ininterrupta; se estiver incorreto, o microprocessador reverte as operações executadas especulativamente e repete a instrução original com o resultado real da operação lenta. Especificamente, uma instrução transitória se refere a uma instrução processada por erro pelo processador (incriminando o preditor de ramificação no caso de Spectre ) que pode afetar o estado micro-arquitetônico do processador, deixando o estado arquitetônico sem qualquer traço de sua execução.

Em termos do comportamento diretamente visível do computador, é como se o código executado especulativamente "nunca tivesse acontecido". No entanto, essa execução especulativa pode afetar o estado de certos componentes do microprocessador, como o cache , e esse efeito pode ser descoberto por meio do monitoramento cuidadoso do tempo das operações subsequentes.

Se um invasor puder providenciar que o código executado especulativamente (que pode ser escrito diretamente pelo invasor ou pode ser um gadget adequado que ele encontrou no sistema de destino) opere em dados secretos aos quais ele não está autorizado a acessar e tenha um efeito no cache para diferentes valores dos dados secretos, eles podem descobrir o valor dos dados secretos.

A partir de 2017, vários exemplos dessas vulnerabilidades foram identificados, com publicação a partir do início de 2018.

Em março de 2021, os pesquisadores de segurança da AMD descobriram que o algoritmo Predictive Store Forwarding nas CPUs Zen 3 poderia ser usado por aplicativos maliciosos para acessar dados que não deveriam estar acessando. De acordo com a Phoronix, há pouco impacto na desativação do recurso.

Em junho de 2021, duas novas vulnerabilidades, Speculative Code Store Bypass (SCSB, CVE-2021-0086 ) e Floating Point Value Injection (FPVI, CVE-2021-0089 ), afetando todas as CPUs x86-64 modernas da Intel e da AMD foram descobertas . Para mitigá-los, o software deve ser reescrito e recompilado. CPUs ARM não são afetadas por SCSB, mas algumas arquiteturas ARM são afetadas por FPVI.

Em agosto de 2021, uma vulnerabilidade chamada "Execução transitória de acessos não canônicos", afetando certas CPUs AMD, não foi divulgada. Ele requer as mesmas atenuações que a vulnerabilidade do MDS que afeta certas CPUs da Intel. Foi atribuído CVE-2020-12965 . Como a maioria dos softwares x86 já tem patches contra MDS e essa vulnerabilidade tem exatamente as mesmas atenuações, os fornecedores de software não precisam resolver essa vulnerabilidade.

Em outubro de 2021, pela primeira vez, uma vulnerabilidade semelhante ao Meltdown foi divulgada como afetando todos os CPUs AMD, no entanto, a empresa não acha que nenhuma nova atenuação deve ser aplicada e as existentes já são suficientes.

Resumo de vulnerabilidades e mitigações

Tipo de Mitigação Abrangência Eficácia Impacto de desempenho
Hardware Cheio Cheio Nenhum ... Pequeno
Atualização de microcódigo de firmware Parcial Parcial ... Completo Nenhum ... Grande
OS / VMM Parcial Parcial ... Completo Pequeno grande
Recompilação de software Pobre Parcial ... Completo Médio Grande

As mitigações de hardware exigem mudanças no design da CPU e, portanto, uma nova iteração de hardware, mas impõem uma perda de desempenho próxima de zero. As atualizações de microcódigo alteram o software em que a CPU é executada, exigindo que patches sejam lançados e integrados em cada sistema operacional e para cada CPU. As mitigações do SO / VMM são aplicadas no sistema operacional ou no nível da máquina virtual e (dependendo da carga de trabalho) geralmente incorrem em uma perda de desempenho bastante significativa. A recompilação do software requer a recompilação de todos os componentes do software e, geralmente, resulta em um grave problema de desempenho.

Nome da Vulnerabilidade

(apelido)

CVE Arquiteturas de CPU afetadas e mitigações
Intel AMD
Ice Lake Lago Cascade ,
Lago Cometa
Whiskey Lake ,
Amber Lake
Coffee Lake
(9ª geração)
Coffee Lake
(8ª geração) *
Zen 1 / Zen 1+ Zen 2
Desvio de verificação de limites do Specter v1
2017-5753 Recompilação de software Recompilação de software
Spectre v2
Branch Target Injection
2017-5715 Hardware + SO Microcódigo + SO Microcódigo + SO Microcódigo + OS / VMM Hardware + SO / VMM
SpectreRSB / ret2spec erro de previsão de retorno 2018-15572 SO
Meltdown
Rogue Data Cache Load
2017-5754 Não afetado Microcódigo Não afetado
Spectre-NG v3a 2018-3640 Não afetado Microcódigo
Espectro-NG v4
desvio de armazenamento especulativo
2018-3639 Hardware + SO / VMM Microcódigo + SO OS / VMM Hardware + SO / VMM
Foreshadow
L1 Terminal Fault , L1TF
2018-3615 Não afetado Microcódigo Não afetado
Restauração de estado de FP preguiçoso Specter-NG
2018-3665 OS / VMM
Loja de desvio de verificação de limites Specter-NG v1.1
2018-3693 OS / VMM
Espectro-NG v1.2
Desvio de proteção somente leitura (RPB)
Sem CVE e nunca foi confirmado pela Intel Não afetado
Foreshadow-OS
L1 Terminal Fault (L1TF)
2018-3620 Não afetado Microcódigo + SO Não afetado
Foreshadow-VMM
L1 Terminal Fault (L1TF)
2018-3646

Amostragem de dados do buffer de preenchimento da microarquitetura RIDL / ZombieLoad (MFBDS)
2018-12130

Amostragem de dados da porta de carga da microarquitetura RIDL (MLPDS)
2018-12127 Não afetado Não afetado Não afetado Microcódigo + SO
RIDL
Microarchitectural Data Sampling Uncacheable Memory (MDSUM)
2019-11091 Não afetado Microcódigo + SO

Amostragem de dados de buffer de armazenamento de microarquitetura Fallout (MSBDS)
2018-12126 Microcódigo Não afetado Não afetado Microcódigo + SO
Specter SWAPGS 2019-1125 Igual ao Espectro 1
RIDL / ZombieLoad v2
Transactional Assynchronous Abort (TAA)
2019-11135 Não afetado Microcódigo + SO

Amostragem de despejo RIDL / CacheOut L1D (L1DES)
2020-0549 Não afetado

Amostragem de registro vetorial RIDL (VRS)
2020-0548
Injeção de valor de carga (LVI) 2020-0551 Recompilação de software
Remover Não afetado Ainda não corrigido (disputado)

Amostragem de dados de buffer de registro especial CROSSTalk (SRBDS)
2020-0543 Não afetado Microcódigo Não afetado
Lado Cego Sem CVE, depende de sistemas sem patch.

A arquitetura Coffee Lake de 8ª geração nesta tabela também se aplica a uma ampla gama de CPUs Intel lançadas anteriormente, não se limitando às arquiteturas baseadas em Intel Core , Pentium 4 e Intel Atom começando com Silvermont . Várias microarquiteturas de CPU não incluídas acima também são afetadas, entre elas IBM Power , ARM , MIPS e outras.

Futuro

As vulnerabilidades da classe Spectre permanecerão não corrigidas porque, caso contrário, os designers da CPU terão que desabilitar o OoOE, o que acarretará em uma perda massiva de desempenho.

CPUs da Intel além de Ice Lake, por exemplo, Rocket Lake e Tiger Lake não são afetadas por Fallout / MSBDS.

Notas

1. ^ A etapa 5 dos processadores escaláveis ​​Intel® Xeon® de 2ª geração baseados na microarquitetura Cascade Lake é afetada por MSBDS e MLPDS.

Referências

links externos

  1. Vulnerabilidades associadas à execução especulativa da CPU
  2. Uma avaliação sistemática de ataques e defesas de execução transitória
  3. Uma árvore dinâmica de vulnerabilidades de execução transitória para CPUs Intel, AMD e ARM
  4. Ataques de execução transitória de Daniel Gruss, 20 de junho de 2019
  5. Erros de CPU
  6. Intel: Terminologia de execução especulativa refinada