Uma vulnerabilidade no KVM permite a execução de código fora do sistema convidado em processadores AMD

Pesquisadores da equipe do Google Project Zero revelaram há alguns dias em uma postagem do blog identificaram uma vulnerabilidade (CVE-2021-29657) no hipervisor KVM (um hipervisor baseado em Linux de código aberto que suporta virtualização acelerada por hardware em x86, ARM, PowerPC e S / 390) que permite que você evite o isolamento do sistema convidado e execute seu código no lado do ambiente de host.

A postagem menciona que o problema manifestos do kernel Linux 5.10-rc1 a v5.12-rc6, quer dizer, cobre apenas os kernels 5.10 e 5.11 (A maioria dos ramos estáveis ​​das distribuições não foram afetados pelo problema.) O problema está presente no mecanismo nested_svm_vmrun, implementado usando a extensão AMD SVM (Secure Virtual Machine) e permitindo a inicialização aninhada de sistemas convidados.

Nesta postagem do blog, descrevo uma vulnerabilidade no código KVM específico da AMD e discuto como esse bug pode se transformar em um escape completo da máquina virtual. Pelo que eu sei, este é o primeiro artigo público de um breakout KVM guest-to-host que não depende de bugs nos componentes do espaço do usuário como o QEMU.

O bug discutido foi atribuído CVE-2021-29657, afeta as versões do kernel v5.10-rc1 a v5.12-rc6 e foi corrigido no final de março de 2021. Como o bug só se tornou explorável na v5.10 e foi descoberto cerca de 5 meses depois, a maioria das implantações de KVM do mundo real não deve ser afetada. Ainda acho que o problema é um estudo de caso interessante no trabalho necessário para construir um escape guest-to-host estável no KVM e espero que este artigo possa demonstrar que os comprometimentos do hipervisor não são apenas problemas teóricos.

Os pesquisadores mencionam que para a correta implementação desta funcionalidade, o hipervisor deve interceptar todas as instruções SVM executado em sistemas convidados, emular seu comportamento e sincronizar o estado com o hardware, o que é uma tarefa bastante difícil.

Depois de analisar a proposta de implementação do KVM, os pesquisadoress encontrou um erro lógico que permite o conteúdo do MSR (Registro específico do modelo) do host ser influenciado pelo sistema convidado, que pode ser usado para executar código no nível do host.

Em particular, a execução de uma operação VMRUN de um segundo convidado de nível aninhado (L2 iniciado de outro convidado) leva a uma segunda chamada para nested_svm_vmrun e corrompe a estrutura svm-> nested.hsave, que é sobreposta com dados de vmcb do sistema convidado L2 .

Como resultado, surge uma situação em que no nível do convidado L2 é possível liberar memória na estrutura svm-> nested.msrpm, que armazena o bit MSR, mesmo que ele continue a ser usado, e acessar o MSR do host meio ambiente.

Isso significa, por exemplo, que a memória de um convidado pode ser inspecionada despejando a memória alocada de seu processo de espaço do usuário ou que os limites de recursos de tempo e memória da CPU podem ser facilmente impostos. 

Além disso, o KVM pode descarregar a maior parte do trabalho relacionado à emulação de dispositivo para o componente de espaço do usuário.

O problema está presente no código usado em sistemas com processadores AMD (módulo kvm-amd.ko) e não aparece em processadores Intel.

 Além de alguns dispositivos sensíveis ao desempenho que lidam com o tratamento de interrupções, todo o código complexo de baixo nível para fornecer acesso a disco virtual, rede ou GPU pode ser implantado no espaço do usuário.  

Os pesquisadores além de descreverem o problema Eles também prepararam um protótipo funcional de um exploit que permite a execução de um shell raiz de um ambiente convidado em um ambiente host em um sistema com um processador AMD Epyc 7351P e um kernel Linux 5.10.

É observado que este é o primeiro convidado a hospedar vulnerabilidade no hipervisor KVM em si, não relacionado a bugs nos componentes do espaço do usuário, como o QEMU. A correção foi aceita no kernel no final de março.

Finalmente se você estiver interessado em saber mais sobre isso sobre a nota, você pode verificar os detalhes no link a seguir.


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.