Een kwetsbaarheid in de CPU-specifieke KVM-code van AMD, die het mogelijk maakt om code buiten het gastbesturingssysteem uit te voeren.

Onderzoekers van het Google Project Zero-team hebben een kwetsbaarheid (CVE-2021-29657) ontdekt in de op de Linux-kernel gebaseerde hypervisor KVM, die het mogelijk maakt om de isolatie van het gast systeem te omzeilen en eigen code uit te voeren in de hostomgeving. Het probleem doet zich voor in de code die wordt gebruikt op systemen met AMD-processoren (kvm-amd.ko-module) en manifesteert zich niet voor Intel-processoren.

De onderzoekers hebben een werkend prototype van een exploit ontwikkeld, waarmee vanuit de gastomgeving een root shell in de hostomgeving kan worden gestart op een systeem met een AMD Epyc 7351P-processor en Linux-kernel 5.10. Het wordt opgemerkt dat dit de eerste kwetsbaarheid van het type 'guest-to-host' is in de hypervisor zelf, KVM, niet gerelateerd aan fouten in componenten die in de gebruikersruimte draaien, zoals QEMU. De patch is eind maart aan de kernel toegevoegd. Het probleem doet zich voor vanaf kernel versie 5.10-rc1 tot en met v5.12-rc6, wat betekent dat het alleen de kernels 5.10 en 5.11 betreft (de meeste stabiele distributietakken zijn niet getroffen door het probleem).

Het probleem zit in de nested_svm_vmrun-mechanisme, geĆÆmplementeerd met behulp van de AMD SVM (Secure Virtual Machine)-extensie, die het mogelijk maakt om geneste gast systemen uit te voeren. Voor een correcte implementatie van deze functionaliteit moet de hypervisor alle SVM-instructies die in de gast systemen worden uitgevoerd, onderscheppen, hun gedrag emuleren en de status met de hardware synchroniseren, wat een vrij complexe taak is. Na de analyse van de KVM-implementatie ontdekten de onderzoekers een logische fout die het mogelijk maakt om invloed uit te oefenen op de inhoud van de MSR-registers (Model-Specific Register) van de host vanuit het gast systeem, wat kan worden gebruikt om code op hostniveau uit te voeren.

Specifiek leidt het uitvoeren van de VMRUN-opdracht vanuit een genest systeem van de tweede laag (L2, uitgevoerd vanuit een andere gast omgeving) tot een tweede oproep van nested_svm_vmrun en beschadiging van de structuur svm->nested.hsave, waarop gegevens uit het vmcb van het L2-gast systeem worden gelegd. Dit resulteert in een situatie waarin in het L2-gast systeem geheugen kan worden vrijgegeven in de structuur svm->nested.msrpm, waarin de MSR-bit is opgeslagen, ondanks dat deze nog steeds in gebruik is, en toegang krijgt tot de MSR van de hostomgeving.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster