A Intel informações sobre o novo em seus processadores — (Microarchitectural Data Sampling). Assim como os ataques anteriores da classe Spectre, os novos problemas podem levar ao vazamento de dados sensíveis do sistema operacional, máquinas virtuais e de outros processos. Acredita-se que os problemas foram inicialmente identificados por funcionários e parceiros da Intel durante uma auditoria interna, após o que informações sobre problemas semelhantes na Intel foram repassadas a pesquisadores independentes. Processadores AMD e ARM não são afetados pelo problema.
Com base nos problemas identificados, pesquisadores da Universidade Técnica de Graz (Áustria) vários ataques práticos por canais laterais:
- () — permite extrair informações confidenciais de outros processos, do sistema operacional, de máquinas virtuais e de enclaves protegidos (TEE, Trusted Execution Environment). Por exemplo, foi demonstrada a possibilidade de determinar o histórico de páginas abertas no Tor browser, executado em outra máquina virtual, assim como identificar chaves de acesso e senhas utilizadas em aplicativos;
- () — possibilita o vazamento de informações entre diversas áreas isoladas nos processadores Intel, como buffers de preenchimento, buffers de armazenamento e portas de carregamento. Exemplos de realização de ataques foram mostrados para organizar vazamentos de outros processos, do sistema operacional, de máquinas virtuais e de enclaves protegidos. Por exemplo, foi demonstrado como descobrir o conteúdo de um hash da senha root a partir de /etc/shadow durante tentativas periódicas de autenticação (o ataque levou 24 horas);

Além disso, foi mostrado um exemplo de ataque utilizando JavaScript e WebAssembly ao abrir uma página maliciosa no motor SpiderMonkey (em navegadores modernos, tal ataque é improvável devido à limitação da precisão do temporizador e às medidas de proteção contra Spectre);

- () — permite ler dados recentemente gravados pelo sistema operacional e determinar a disposição da memória do SO para facilitar a realização de outros ataques;
- — explora otimizações do CPU relacionadas ao buffer de armazenamento e pode ser usado para contornar o mecanismo de randomização do espaço de endereçamento do núcleo (KASLR), para monitorar o estado do sistema operacional ou para vazamentos em combinação com gadgets baseados em métodos Spectre.
Identificados :
- CVE-2018-12126 — MSBDS (Microarchitectural Store Buffer Data Sampling), recuperação de conteúdo de buffers de armazenamento. Usado no ataque Fallout. O nível de risco foi definido em 6.5 pontos (CVSS);
- CVE-2018-12127 — MLPDS (Microarchitectural Load Port Data Sampling), recuperação de conteúdo de portas de carregamento. Usado no ataque RIDL. CVSS 6.5;
- CVE-2018-12130 — MFBDS (Microarchitectural Fill Buffer Data Sampling), recuperação de conteúdo de buffers de preenchimento. Usado nos ataques ZombieLoad e RIDL. CVSS 6.5;
- CVE-2019-11091 — MDSUM (Microarchitectural Data Sampling Uncacheable Memory), recuperação de conteúdo de memória não cacheável. Usado no ataque RIDL. CVSS 3.8.
dos problemas identificados na aplicabilidade de métodos de análise por canais laterais em dados em estruturas microarquiteturais aos quais as aplicações não têm acesso direto. Fala-se de estruturas de baixo nível como buffers de preenchimento (Line Fill Buffer), buffers de armazenamento (Store Buffer) e portas de carregamento (Load Port), que são blocos menores do que o cache de primeiro nível (L1D), o cache de carregamento de dados (RDCL) ou L1TF (L1 Terminal Fault), e, consequentemente, incluem menos informações e são atualizados de forma mais intensa.

