Investigadores do equipo de Google Project Zero deron a coñecer hai uns días nunha publicación no blog identificaron unha vulnerabilidade (CVE-2021-29657) no hipervisor KVM (un hipervisor de código aberto baseado en Linux que admite a virtualización acelerada por hardware en x86, ARM, PowerPC e S / 390) que permite evitar o illamento do sistema invitado e executa o teu código no lado do entorno host.
A publicación menciona que o problema maniféstase desde o núcleo Linux 5.10-rc1 ata v5.12-rc6, é dicir, abrangue só os núcleos 5.10 e 5.11 (A maioría das ramas estables das distribucións non se viron afectadas polo problema). O problema está presente no mecanismo nested_svm_vmrun, implementado mediante a extensión AMD SVM (Secure Virtual Machine) e que permite o lanzamento aniñado de sistemas invitados.
Nesta publicación do blog, describo unha vulnerabilidade no código KVM específico de AMD e comento como este erro pode converterse nunha fuga completa de máquinas virtuais. Que eu saiba, esta é a primeira redacción pública dun avance KVM host-to-host que non depende de erros en compoñentes de espazo de usuario como QEMU.
O erro comentado asignouse CVE-2021-29657, afecta ás versións do núcleo v5.10-rc1 a v5.12-rc6 e foi remendado a finais de marzo de 2021. Como o erro só se fixo explotable en v5.10 e foi descuberto uns 5 meses despois, a maioría dos despregamentos de KVM no mundo real non deberían verse afectados. Aínda creo que o problema é un estudo de caso interesante no traballo necesario para construír unha fuxida estable de hóspede a hóspede contra KVM e espero que este artigo poida dar a razón de que os compromisos de hipervisor non son só problemas teóricos.
Os investigadores mencionan que para a correcta implementación desta funcionalidade, o hipervisor debe interceptar todas as instrucións SVM executar en sistemas invitados, emular o seu comportamento e sincronizar o estado co hardware, que é unha tarefa bastante difícil.
Despois de analizar a proposta de implementación de KVM, os investigadoresEncontrou un erro lóxico que permite o contido do MSR (Rexistro específico do modelo) do host ser influenciado dende o sistema invitado, que se pode usar para executar código a nivel de host.
En particular, executar unha operación VMRUN desde un segundo nivel de anidado (o L2 lanzado desde outro convidado) leva a unha segunda chamada a nested_svm_vmrun e corrompe a estrutura svm-> nested.hsave, que se superpón con datos de vmcb do sistema invitado L2 .
Como resultado, xorde unha situación na que a nivel de invitado L2 é posible liberar memoria na estrutura svm-> nested.msrpm, que almacena o bit MSR, aínda que segue a usarse, e acceder ao MSR do host ambiente.
Isto significa, por exemplo, que se pode inspeccionar a memoria dun convidado botando a memoria asignada do seu proceso de espazo de usuario ou que se poden aplicar facilmente os límites de recursos para o tempo e a memoria da CPU.
Ademais, KVM pode descargar a maior parte do traballo relacionado coa emulación do dispositivo ao compoñente de espazo do usuario.
O problema está presente no código usado en sistemas con procesadores AMD (módulo kvm-amd.ko) e non aparece nos procesadores Intel.
Fóra dun par de dispositivos sensibles ao rendemento relacionados coa manipulación de interrupcións, pódese despregar todo o código complexo de baixo nivel para proporcionar acceso a disco virtual, rede ou GPU no espazo do usuario.
Os investigadores ademais de describir o problema Tamén prepararon un prototipo de traballo dun exploit que permite executar un shell raíz desde un ambiente invitado nun ambiente host nun sistema cun procesador AMD Epyc 7351P e un núcleo Linux 5.10.
Obsérvase que este é o primeiro hóspede en aloxar a vulnerabilidade no hipervisor KVM en si, non relacionado con erros nos compoñentes do espazo de usuario como QEMU. A corrección aceptouse no núcleo a finais de marzo.
Finalmente se estás interesado en saber máis sobre el sobre a nota, podes consultar os detalles Na seguinte ligazón.
Sexa o primeiro en opinar sobre