Ranjivost u KVM kodu specifičnom za CPU AMD, koja omogućuje izvršenje koda izvan gostujućeg sustava

Istraživači iz Google Project Zero tima otkrili su ranjivost (CVE-2021-29657) u KVM hipervizoru, koji je isporučen s Linux kernelom, što omogućava zaobilaženje izolacije gostujućeg sustava i izvršavanje vlastitog koda u okruženju domaćina. Problem se javlja u kodu koji se koristi na sustavima s AMD procesorima (modul kvm-amd.ko) i ne pojavljuje se za Intel procesore.

Istraživači su razvili radni prototip exploit-a koji omogućava pokretanje root shell-a u okruženju domaćina s gostujućeg okruženja na sustavu s AMD Epyc 7351P procesorom i Linux kernelom 5.10. Istaknuto je da je ovo prva rupa klase 'guest-to-host' u samom hipervizoru KVM, koja nije povezana s greškama u komponentama koje se izvršavaju u korisničkom prostoru, kao što je QEMU. Ispravka je prihvaćena u kernel u kraju ožujka. Problem se javlja od Linux kernela 5.10-rc1 do v5.12-rc6, tj. obuhvaća samo kernela 5.10 i 5.11 (većina stabilnih distribucijskih grana nije pogođena ovim problemom).

Problem se javlja u mehanizmu nested_svm_vmrun, implementiranom pomoću AMD SVM (Secure Virtual Machine) proširenja, koji omogućava ugniježđeno pokretanje gostujućih sustava. Za pravilnu implementaciju ove funkcionalnosti, hipervizor mora presresti sve SVM instrukcije koje se izvršavaju u gostujućim sustavima, emulirati njihovo ponašanje i sinkronizirati stanje s hardverom, što predstavlja prilično složen zadatak. Analizirajući KVM implementaciju, istraživači su pronašli logičku grešku koja omogućava utjecaj na sadržaj MSR registara (Model-Specific Register) domaćina iz gostujućeg sustava, što se može iskoristiti za pokretanje koda na razini domaćina.

Naime, izvršavanje operacije VMRUN iz gostujućeg sustava drugog nivoa ugniježdenosti (L2, pokrenutog iz drugog gostujućeg sustava) dovodi do drugog poziva nested_svm_vmrun i oštećenja strukture svm->nested.hsave, na koju se nanose podaci iz vmcb gostujućeg sustava L2. Kao rezultat toga, dolazi do situacije u kojoj se na razini gostujućeg sustava L2 može osloboditi memorija u strukturi svm->nested.msrpm, u kojoj se čuva MSR bit, unatoč tome što se i dalje koristi, i dobiti pristup MSR-u okruženja domaćina.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster