Spectre (informática)
Spectre é uma falha de segurança encontrada no design da maioria dos microprocessadores, modernos. O nome se dá ao fato dos processadores que realizam branch prediction e Speculative execution que basicamente são tecnologias usadas para tentar maximizar a performance, tentando realizar a predição do código, dessa forma poupando tempo de execução, onde essêncialmente foi encontrada a vulnerabilidade.
Índice
Exposição[editar | editar código-fonte]
Duas exposições de vulnerabilidade estão relacionadas ao spectre, as referências oficiais são CVE-2017-5753 e CVE-2017-5715 e foram relatadas em 3 de janeiro de 2018, em conjunto com outra vulnerabilidade chamada Meltdown, a descoberta foi feita pelo time de pesquisadores: Jann Horn, Paul Kocher, Daniel Genkin, Mike Hamburg, Moritz Lipp e Yuval Yarom.
Impacto[editar | editar código-fonte]
A grande maioria dos sistemas são afetados pelo Spectre: Desktops, Laptops, Servidores em Nuvem, Smartphones. Mais especificamente, todos os processadores modernos capazes de realizar mutiprocessamento são potencialmente vulneráveis. Sendo verificado o Spectre em processadores Intel, AMD, e ARM.
Através dessa vulnerabilidade é possível fazer com que o processador execute instruções atípicas e assim fure o isolamento entre aplicações, como por exemplo em navegadores, e faça com que o código executado tenha acesso a dados confidenciais de outras aplicações. [1]
Visão Geral[editar | editar código-fonte]
Os ataques envolvem induzir a vitima a realizar operações, que não ocorrem durante a execução correta do programa, podendo revelar dados confidenciais da vitima, o ataque se dá em três fases, fase de configuração, execução de instruções e a fase final.
Fase de Configuração[editar | editar código-fonte]
A fase configuração realiza operações que induzem o processador a executar a predição especulativa de maneira errônea, possibilitando a exploração. Adicionalmente a fase de configuração induz a leitura direcionada de memória evitando que o processador 'consulte' o cache para obter um valor que é necessário para determinar o destino de uma instrução de ramificação. Durante essa fase o atacante prepara um canal que poderá ser usado para extrair informações da vítima.[1]
Fase de Execução de Instruções[editar | editar código-fonte]
Durante essa fase o processador executa instruções que transferem informações sensíveis, do contexto da vítima, para um canal microarquitetural secundário, criado na primeira fase. Isso pode ser desencadeado por o invasor solicitar que a vítima execute uma ação (por exemplo, através de uma syscall, soquet, arquivo, etc.).[1]
Fase Final[editar | editar código-fonte]
O processo de recuperação consiste em marcar o tempo que as leituras são realizadas nos endereços de memória, nas linhas de cache que estão sendo monitoradas.[1]