Uma vulnerabilidade no código KVM específico para CPU AMD permite executar código fora do sistema convidado.

Pesquisadores da equipe do Google Project Zero identificaram uma vulnerabilidade (CVE-2021-29657) no hipervisor KVM, incluído no núcleo do Linux, que permite contornar a isolação do sistema convidado e executar seu código no ambiente host. O problema está presente no código utilizado em sistemas com processadores AMD (módulo kvm-amd.ko) e não se manifesta em processadores Intel.

Os pesquisadores desenvolveram um protótipo funcional de exploit que permite, a partir do ambiente convidado, iniciar um shell root no ambiente host em um sistema com processador AMD Epyc 7351P e núcleo Linux 5.10. Observa-se que esta é a primeira brecha do tipo 'guest-to-host' no próprio hipervisor, KVM, não relacionada a erros em componentes que operam no espaço do usuário, como o QEMU. A correção foi aceita no núcleo no final de março. O problema se manifesta a partir do núcleo Linux 5.10-rc1 até o v5.12-rc6, ou seja, abrange apenas os núcleos 5.10 e 5.11 (a maioria dos ramos estáveis das distribuições não foi afetada pelo problema).

O problema está presente no mecanismo nested_svm_vmrun, realizado com o uso da extensão AMD SVM (Secure Virtual Machine) e que permite organizar a execução aninhada de sistemas convidados. Para uma implementação correta dessa funcionalidade, o hipervisor deve interceptar todas as instruções SVM executadas nos sistemas convidados, emulando seu comportamento e sincronizando o estado com o hardware, o que é uma tarefa bastante complexa. Ao analisar a implementação proposta no KVM, os pesquisadores encontraram um erro lógico que permite influenciar o conteúdo dos registradores MSR (Model-Specific Register) do host a partir do sistema convidado, o que pode ser usado para executar código em nível de host.

Em particular, a execução da operação VMRUN a partir do sistema convidado de segundo nível (L2, executado a partir de outro sistema convidado) leva a uma segunda chamada do nested_svm_vmrun e à corrupção da estrutura svm->nested.hsave, na qual são sobrepostos dados do vmcb do sistema convidado L2. Como resultado, ocorre uma situação em que no nível do sistema convidado L2 é possível liberar a memória na estrutura svm->nested.msrpm, na qual é armazenado o bit MSR, mesmo que ele continue a ser usado, e acessar o MSR do ambiente host.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster