Una vulnerabilitat en KVM permet l'execució de codi fora de el sistema convidat en processadors AMD

Els investigadors de l'equip de Google Project Zero van donar a conèixer fa pocs dies en una publicació de bloc que han identificat una vulnerabilitat (CVE-2021-29657) al hipervisor KVM (86 hipervisor de codi obert basat en Linux que admet la virtualització accelerada per maquinari en x390, ARM, PowerPC i S / XNUMX) que permet evitar l'aïllament de sistema convidat i executar el seu codi a la banda de l'entorn d'acollida.

En la publicació s'esmenta que el problema es manifesta des del nucli de Linux 5.10-rc1 a v5.12-RC6, És a dir, cobreix només els nuclis 5.10 i 5.11 (La majoria de les branques estables de distribucions no es van veure afectades pel problema). El problema està present en el mecanisme nested_svm_vmrun, implementat usant l'extensió AMD SVM (Secure Virtual Machine) i permetent el llançament niat de sistemes convidats.

En aquesta publicació de bloc, descric una vulnerabilitat en el codi específic d'AMD de KVM i discuteixo com aquest error pot convertir-se en una fuita complet de la màquina virtual. Fins on jo sé, aquesta és la primera redacció pública d'una ruptura d'hoste a host de KVM que no depèn d'errors en els components de l'espai d'usuari com QEMU.

A l'error discutit se li va assignar CVE-2021-29657, afecta les versions de l'nucli v5.10-rc1 a v5.12-RC6 i va ser apedaçat a finals de març de 2021. Com l'error només es va tornar explotable en v5.10 i es va descobrir aproximadament 5 mesos després, la majoria de les implementacions de KVM en el món real no estan afectades. Segueixo pensant que el problema és un estudi de cas interessant en el treball requerit per construir una fuita estable d'hoste a host contra KVM i espero que aquest article pugui enfortir el cas que els compromisos de l'hipervisor no són només problemes teòrics.

Els investigadors esmenten que per a la correcta implementació d'aquesta funcionalitat, l'hipervisor ha interceptar totes les instruccions SVM executades en els sistemes convidats, emular el seu comportament i sincronitzar l'estat amb el maquinari, la qual cosa és una tasca força complicada.

Després d'analitzar la implementació de KVM proposta, els investigadores van trobar un error lògic que permet que el contingut de l'MSR (Registre específic de el model) de l'host sigui influenciat des del sistema convidat, Que pot usar-se per a executar codi en el nivell de l'amfitrió.

En particular, l'execució d'una operació VMRUN des d'un sistema convidat del segon nivell d'anidament (L2 llançat des d'un altre convidat) condueix a una segona trucada a nested_svm_vmrun i danya l'estructura svm-> nested.hsave, que se superposa amb dades de vmcb de sistema convidat L2.

Com a resultat, sorgeix una situació en què en el nivell de convidat L2 és possible alliberar memòria en l'estructura svm-> nested.msrpm, que emmagatzema el bit MSR, tot i que continua utilitzant-se, i accedir a l'MSR de l'entorn d'acollida .

Això significa, per exemple, que la memòria d'un hoste es pot inspeccionar bolcant la memòria assignada del seu procés d'espai d'usuari o que els límits de recursos per al temps de CPU i la memòria es poden aplicar fàcilment. 

A més, KVM pot descarregar la major part de la feina relacionat amb l'emulació de dispositius a el component de l'espai d'usuari.

El problema està present en el codi utilitzat en els sistemes amb processadors AMD (mòdul kvm-amd.ko) i no apareix en els processadors Intel.

 Fora d'un parell de dispositius sensibles a l'rendiment relacionats amb el maneig d'interrupcions, tot el codi complex de baix nivell per a proporcionar accés a disc virtual, xarxa o GPU es pot implementar en l'espai d'usuari.  

Els investigadors a més de descriure el problema també han preparat un prototip funcional d'un exploit que permet executar un shell root des d'un entorn convidat en un entorn host en un sistema amb un processador AMD Epyc 7351P i un nucli Linux 5.10.

S'observa que aquesta és la primera vulnerabilitat de convidat a amfitrió en l'hipervisor KVM en si, no relacionada amb errors en els components de l'espai d'usuari com QEMU. La correcció es va acceptar en el nucli a finals de març.

Finalment si estàs interessat en conèixer més a l'respecte sobre la nota, pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.