A Intel atualização de microcódigo que corrige (CVE-2019-14607), via manipulações no mecanismo de controle dinâmico da tensão e frequência da CPU, iniciar a corrupção do conteúdo das células de dados, incluindo aquelas utilizadas em cálculos em enclaves isolados do Intel SGX. O ataque foi denominado Plundervolt e potencialmente permite que um usuário local obtenha elevação de privilégios no sistema, cause negação de serviço e acesse dados confidenciais.
O ataque representa um perigo apenas no contexto de manipulação de cálculos em enclaves SGX, pois para sua execução requer privilégios de root no sistema. Em um cenário simples, o atacante pode causar distorções nas informações processadas no enclave, mas em cenários mais complexos existe a possibilidade de recriação de chaves privadas armazenadas no enclave, usadas para criptografia com algoritmos RSA-CRT e AES-NI. A técnica também pode ser aplicada para gerar erros em algoritmos inicialmente corretos para provocar vulnerabilidades ao lidar com memória, como o acesso a áreas além do buffer alocado.
Protótipo de código para realizar o ataque no GitHub
A essência do método é criar condições para surgimento de distorções imprevistas nos dados durante os cálculos em SGX, das quais a implementação de criptografia e autenticação de memória no enclave não protege. Para introduzir distorções, foi possível utilizar interfaces de programação padrão para gerenciar frequência e tensão, normalmente aplicadas para reduzir o consumo de energia durante ociosidade do sistema e ativar o máximo desempenho durante tarefas intensivas. As características de frequência e tensão abrangem todo o chip, impactando também a execução de cálculos no enclave isolado.
Ao alterar a tensão, é possível criar condições em que a carga é insuficiente para regenerar a célula de memória dentro da CPU, levando a uma alteração no seu valor. A principal diferença em relação ao ataque é o que RowHammer permite alterar o conteúdo de bits individuais na memória DRAM, através da leitura cíclica de dados de células vizinhas, enquanto o Plundervolt permite a alteração de bits dentro da CPU, quando os dados já estão carregados da memória para a execução de cálculos. Essa característica permite contornar os mecanismos de controle de integridade e criptografia de dados na memória aplicados no SGX, já que os valores na memória permanecem corretos, mas podem ser distorcidos durante operações com eles, até que o resultado seja gravado na memória.
Se o valor alterado for utilizado em um processo de multiplicação na criptografia, o resultado será um texto cifrado incorreto. Tendo a capacidade de acessar o manipulador no SGX para criptografar seus dados, um atacante pode provocar falhas para acumular estatísticas sobre a alteração do texto cifrado na saída e, em alguns minutos, recuperar o valor da chave armazenada no enclave. O texto original na entrada e o texto cifrado correto na saída são conhecidos, a chave não muda, e a saída de um texto cifrado incorreto indica a distorção de algum bit para o oposto.
Analisando os pares acumulados de valores corretos e distorcidos dos textos cifrados durante várias falhas, usando métodos de Análise Diferencial de Falhas (DFA, ) é possível as chaves prováveis usadas para a criptografia simétrica AES, e então, analisando as interseções das chaves em diferentes conjuntos, determinar a chave procurada.

O problema afeta vários modelos de processadores Intel, incluindo a CPU Intel Core da 6ª à 10ª geração, assim como a 5ª e 6ª gerações Xeon E3, 1ª e 2ª gerações Intel Xeon Scalable, Xeon D,
Xeon W e Xeon E.
Lembre-se de que a tecnologia SGX (
Software Guard Extensions) surgiu nos processadores Intel Core de sexta geração (Skylake) e uma série de instruções que permitem isolar áreas de memória fechadas para aplicativos de nível do usuário — enclaves, cujo conteúdo não pode ser lido ou modificado nem mesmo pelo núcleo e pelo código que é executado nos modos ring0, SMM e VMM. Não é possível passar o controle para o código dentro do enclave utilizando funções de transição convencionais e manipulações com registradores e pilhas — uma nova instrução criada especialmente para transferir o controle para o enclave, realizando uma verificação de permissões, é utilizada. O código inserido no enclave pode utilizar métodos clássicos de chamada para acessar funções dentro do enclave e uma instrução especial para chamar funções externas. Para proteção contra ataques de hardware, como a conexão ao módulo DRAM, é aplicado criptografia na memória do enclave.
Fonte: opennet.ru
