Spectre

folclore

seguranç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)

Todos os verbetes do glossário