A AMD confirmou a vulnerabilidade potencial das CPUs AMD Zen 3 ao ataque Spectre-STL

A AMD publicou um relatório analisando a segurança da tecnologia de otimização PSF (Predictive Store Forwarding) implementada nos processadores da série Zen 3. O estudo confirmou teoricamente a aplicabilidade do método de ataque Spectre-STL (Spectre-v4), identificado em maio de 2018, para Tecnologia PSF, mas na prática ainda não foram encontrados modelos de código capazes de levar a um ataque e o perigo geral é avaliado como insignificante.

Lembremos que o ataque Spectre-v4 (Speculative Store Bypass) é baseado na restauração de dados que se estabeleceram no cache do processador após descartar o resultado da execução especulativa de operações ao processar operações alternadas de gravação e leitura usando endereçamento indireto. Quando uma operação de leitura segue uma operação de gravação (por exemplo, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), o deslocamento do endereço de leitura pode já ser conhecido devido a operações semelhantes sendo executadas (operações de leitura são executada com muito mais frequência e as leituras podem ser realizadas a partir do cache) e o processador pode realizar especulativamente leituras antes das gravações, sem esperar que o deslocamento indireto da gravação seja calculado.

Este recurso permite que uma instrução de leitura acesse um valor antigo em algum endereço enquanto a operação de armazenamento ainda não foi concluída. Se houver um erro de previsão, a operação especulativa malsucedida será descartada, mas os vestígios de sua execução permanecerão no cache do processador e poderão ser recuperados por um dos métodos de determinação do conteúdo do cache com base na análise das mudanças no acesso tempo para dados armazenados em cache e não armazenados em cache.

Adicionado aos processadores AMD Zen 3, o PSF otimiza o STLF (Store-To-Load-Forwarding), que realiza operações de leitura especulativamente, prevendo a relação entre as operações de leitura e gravação. Ao utilizar STLF clássico, o processador realiza uma operação de "carregamento" nos dados encaminhados diretamente do comando "store" anterior, sem esperar que o resultado seja realmente gravado na memória, mas certificando-se de que os endereços utilizados no "carregamento" e os comandos "store" correspondem. A otimização PSF torna a verificação de endereço especulativa e executa uma operação de "carregamento" antes que a informação de endereço tenha sido computada se um par armazenamento/carga manipulando um único endereço tiver sido executado anteriormente. Se a previsão falhar, o estado será revertido, mas os dados permanecerão no cache.

Um ataque ao PSF só é possível dentro da estrutura de um nível de privilégios, cobre apenas o contexto do processo atual e é bloqueado por métodos de isolamento de espaço de endereço ou mecanismos de sandbox de hardware. Nesse caso, os métodos de sandbox de software nos processos podem ser potencialmente afetados pelo problema. O ataque representa uma ameaça a sistemas como navegadores, máquinas virtuais de execução de código e JITs que executam código de terceiros em um único processo (o ataque pode permitir que código não confiável em área restrita obtenha acesso a outros dados do processo).

A AMD forneceu vários métodos para desabilitar completa ou seletivamente o PSF, mas dado o risco insignificante para a maioria dos aplicativos, recomendou que essa otimização não fosse desabilitada por padrão. Para proteger seletivamente os processos que isolam aqueles que executam código não confiável, propõe-se desabilitar o PSF definindo os bits MSR “SSBD” e “PSFD”, inclusive para threads individuais. Foram preparados patches para o kernel Linux com a implementação das opções de linha de comando “psfd” e “nopsfd” que controlam como o PSF é ligado e desligado.

Fonte: opennet.ru

Adicionar um comentário