SWAPGS, uma nova vulnerabilidade de execução especulativa

SWAPGS-explorar-2

Os Os pesquisadores do Bitdefender identificaram uma nova vulnerabilidade no mecanismo de execução especulativa de instruções em processadores modernos, que recebeu o nome SWAPGS, Um correspondente ao nome da instrução do processador que está causando o problema.

Vulnerabilidade permite que um atacante sem privilégios determine o conteúdo das áreas de memória do kernel ou executando máquinas virtuais. O problema foi confirmado nos processadores Intel (x86_64) e afeta parcialmente os processadores AMD para os quais o vetor de ataque primário não aparece.

Os métodos anti-vulnerabilidade Specter e Meltdown implementados anteriormente não protegem contra ataques SWAPGS usando processadores Intel, mas soluções para Linux, ChromeOS, Android e Windows já foram propostas.

A vulnerabilidade pertence à classe Specter v1 e se baseia na ideia de recuperar os dados do cache do processador que permanecem após a execução especulativa de instruções.

Os blocos de predição de conversão de CPUs modernas utilizam a execução proativa de algumas instruções, que são mais prováveis ​​de serem executadas, para melhorar o desempenho, mas sem esperar pelo cálculo de todos os fatores que determinam sua execução (por exemplo, quando as condições de transição de instruções os parâmetros de acesso ainda não foram calculados).

Se a previsão não for confirmada, o processador descarta o resultado da execução especulativa, mas os dados processados ​​durante a execução são armazenados em cache pelo processador e podem ser restaurados usando métodos para determinar o conteúdo do cache através dos canais. De terceiros que analisam a mudança no tempo de acesso aos dados armazenados e não armazenados em cache.

Sobre a SWAPGS

A peculiaridade do novo ataque é o uso de um vazamento que surge durante a execução especulativa da instrução SWAPGS, que é usado em sistemas operacionais para substituir o valor do registro GS quando o controle é transferido do espaço do usuário para o kernel do sistema operacional (o valor GS usado no espaço do usuário é substituído pelo valor usado nas operações do kernel).

O kernel do Linux no GS armazena o ponteiro per_cpu, que é usado para acessar os dados do kernel, e aponta para TLS (Thread Local Storage) no espaço do usuário.

Para excluir a dupla invocação da instrução SWAPGS após o acesso repetido ao kernel do espaço do kernel ou ao executar o código que não requer a substituição do registro GS, uma verificação e uma transição condicional são realizadas antes da instrução.

O mecanismo de execução especulativa precede a execução do código com a instrução SWAPGS, sem esperar pelo resultado da verificação, e se o branch selecionado não for confirmado, ele descarta o resultado.

Portanto, uma situação pode surgir quando um ramo especificando a execução de SWAPGS é selecionado especulativamente, mas durante a execução especulativa, o valor do registro GS será alterado pela instrução SWAPGS e será usado em operações dependentes de memória que são armazenadas em cache pela CPU.

Os pesquisadores propuseram dois cenários de ataque para o qual foram preparados protótipos de exploit.

  • O primeiro cenário é baseado na situação em que a instrução SWAPGS não é executada especulativamente, embora seja usada na execução real, e o segundo cenário é o oposto, quando a instrução SWAPGS é executada especulativamente, embora realmente não devesse.
  • Para cada cenário, há duas opções operacionais: o invasor pode determinar o valor em um endereço específico na área central e o invasor pode pesquisar um valor específico em endereços aleatórios no núcleo.

A solução requer a instalação de uma atualização do kernel no sistema principal e nos ambientes convidados, seguida por uma reinicialização do sistema. Para desativar a proteção no Linux, você pode usar a opção "nospectre_v1", que também desativa as medidas para bloquear a vulnerabilidade SWAPGS.

A solução está disponível como patch para o kernel Linux, que já está incluído nas versões 4.19.65, 5.2.7, 4.14.137, 4.9.188 e 4.4.188, enquanto para as diferentes distribuições Linux as correções pertinentes chegarão durante o período desta semana e da semana seguinte.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.