Novo ataque NetSpectre não exige que a vítima baixe ou execute código malicioso

Segurança / Novo ataque NetSpectre não exige que a vítima baixe ou execute código malicioso

NetSpectre Bombards Machine Ports to Gain Entry

4 minutos lidos

Um novo ataque à CPU da classe Spectre recebeu atenção de cientistas acadêmicos quando eles lançaram recentemente um artigo de pesquisa intitulado “NetSpectre: Leia memória arbitrária pela rede”, que apresenta detalhes detalhados sobre como essa classe de ataque à CPU funciona.



O que torna o novo ataque da CPU Spectre um pouco assustador é que ele não requer o invasor para enganar sua vítima para fazer o download e executar scripts maliciosos em sua máquina, ou mesmo acessar um site que executa JavaScript malicioso no navegador do usuário.

O NetSpectre simplesmente bombardeia as portas de rede de uma máquina até encontrar uma maneira de atingir seus objetivos.



“Ataques especulativos induzem uma vítima a realizar especulativamente operações que não ocorreriam durante o processamento estritamente serializado em ordem das instruções do programa, e que vazam as informações confidenciais da vítima por meio de um canal secreto para um invasor”



NetSpectre não vem sem suas próprias falhas, no entanto. Tem uma velocidade de exfiltração incrivelmente lenta, cerca de 15 bits por hora para ataques a serem realizados por meio de uma conexão de rede, e direcionando os dados armazenados no cache da CPU.



No trabalho de pesquisa, os acadêmicos foram capazes de atingir até 60 bits / hora com uma variação especial do NetSpectre que direcionou os dados processados ​​por meio do módulo AVX2 da CPU, que é específico para CPUs Intel.

Em ambos os casos, o NetSpectre é atualmente considerado muito lento para ser valioso para os invasores, o que significa que o NetSpectre é apenas um teórico ameaça, não algo que as empresas deveriam se esconder para se proteger agora mesmo . No entanto, à medida que a tecnologia avança, as velocidades de exfiltração sem dúvida aumentarão e então temos uma nova classe de ataques de CPU viáveis ​​e incrivelmente fáceis de executar para nos preocuparmos.

O novo ataque NetSpectre está relacionado à vulnerabilidade Spectre V1 (CVE-2017-5753) que os pesquisadores do Google revelaram no início deste ano (2018). Isso significa que todas as CPUs que podem ser afetadas pelo Spectre V1 também são consideradas NetSpectre, se ele for implantado com o sistema operacional e firmware de CPU adequados.



Existem atualmente duas variantes de ataque para NetSpectre: Extração de dados do sistema de destino e quebra remota de ASLR (Address Space Layout Randomisation) no sistema de destino.

A cadeia de eventos para o primeiro tipo de ataque é assim:

  1. Controle o preditor de ramificação.
  2. Redefina o estado do elemento da microarquitetura.
  3. Deixe escapar um pouco para o elemento microarquitetura.
  4. Exponha o estado do elemento da microarquitetura à rede.
  • Na etapa 1, o invasor desconhece o preditor de ramificação da vítima para executar um ataque de Espectro. Para controlar incorretamente o preditor de ramificação, o invasor aproveita o gadget de vazamento com índices válidos. Os índices válidos garantem que o preditor de ramificação aprenda a sempre assumir a ramificação, ou seja, o preditor de ramificação especula que a condição é verdadeira. Observe que esta etapa depende apenas do gadget de vazamento. Não há feedback para o invasor e, portanto, o estado da microarquitetura não precisa ser redefinido ou transmitido.
  • Na etapa 2, o invasor precisa redefinir o estado da microarquitetura para permitir a codificação de bits vazados usando um elemento da microarquitetura. Esta etapa depende muito do elemento de microarquitetura usado, por exemplo, ao aproveitar o cache, o invasor baixa um arquivo grande da vítima; se AVX2 for usado, o invasor simplesmente espera mais de 1 milissegundo. Após esta etapa, todos os requisitos são satisfeitos para vazar um pouco da vítima.
  • Na etapa 3, o invasor explora a vulnerabilidade Spectre para vazar um único bit da vítima. Como o preditor de ramificação é maltratado na etapa 1, fornecer um índice fora dos limites para o dispositivo de vazamento executará o caminho interno e modificará o elemento de microarquitetura, ou seja, o bit é codificado no elemento de microarquitetura.
  • Na etapa 4, o invasor deve transmitir as informações codificadas pela rede. Esta etapa corresponde à segunda fase do ataque Spectre original. O invasor envia um pacote de rede que é gerenciado pelo dispositivo de transmissão e mede o tempo desde o envio do pacote até a chegada da resposta.

Método de ataque # 2: quebrando ASLR remotamente

  1. Controle o preditor de ramificação.
  2. Acesse um índice fora dos limites para armazenar em cache um local de memória (conhecido).
  3. Meça o tempo de execução de uma função por meio da rede para deduzir se o acesso fora dos limites armazenou em cache uma parte dela.

Medidas de espectro

A Intel e a AMD recomendam o uso da instrução lfence como barreira de especulação. Esta instrução deve ser inserida após a verificação dos limites críticos de segurança para interromper a execução especulativa. No entanto, adicionar isso a cada verificação de limites tem uma sobrecarga de desempenho significativa.

Como o NetSpectre é um ataque baseado em rede, ele não só pode ser evitado pela mitigação de Spectre, mas também por meio de contramedidas na camada de rede. Um ataque NetSpectre trivial pode ser facilmente detectado por uma proteção DDoS, já que vários milhares de pacotes idênticos são enviados da mesma fonte.

No entanto, um invasor pode escolher qualquer compensação entre pacotes por segundo e bits perdidos por segundo. Assim, a velocidade na qual os bits vazam pode simplesmente ser reduzida abaixo do limite que o monitoramento DDoS pode detectar. Isso é verdadeiro para qualquer monitoramento que tenta detectar ataques em andamento, por exemplo, sistemas de detecção de intrusão.

Embora o ataque teoricamente não seja evitado, em algum ponto o ataque se torna inviável, pois o tempo necessário para vazar um pouco aumenta drasticamente. Outro método para atenuar o NetSpectre é adicionar ruído artificial à latência da rede. Como o número de medições depende da variação na latência da rede, o ruído adicional requer que um invasor execute mais medições. Portanto, se a variação na latência da rede for alta o suficiente, os ataques NetSpectre se tornarão inviáveis ​​devido ao grande número de medições necessárias.