Vulnerabilidades no mecanismo MMIO dos processadores Intel

A Intel divulgou informações sobre uma nova classe de vazamentos de dados por meio de estruturas microarquiteturais de processadores, que permitem, por meio da manipulação do mecanismo MMIO (Memory Mapped Input Output), determinar informações processadas em outros núcleos de CPU. Por exemplo, as vulnerabilidades permitem que dados sejam extraídos de outros processos, enclaves Intel SGX ou máquinas virtuais. As vulnerabilidades são específicas apenas para CPUs Intel; processadores de outros fabricantes não são afetados pelas vulnerabilidades.

As vulnerabilidades aparecem em várias CPUs Intel, incluindo processadores baseados nas microarquiteturas Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake e Rocketlake, bem como Xeon EP/EX, Scalable e alguns processadores de servidor Atom. Para realizar um ataque é necessário acesso ao MMIO, que, por exemplo, pode ser obtido em sistemas de virtualização que fornecem a capacidade de acessar o MMIO para sistemas convidados controlados pelo invasor. Uma correção também pode ser necessária para sistemas que usam enclaves isolados Intel SGX (Software Guard Extensions).

O bloqueio da vulnerabilidade requer uma atualização do microcódigo e o uso de métodos adicionais de proteção de software baseados no uso da instrução VERW para limpar o conteúdo dos buffers da microarquitetura ao retornar do kernel para o espaço do usuário ou ao transferir o controle para o sistema convidado. Proteção semelhante também é usada para bloquear ataques previamente identificados das classes MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) e TAA (Transactional Asynchronous Abort).

Do lado do microcódigo, as alterações necessárias para implementar a proteção foram propostas na atualização do microcódigo de maio para CPUs Intel (IPU 2022.1). No kernel Linux, a proteção contra uma nova classe de ataques está incluída nas versões 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 e 4.9.319. Para verificar a exposição do sistema a vulnerabilidades no MMIO e avaliar a atividade de determinados mecanismos de proteção, o arquivo “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” foi adicionado ao kernel do Linux. Para controlar a inclusão da proteção, foi implementado o parâmetro de inicialização do kernel “mmio_stale_data”, que pode assumir os valores “full” (permite a limpeza de buffers ao mover para o espaço do usuário e na VM), “full,nosmt” ( como “full” + desabilita adicionalmente SMT/Hyper-Threads) e “off” (proteção desabilitada). Correções separadas são oferecidas para o hipervisor Xen e o sistema operacional Qubes.

A essência da classe de vulnerabilidades identificada é que algumas operações levam à cópia ou movimentação de dados restantes após a execução em outros núcleos da CPU, de um buffer microarquitetural para outro. Vulnerabilidades no MMIO permitem que esses dados residuais sejam transferidos de buffers microarquitetônicos isolados para registros visíveis ao aplicativo ou buffers de CPU. Três métodos foram identificados para extrair dados residuais através do MMIO:

  • DRPW (Device Register Partial Write, CVE-2022-21166) é um problema com o tratamento incorreto de gravações em alguns registros MMIO. Se o tamanho dos dados que estão sendo gravados for menor que o tamanho do registrador, as informações residuais dos buffers de preenchimento também serão copiadas para o registrador. Como resultado, um processo que inicia uma operação de gravação incompleta no registro MMIO pode obter dados restantes nos buffers da microarquitetura a partir de operações executadas em outros núcleos da CPU.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) é um vazamento de dados residuais de um buffer de preenchimento vinculado ao kernel resultante do movimento de buffers intermediários comuns a todos os kernels.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - o problema é semelhante ao SBDS, mas difere porque os dados residuais podem acabar em estruturas de CPU visíveis para os aplicativos. Os problemas de SBDS e SBDR aparecem apenas em processadores para sistemas clientes e na família de servidores Intel Xeon E3.

Vulnerabilidades no mecanismo MMIO dos processadores Intel


Fonte: opennet.ru

Adicionar um comentário