Os ataques por canais laterais em estruturas microarquiteturais são significativamente mais difíceis de realizar em comparação com métodos de recuperação de conteúdo de cache e exigem o rastreamento e a análise de grandes volumes de dados para determinar sua relação com endereços específicos na memória (essencialmente, o atacante não pode interceptar intencionalmente dados específicos, mas pode acumular vazamentos ao longo do tempo e aplicar métodos estatísticos para reconstruir certos tipos de dados). Além disso, o ataque afeta apenas os dados no mesmo núcleo físico do CPU que o código do atacante.
Os métodos propostos para determinação do conteúdo de estruturas microarquiteturais baseiam-se no uso dessas estruturas durante a execução especulativa de exceções (fault) ou operações de carregamento e armazenamento.
Durante a execução especulativa, o conteúdo de estruturas internas é redirecionado para ser processado em registradores ou cache. As operações especulativas não são concluídas e o resultado é descartado, mas o conteúdo redirecionado pode ser determinado através de métodos de análise de cache por canais laterais.
As portas de carregamento são utilizadas pelo processador para obter dados da memória ou subsistema de entrada/saída e fornecer as informações obtidas aos registradores da CPU. Devido a uma particularidade da implementação, os dados de operações de carga mais antigas permanecem nas portas até serem sobrescritos por novos dados, o que permite, indiretamente, determinar o estado dos dados na porta de carregamento por meio de manipulações com exceções (fault) e instruções SSE/AVX/AVX-512, que carregam mais de 64 bits de dados. Em tais condições, as operações de carga especulativamente revelam valores desatualizados de dados de estruturas internas em operações dependentes. De forma semelhante, ocorre um vazamento através do buffer de armazenamento, usado para acelerar a gravação no cache da CPU e que inclui uma tabela de endereços, valores e flags, assim como através do buffer de preenchimento, que contém dados que ainda não estão no cache L1 (cache-miss), enquanto são carregados de caches de outros níveis.
O problema modelos de processadores Intel, lançados a partir de 2011 (começando pela 6ª geração). Nesse caso, vulnerabilidades de hardware são bloqueadas, começando com alguns modelos da 8ª e 9ª gerações do Intel Core e a 2ª geração do Intel Xeon Scalable (pode ser verificado através do bit ARCH_CAP_MDS_NO no IA32_ARCH_CAPABILITIES MSR). As vulnerabilidades já estão no nível de firmwares, microcódigo e sistemas operacionais. Segundo a Intel, a perda de desempenho após a ativação da correção para a maioria dos usuários 3%. Com a desativação da tecnologia Hyper-Threading, a queda de desempenho pode chegar a 9% no teste SPECint_rate_base, até 11% em cálculos inteiros ativos e até 19% na execução de aplicações Java em servidor (com HT ativado, a redução de desempenho é quase inexistente). As correções praticamente não afetam o desempenho de operações relacionadas a entrada/saída.
No núcleo Linux, a proteção contra MDS nas versões atuais 5.1.2, 5.0.16,
baseia-se na limpeza do conteúdo dos buffers microarquitetônicos no momento do retorno do kernel para o espaço do usuário ou ao transferir o controle para o sistema convidado, para o qual a instrução VERW é utilizada. Para que a proteção funcione, é necessário que o suporte ao modo MD_CLEAR esteja implementado na atualização mais recente do microcódigo. Para proteção completa, também recomenda-se desabilitar o Hyper Threading. Para verificar a vulnerabilidade do sistema no núcleo do Linux O manipulador «/sys/devices/system/cpu/vulnerabilities/mds». Para gerenciar a ativação de vários modos de bloqueio de vulnerabilidades no núcleo, foi adicionado um parâmetro «mds=», que pode aceitar os valores «full», «full,nosmt» (desativação do Hyper-Threads), «vmwerv» e «off».
As atualizações de pacotes já foram lançadas para e , mas ainda não estão disponíveis para , e .
A correção para bloquear vazamentos de dados de máquinas virtuais também para o hipervisor Xen. Para proteger sistemas de virtualização que fazem a chamada do comando L1D_FLUSH antes de transferir o controle para outra máquina virtual, e para proteger enclaves Intel SGX, uma atualização de microcódigo é suficiente.
Fonte: opennet.ru


