Forskere fra Google Project Zero har identificeret en sårbarhed (CVE-2021-29657) i den KVM-hypervisor, der leveres med Linux-kernen, som muliggør umuligelse af isoleringen af gæstesystemet og udførelse af kode i værtsmiljøet. Problemet findes i koden anvendt på systemer med AMD-processorer (kvm-amd.ko-modulet) og viser sig ikke på Intel-processorer.
Forskere har forberedt en fungerende prototype af et exploit, der kan starte en root shell i værtsmiljøet fra gæstemiljøet på et system med en AMD Epyc 7351P-processor og Linux-kernen 5.10. Det bemærkes, at dette er den første 'guest-to-host'-brist i selve hypervisoren KVM, ikke relateret til fejl i komponenter, der kører i brugerrum, såsom QEMU. En rettelse blev inkluderet i kernen i slutningen af marts. Problemet opstår fra Linux-kernens version 5.10-rc1 til 5.12-rc6, dvs. det dækker kun kernerne 5.10 og 5.11 (de fleste stabile distributioner er ikke berørt af problemet).
Problemet findes i mekanismen nested_svm_vmrun, der er implementeret med AMD SVM (Secure Virtual Machine) udvidelsen, som muliggør organiseret indlejret kørsel af gæstesystemer. For korrekt implementering af denne funktionalitet skal hypervisoren opfange alle SVM-instruktioner, der udføres i gæstesystemerne, emulere deres adfærd og synkronisere tilstanden med hardwaren, hvilket er en temmelig kompleks opgave. Ved at analysere den foreslåede KVM-implementering fandt forskerne en logisk fejl, der tillader indflydelse på indholdet af MSR-registre (Model-Specific Register) på værten fra gæstesystemet, hvilket kan bruges til at køre kode på værtsniveau.
Specifikt fører udførelse af en VMRUN-operation fra et niveau 2 gæstesystem (L2, der kører fra et andet gæstesystem) til et andet kald af nested_svm_vmrun og beskadigelse af strukturen svm->nested.hsave, som får data fra VMCB fra L2-gæstesystemet. I sidste ende opstår der en situation, hvor man på niveauet af L2-gæstesystemet kan frigøre hukommelse i strukturen svm->nested.msrpm, hvor bit MSR opbevares, selvom den fortsat anvendes, og få adgang til værtsmiljøets MSR.
Kilde: opennet.ru
