Plundervolt é um novo método de ataque aos processadores Intel que afeta a tecnologia SGX

Intel lançado atualização de microcódigo que corrige vulnerabilidade (CVE-2019-14607) permitindo através da manipulação do mecanismo dinâmico de controle de tensão e frequência na CPU, iniciam danos ao conteúdo das células de dados, inclusive em áreas usadas para cálculos em enclaves Intel SGX isolados. O ataque é denominado Plundervolt e potencialmente permite que um usuário local aumente seus privilégios no sistema, cause uma negação de serviço e obtenha acesso a dados confidenciais.

O ataque é perigoso apenas no contexto de manipulações com cálculos em enclaves SGX, pois requer direitos de root no sistema para ser executado. No caso mais simples, um invasor pode distorcer as informações processadas no enclave, mas em cenários mais complexos, a possibilidade de recriar as chaves privadas armazenadas no enclave usadas para criptografia usando os algoritmos RSA-CRT e AES-NI não é excluído. A técnica também pode ser utilizada para gerar erros em algoritmos inicialmente corretos para provocar vulnerabilidades ao trabalhar com memória, por exemplo, para organizar o acesso a uma área fora do limite do buffer alocado.
Código protótipo para realizar um ataque publicado no GitHub

A essência do método é criar condições para a ocorrência de corrupções inesperadas de dados durante os cálculos no SGX, das quais o uso de criptografia e autenticação de memória no enclave não protege. Para introduzir distorção, descobriu-se que era possível usar interfaces de software padrão para controle de frequência e tensão, geralmente usadas para reduzir o consumo de energia durante o tempo ocioso do sistema e ativar o desempenho máximo durante trabalhos intensivos. As características de frequência e tensão abrangem todo o chip, incluindo o impacto da computação em um enclave isolado.

Ao alterar a tensão, você pode criar condições sob as quais a carga não é suficiente para regenerar uma célula de memória dentro da CPU e seu valor muda. Diferença chave do ataque Martelo de remo é que RowHammer permite alterar o conteúdo de bits individuais na memória DRAM lendo ciclicamente dados de células vizinhas, enquanto Plundervolt permite alterar bits dentro da CPU quando os dados já foram carregados da memória para computação. Este recurso permite contornar os mecanismos de controle de integridade e criptografia usados ​​​​no SGX para dados na memória, uma vez que os valores na memória permanecem corretos, mas podem ser distorcidos durante as operações com eles antes que o resultado seja gravado na memória.

Se este valor modificado for utilizado no processo de multiplicação do processo de criptografia, a saída será rejeitada com texto cifrado incorreto. Tendo a capacidade de entrar em contato com um manipulador no SGX para criptografar seus dados, um invasor pode, causando falhas, acumular estatísticas sobre alterações no texto cifrado de saída e, em poucos minutos, restaurar o valor da chave armazenada no enclave. O texto de entrada original e o texto cifrado de saída correto são conhecidos, a chave não muda e a saída de um texto cifrado incorreto indica que algum bit foi distorcido para o valor oposto.

Tendo analisado os pares de valores de textos cifrados corretos e corrompidos acumulados durante diversas falhas, utilizando métodos de análise diferencial de falhas (DFA, Análise Diferencial de Falhas) posso prever chaves prováveis ​​usadas para criptografia simétrica AES e, em seguida, analisando as interseções de chaves em diferentes conjuntos, determine a chave desejada.

Vários modelos de processadores Intel são afetados pelo problema, incluindo CPUs Intel Core com 6
10ª geração, bem como a quinta e sexta gerações do Xeon E3, a primeira e a segunda gerações do Intel Xeon Scalable, Xeon D,
Xeon W e Xeon E.

Lembramos que a tecnologia SGX (Extensões de proteção de software) apareceu nos processadores Intel Core de sexta geração (Skylake) e oferece uma série de instruções que permitem que aplicativos de nível de usuário aloquem áreas de memória fechadas - enclaves, cujo conteúdo não pode ser lido ou modificado nem mesmo pelo kernel e código executado nos modos ring0, SMM e VMM. É impossível transferir o controle para o código no enclave usando funções de salto tradicionais e manipulações com registros e pilha; para transferir o controle para o enclave, é usada uma nova instrução especialmente criada que realiza uma verificação de autoridade. Neste caso, o código colocado no enclave pode usar métodos de chamada clássicos para acessar funções dentro do enclave e instruções especiais para chamar funções externas. A criptografia de memória enclave é usada para proteger contra ataques de hardware, como a conexão a um módulo DRAM.

Fonte: opennet.ru

Adicionar um comentário