Pesquisadores de segurança publicaram no Projeto Zero uma nova vulnerabilidade chamada Spectre and Meltdown, que permite que um programa roube informações da memória de outros programas. Afeta as arquiteturas Intel, AMD e ARM.
Essa falha pode ser explorada remotamente, visitando um site JavaScript. Detalhes técnicos podem ser encontrados no site redhat , equipe de segurança do Ubuntu .
Vazamento de informações através de ataques especulativos ao canal lateral de execução (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754, também conhecido como Spectre and Meltdown)
Foi descoberto que uma nova classe de ataques de canal lateral afeta a maioria dos processadores, incluindo processadores da Intel, AMD e ARM. O ataque permite que processos maliciosos do espaço do usuário leiam a memória do kernel e o código malicioso nos convidados para ler a memória do hipervisor. Para resolver o problema, serão necessárias atualizações no kernel do Ubuntu e no microcódigo do processador. Essas atualizações serão anunciadas nos futuros Avisos de segurança do Ubuntu assim que estiverem disponíveis.
Exemplo de implementação em JavaScript
Como prova de conceito, o código JavaScript foi escrito que, quando executado no navegador Google Chrome, permite que o JavaScript leia a memória privada do processo em que é executado.
Meu sistema parece estar afetado pela vulnerabilidade do espectro. Eu compilei e executei essa prova de conceito ( spectre.c
).
Informação do sistema:
$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux
$ cat /proc/cpuinfo
model name : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516
Como atenuar as vulnerabilidades Spectre e Meldown nos sistemas Linux?
Leitura adicional: Usando o Meltdown para roubar senhas em tempo real .
Atualizar
Usando a opção Spectre & Meltdown Checker
depois de alternar para a 4.9.0-5
versão do kernel após a resposta @Carlos Pasqualini, porque uma atualização de segurança está disponível para mitigar o cve-2017-5754 no debian Stretch:
CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel: NO (only 31 opcodes found, should be >= 70)
> STATUS: VULNERABLE (heuristic to be improved when official patches become available)
CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
* Hardware (CPU microcode) support for mitigation: NO
* Kernel support for IBRS: NO
* IBRS enabled for Kernel space: NO
* IBRS enabled for User space: NO
* Mitigation 2
* Kernel compiled with retpoline option: NO
* Kernel compiled with a retpoline-aware compiler: NO
> STATUS: VULNERABLE (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)
CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI): YES
* PTI enabled and active: YES
> STATUS: NOT VULNERABLE (PTI mitigates the vulnerability)
Atualização 25 de janeiro de 2018
O spectre-meltdown-checker
script é oficialmente empacotado pelo debian, está disponível para o Debian Stretch através do repositório de backports, Buster e Sid.
Bypass de armazenamento especulativo (SSB) - também conhecido como variante 4
Sistemas com microprocessadores que utilizam execução especulativa e execução especulativa de leituras de memória antes que os endereços de todas as gravações anteriores sejam conhecidas podem permitir a divulgação não autorizada de informações a um invasor com acesso local ao usuário por meio de uma análise de canal lateral.
Rogue System Register Read (RSRE) - também conhecido como Variante 3a
Sistemas com microprocessadores que utilizam execução especulativa e que executam leituras especulativas de registros do sistema podem permitir a divulgação não autorizada de parâmetros do sistema a um invasor com acesso local ao usuário por meio de uma análise de canal lateral.
Editar 27 de julho de 2018
NetSpectre: Leia memória arbitrária na rede
Neste artigo, apresentamos o NetSpectre, um novo ataque baseado na variante Spectre 1, que não requer código controlado pelo invasor no dispositivo de destino, afetando bilhões de dispositivos. Semelhante a um ataque Spectre local, nosso ataque remoto requer a presença de um gadget Spectre no código do alvo. Mostramos que os sistemas que contêm os gadgets Spectre necessários em uma interface de rede ou API exposta podem ser atacados com nosso ataque remoto Specter genérico, permitindo a leitura de memória arbitrária na rede. O atacante envia apenas uma série de solicitações criadas à vítima e mede o tempo de resposta para vazar um valor secreto da memória da vítima.