Duas das vulnerabilidades mais divulgadas na década de 2010 estavam intimamente relacionadas entre si. Em vez de serem vulnerabilidades de segurança em software, Specter e Meltdown são vulnerabilidades no design fundamental das CPUs, tornando o problema mais difícil de resolver. Os próprios problemas são particularmente graves, permitindo a divulgação de memória de outros aplicativos e do sistema operacional.
Visão geral
As CPUs usam designs incrivelmente avançados para atingir o mais alto desempenho, incluindo técnicas que incluem execução especulativa e previsão de ramificação. A execução especulativa é onde a CPU começa a executar um processo antes de saber se precisa, na tentativa de economizar tempo quando determina que precisa. A previsão de ramificação é um subconjunto de execução especulativa que tenta prever o resultado de um processo e, em seguida, começa a calcular a próxima etapa com base nesse valor previsto, permitindo que a CPU execute uma série de instruções fora de ordem.
A vulnerabilidade do Spectre vem da implementação desses dois recursos. Ele permite que um aplicativo viole as técnicas de isolamento de memória embutidas na maioria dos softwares modernos, permitindo a divulgação de memória, incluindo segredos como senhas e chaves de criptografia. Um dos problemas com o Spectre é que os dados podem ser acessados a partir de aplicativos que não têm nenhuma vulnerabilidade de segurança, pois apenas um programa malicioso é necessário.
A vulnerabilidade Meltdown é baseada em algumas técnicas de memória, bem como no sistema de execução especulativa mencionado acima. Ele utiliza uma “condição de corrida” entre a execução do processo e a verificação de privilégios e permite que um programa malicioso acesse a memória de outros aplicativos e do sistema operacional.
Dica: Uma “condição de corrida” é um problema em que uma tarefa deve depender de outra, mas a ordem de execução correta não é aplicada. Isso pode resultar no “segundo” processo sendo executado primeiro e usando a memória não inicializada que deveria conter o resultado do “primeiro” processo, vazando o conteúdo anterior dessa memória. Nesse caso específico, o processo não deve ser executado até que uma verificação de permissão tenha verificado que é permitido, mas a verificação de permissão pode ocorrer em segundo lugar devido a otimizações de desempenho.
Efeitos
Em meados de 2017, várias equipes descobriram e relataram independentemente Meltdown e Spectre em particular para fabricantes de CPU que desenvolveram patches. Devido aos patches visando otimizações de desempenho, eles acabaram reduzindo o desempenho das CPUs em até 30% nos piores cenários, com uma redução de desempenho de 2 a 14% sendo mais representativa das experiências das pessoas.
As vulnerabilidades afetaram muitas CPUs x86, CPUs IBM POWER e algumas CPUs baseadas em ARM. O colapso afeta o hardware normalmente encontrado em computadores pessoais e também em servidores em nuvem. Spectre afeta computadores pessoais, servidores em nuvem e dispositivos móveis. Todas as CPUs da Intel de 1995 a meados de 2018 eram vulneráveis aos problemas (com a exclusão das linhas Itanium e Atom antes de 2013). CPUs da AMD não foram afetadas pelo Meltdown, mas eram vulneráveis ao Spectre.
Os patches de mitigação de software foram desenvolvidos e lançados por fornecedores de sistemas operacionais que resolvem a maioria dos problemas. Desde meados de 2018, a Intel atualizou seu design de CPU para incluir atenuações de hardware para os problemas.
Ambos os problemas podem ser explorados por meio de páginas da web mal-intencionadas com JavaScript elaborado, por isso é realmente importante garantir que os patches de segurança sejam instalados em todos os sistemas, mesmo se a perda de desempenho for severa. Infelizmente, os problemas não podem ser corrigidos com um único patch, pois são problemas extremamente complexos com integração profunda ao hardware. Os patches de segurança continuarão a ser implementados com o tempo, conforme novas variantes forem descobertas.