Spectre
folcloresegurançaprogramação
Uma classe de ataques de 2018 que abusa da execução especulativa da CPU para vazar memória.
O Spectre engana um processador para que ele acesse especulativamente dados que não deveria, e então os lê por canais laterais de cache. Afetou quase todas as CPUs modernas e forçou mudanças profundas em navegadores, sistemas operacionais e no projeto de hardware.
O Spectre explora a execução especulativa, a técnica que os processadores usam para adivinhar qual ramificação um programa tomará e começar o trabalho antes. Quando o palpite está errado os resultados são descartados, mas os efeitos sobre o cache não, e medir qual memória agora está em cache revela o que o processador tocou especulativamente.
O que fez dele um marco é que não era defeito de nenhuma implementação. A execução especulativa é um projeto deliberado que todo processador de alto desempenho da época usava, e a vulnerabilidade está no conceito, o que significa que não podia ser corrigida sem abrir mão de décadas de trabalho de desempenho. Variantes continuaram aparecendo por anos porque a técnica subjacente segue oferecendo novos efeitos colaterais observáveis.
As mitigações são correspondentemente insatisfatórias: barreiras de compilador que inibem a especulação em pontos sensíveis, atualizações de microcódigo, e isolamento de processos forte o bastante para que a especulação não cruze uma fronteira que importe. Cada uma custa desempenho, parte dele significativo, e os navegadores ainda reduziram a precisão dos temporizadores porque o ataque precisa de medição acurada. O Spectre é a demonstração mais clara disponível de que uma otimização pode ser violação de fronteira de segurança, e de que desempenho e isolamento estão em tensão genuína, e não apenas disputando orçamento.
Também conhecido como: Spectre, CVE-2017-5753, CVE-2017-5715
Fontes
- CVE-2017-5753 (2018)