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
- Vulnerabilidades associadas à execução especulativa da CPU
- Uma avaliação sistemática de ataques e defesas de execução transitória
- Uma árvore dinâmica de vulnerabilidades de execução transitória para CPUs Intel, AMD e ARM
- Ataques de execução transitória de Daniel Gruss, 20 de junho de 2019
- Erros de CPU
- Intel: Terminologia de execução especulativa refinada