Vulnerabilidade no código KVM específico da CPU de AMD que permite executar código fóra do sistema invitado

Investigadores do equipo de Google Project Zero identificaron unha vulnerabilidade (CVE-2021-29657) no kernel subministrado. Linux гипервизоре KVM, позволяющую обойти изоляцию гостевой системы и выполнить свой код на стороне хост-окружения. Проблема присутствует в коде, используемом на системах с процессорами AMD (модуль kvm-amd.ko) и не проявляется для процессоров Intel.

Исследователями подготовлен рабочий прототип эксплоита, позволяющий из гостевого окружения запустить root shell в хост-окружении на системе с процессором AMD Epyc 7351P и ядром Linux 5.10. Отмечается, что это первая брешь класса «guest-to-host» в самом гипервизоре KVM, не связанная с ошибками в компонентах, выполняемых в пространстве пользователя, таких как QEMU. Исправление было принято в ядро в конце марта. Проблема проявляется начиная с ядра Linux 5.10-rc1 и заканчивая v5.12-rc6, т.е. охватывает только ядра 5.10 и 5.11 (большинство стабильных веток дистрибутивов проблема не коснулась).

O problema está presente no mecanismo nested_svm_vmrun, implementado mediante a extensión AMD SVM (Secure Virtual Machine) e que permite o lanzamento anidado de sistemas convidados. Para implementar correctamente esta funcionalidade, o hipervisor debe interceptar todas as instrucións SVM executadas nos sistemas convidados, emular o seu comportamento e sincronizar o estado co hardware, o que é unha tarefa bastante complexa. Despois de analizar a implementación proposta en KVM, os investigadores atoparon un erro lóxico que permite influír no contido dos rexistros MSR (Model-Specific Register) do host desde o sistema convidado, que se pode usar para executar código a nivel de host. .

En particular, a realización dunha operación VMRUN desde un convidado de segundo nivel (L2 executado desde outro convidado) dá lugar a unha segunda chamada a nested_svm_vmrun e a corrupción da estrutura svm->nested.hsave, que está superposta con datos do vmcb do convidado L2. Como resultado, xorde unha situación na que, no nivel de convidado L2, é posible liberar a memoria na estrutura svm->nested.msrpm, que almacena o bit MSR, a pesar de que se segue a utilizar, e gañar acceso ao ambiente host MSR.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster