KVM pažeidžiamumas leidžia kodą vykdyti už svečių sistemos AMD procesoriuose

Tyrėjai iš „Google Project Zero“ komandos prieš kelias dienas savo tinklaraščio įraše pristatė nustatė KVM hipervizoriaus pažeidžiamumą (CVE-2021-29657) (atvirojo kodo „Linux“ pagrindu veikiantis hipervizorius, palaikantis aparatinės įrangos pagreitintą virtualizaciją „x86“, ARM, „PowerPC“ ir „S / 390“), leidžia išvengti svečių sistemos izoliacijos ir paleiskite kodą pagrindinės aplinkos pusėje.

Įraše minima, kad problema pasireiškia nuo „Linux“ branduolio 5.10-rc1 iki v5.12-rc6, tai yra, apima tik 5.10 ir 5.11 branduolius (Daugumai stabilių paskirstymo šakų ši problema neturėjo įtakos.) Problema yra „nested_svm_vmrun“ mechanizme, įdiegtame naudojant AMD SVM („Secure Virtual Machine“) plėtinį ir leidžiantį įdėtą svečių sistemų paleidimą.

Šiame tinklaraščio įraše aprašau su AMD susijusio KVM kodo pažeidžiamumą ir aptariu, kaip ši klaida gali virsti visišku virtualios mašinos pabėgimu. Kiek aš žinau, tai yra pirmasis viešas KVM svečių-prieglobos parašymas, kuris nesiremia vartotojo-erdvės komponentų, tokių kaip QEMU, klaidomis.

Aptartai klaidai buvo priskirtas CVE-2021-29657, ji veikia branduolio versijas nuo v5.10-rc1 iki v5.12-rc6 ir buvo pataisyta 2021 m. Kovo pabaigoje. Kadangi klaida tapo tinkama naudoti tik v5.10 versijoje ir buvo aptikta maždaug po 5 mėnesių, tai neturėtų paveikti daugelio realių KVM diegimų. Aš vis dar manau, kad problema yra įdomus atvejo tyrimas, reikalingas norint sukurti stabilų svečio ir priimančiosios pabėgimą nuo KVM, ir tikiuosi, kad šis straipsnis gali patvirtinti, kad hipervizoriaus kompromisai nėra tik teorinės problemos.

Tyrėjai mini, kad norint tinkamai įgyvendinti šią funkciją, hipervizorius turi perimti visas SVM instrukcijas paleisti svečių sistemose, mėgdžioti savo elgesį ir sinchronizuoti būseną su aparatine įranga, o tai yra gana sunki užduotis.

Išanalizavę siūlomą KVM diegimą, tyrėjais susidūrė su logine klaida, leidžiančia MSR turinį (Konkretaus modelio registracija) priimančiosios būti paveikti svečių sistemos, kuri gali būti naudojama vykdant kodą pagrindinio kompiuterio lygiu.

VMRUN operacijos vykdymas iš antrojo įdėto lygio svečio (L2 paleistas iš kito svečio) veda prie antrojo skambučio į „nested_svm_vmrun“ ir sugadina „svm-> nested.hsave“ struktūrą, kuri yra perdengta „V2c“ iš „LXNUMX“ svečių sistemos duomenimis. .

Dėl to susidaro situacija, kai L2 svečio lygmenyje galima atlaisvinti atmintį struktūroje svm-> nested.msrpm, kuri saugo MSR bitą, nors ir toliau naudojama, ir pasiekti pagrindinio kompiuterio MSR. aplinka.

Tai reiškia, kad, pavyzdžiui, svečio atmintį galima patikrinti išmetant jo vartotojo erdvės proceso paskirtą atmintį arba kad galima lengvai įvykdyti procesoriaus laiko ir atminties apribojimus. 

Be to, KVM gali didžiąją dalį su įrenginio emuliavimu susijusio darbo perkrauti į vartotojo kosmoso komponentą.

Problema yra kode, naudojamame sistemose su AMD procesoriais (kvm-amd.ko modulis) ir jos nėra „Intel“ procesoriuose.

 Išskyrus kelis efektyvumui jautrius įrenginius, susijusius su pertraukimo valdymu, visą sudėtingą žemo lygio kodą, skirtą virtualiam diskui, tinklui ar GPU pasiekti, galima įdiegti vartotojo erdvėje.  

Tyrėjai ne tik apibūdino problemą Jie taip pat paruošė veikiantį eksploatacijos prototipą kuris leidžia paleisti šakninį apvalkalą iš svečių aplinkos pagrindinėje aplinkoje sistemoje su AMD Epyc 7351P procesoriumi ir „Linux 5.10“ branduoliu.

Pastebima, kad tai yra pirmasis svečias, kuris surengė pažeidžiamumą KVM hipervizoriuje pati nėra susijusi su vartotojo kosmoso komponentų, tokių kaip QEMU, klaidomis. Pataisymas buvo priimtas branduolyje kovo pabaigoje.

Pagaliau jei norite sužinoti daugiau apie tai apie užrašą, galite patikrinti išsamią informaciją Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.