Novo ataque às estruturas microarquiteturais dos processadores Intel e AMD

Um grupo de pesquisadores da Universidade da Virgínia e da Universidade da Califórnia apresentou um novo tipo de ataque às estruturas microarquiteturais dos processadores Intel e AMD, identificado durante a engenharia reversa de capacidades de CPU não documentadas. O método de ataque proposto envolve o uso de um cache micro-op intermediário em processadores, que pode ser usado para recuperar informações acumuladas durante a execução especulativa de instruções.

Para fins de otimização, o processador começa a executar algumas instruções em modo especulativo, sem esperar a conclusão dos cálculos anteriores, e se então determinar que a previsão não foi justificada, ele reverte a operação ao seu estado original, mas os dados processados ​​durante a execução especulativa é depositada em um cache, cujo conteúdo pode ser determinado.

Observa-se que o novo método supera significativamente o ataque Spectre v1, torna o ataque difícil de detectar e não é bloqueado pelos métodos existentes de proteção contra ataques de canal lateral projetados para bloquear vulnerabilidades causadas pela execução especulativa de instruções (por exemplo, o uso da instrução LFENCE bloqueia vazamentos nos últimos estágios da execução especulativa, mas não protege contra vazamentos através de estruturas microarquiteturais).

O método afeta os modelos de processadores Intel e AMD lançados desde 2011, incluindo as séries Intel Skylake e AMD Zen. As CPUs modernas dividem instruções complexas do processador em microoperações mais simples do tipo RISC, que são armazenadas em cache separado. Este cache é fundamentalmente diferente dos caches de nível superior, não é diretamente acessível e atua como um buffer de fluxo para acesso rápido aos resultados da decodificação de instruções CISC em microinstruções RISC. No entanto, os pesquisadores encontraram uma maneira de criar condições que surgem quando há conflitos de acesso ao cache e permitem julgar o conteúdo do cache de microoperações analisando diferenças no tempo de execução de determinadas ações.

Novo ataque às estruturas microarquiteturais dos processadores Intel e AMD

O cache de microoperação nos processadores Intel é segmentado em relação aos threads da CPU (Hyper-Threading), enquanto os processadores AMD Zen usam um cache compartilhado, o que cria condições para vazamento de dados não apenas dentro de um thread de execução, mas também entre diferentes threads no SMT (possível vazamento de dados entre códigos executados em diferentes núcleos lógicos da CPU).

Os pesquisadores propuseram um método básico para detectar alterações no cache de microoperações e diversos cenários de ataque que permitem criar canais ocultos de transmissão de dados e usar código vulnerável para vazar dados confidenciais, tanto dentro de um único processo (por exemplo, para vazar dados do processo ao executar código de terceiros em motores com JIT e em máquinas virtuais) e entre o kernel e processos no espaço do usuário.

Ao organizar uma variante do ataque Spectre usando cache de microoperação, os pesquisadores conseguiram atingir desempenho de 965.59 Kbps com taxa de erro de 0.22% e 785.56 Kbps ao usar correção de erros, no caso de organizar um vazamento dentro do mesmo endereço espaço e nível de privilégio. Com um vazamento abrangendo diferentes níveis de privilégio (entre o kernel e o espaço do usuário), o desempenho foi de 85.2 Kbps com correção de erros adicionada e 110.96 Kbps com uma taxa de erro de 4%. Ao atacar os processadores AMD Zen, criando um vazamento entre os diferentes núcleos lógicos da CPU, o desempenho foi de 250 Kbps com taxa de erro de 5.59% e 168.58 Kbps com correção de erros. Comparado ao método clássico Spectre v1, o novo ataque foi 2.6 vezes mais rápido.

Espera-se que a proteção contra um ataque de cache micro-op exija alterações que reduzirão o desempenho mais do que se você habilitasse a proteção contra ataques Spectre. Como compromisso ideal, propõe-se bloquear tais ataques não desativando o cache, mas no nível do monitoramento de anomalias e da identificação de estados de cache típicos de ataques.

Assim como nos ataques Spectre, organizar um vazamento do kernel ou de outros processos requer a execução de uma determinada sequência de comandos (gadgets) por parte dos processos vítimas, levando à execução especulativa de instruções. Cerca de 100 gadgets semelhantes foram encontrados no kernel Linux, que serão removidos, mas soluções alternativas para sua geração são encontradas periodicamente, por exemplo, relacionadas à execução de programas BPF especialmente projetados no kernel.

Fonte: opennet.ru

Adicionar um comentário