Ranjivost u KVM-u omogućuje izvršavanje koda izvan gostujućeg sustava na AMD procesorima

Istraživači iz tima Google Project Zero otkrili su to prije nekoliko dana u postu na blogu koji su identificirali ranjivost (CVE-2021-29657) u KVM hipervizoru (hipervizor zasnovan na Linuxu koji podržava hardverski ubrzanu virtualizaciju na x86, ARM, PowerPC i S / 390) omogućuje vam izbjegavanje izolacije gostujućeg sustava i pokrenite svoj kod na strani okoline domaćina.

Post spominje taj problem manifestira iz Linux kernela 5.10-rc1 do v5.12-rc6, to jest, obuhvaća samo jezgre 5.10 i 5.11 (Problem nije utjecao na većinu stabilnih grana distribucije.) Problem je prisutan u nested_svm_vmrun mehanizmu, implementiranom pomoću proširenja AMD SVM (Secure Virtual Machine) i omogućavajući ugniježđeno pokretanje gostujućih sustava.

U ovom blogu opisujem ranjivost u KVM kodu specifičnom za AMD i raspravljam o tome kako se ova greška može pretvoriti u potpuno bijeg virtualnog stroja. Koliko znam, ovo je prvo javno objavljivanje provale KVM gost-domaćin koja se ne oslanja na greške u komponentama korisničkog prostora poput QEMU-a.

Raspravljena greška dodijeljena je CVE-2021-29657, utječe na verzije jezgre v5.10-rc1 do v5.12-rc6 i zakrpana je krajem ožujka 2021. godine. Budući da je greška postala eksploatabilna tek u v5.10 i otkrivena otprilike 5 mjeseci kasnije, većina stvarnih implementacija KVM-a ne bi trebala biti pogođena. Još uvijek mislim da je problem zanimljiva studija slučaja u radu potrebnom za izgradnju stabilnog bijega gosta prema domaćinu protiv KVM-a i nadam se da ovaj članak može dokazati da kompromiti hipervizora nisu samo teorijski problemi.

Istraživači spominju da za ispravnu implementaciju ove funkcionalnosti, hipervizor mora presresti sve SVM upute raditi na gostujućim sustavima, oponašati njegovo ponašanje i sinkronizirati stanje s hardverom, što je prilično težak zadatak.

Nakon analize predložene provedbe KVM-a, istraživačis naišli su na logičku pogrešku koja dopušta sadržaj MSR-a (Registracija specifična za model) domaćina biti pod utjecajem sustava gostiju, koji se može koristiti za izvršavanje koda na razini hosta.

Konkretno, izvođenje VMRUN operacije s drugog ugniježđenog gosta (L2 pokrenut od drugog gosta) dovodi do drugog poziva nested_svm_vmrun i kvari strukturu svm-> nested.hsave koja je prekrivena podacima iz vmcb iz gostujućeg sustava L2 .

Kao rezultat, dolazi do situacije da je na razini gosta L2 moguće osloboditi memoriju u strukturi svm-> nested.msrpm, koja pohranjuje MSR bit, iako se i dalje koristi, i pristupa MSR-u hosta okoliš.

To znači, na primjer, da se memorija gosta može pregledati izbacivanjem dodijeljene memorije njegovog procesa korisničkog prostora ili da se ograničenja resursa za CPU vrijeme i memoriju mogu lako nametnuti. 

Uz to, KVM može rasteretiti većinu posla koji se odnosi na emulaciju uređaja na komponentu korisničkog prostora.

Problem je prisutan u kodu koji se koristi na sustavima s AMD procesorima (kvm-amd.ko modul) i ne pojavljuje se na Intelovim procesorima.

 Izvan nekoliko uređaja osjetljivih na performanse koji se bave rukovanjem prekidima, sav složeni kod niske razine za pružanje pristupa virtualnom disku, mreži ili GPU-u može se postaviti u korisnički prostor.  

Istraživači su pored opisa problema također su pripremili radni prototip eksploatacije koji omogućuje pokretanje korijenske ljuske iz gostinjskog okruženja u host okruženju na sustavu s procesorom AMD Epyc 7351P i jezgrom Linux 5.10.

Primjećuje se da ovo je prvi gost koji je domaćin ranjivosti u KVM hipervizoru sama po sebi, a nije povezana s programskim pogreškama u komponentama korisničkog prostora poput QEMU-a. Ispravka je prihvaćena u jezgri krajem ožujka.

Konačno ako vas zanima više o tome o bilješci možete provjeriti pojedinosti U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.