A KVM biztonsági rése lehetővé teszi a kód futtatását a vendégrendszeren kívül az AMD processzorokon

A Google Project Zero csapatának kutatói néhány napja egy blogbejegyzésükben tárták fel biztonsági rést (CVE-2021-29657) azonosítottak a KVM hipervizorában (nyílt forráskódú Linux-alapú hipervizor, amely támogatja a hardveres gyorsítású virtualizációt x86, ARM, PowerPC és S / 390 rendszereken), amely lehetővé teszi a vendégrendszer elszigetelésének elkerülését és futtassa a kódot a gazdagép környezet oldalán.

A bejegyzés megemlíti, hogy a probléma az 5.10-rc1 Linux kerneltől a v5.12-rc6 -ig terjed, azaz, csak az 5.10 és 5.11 magokat fedi le (Az eloszlások stabil ágainak többségét nem érintette a probléma.) A probléma a beágyazott_svm_vmrun mechanizmusban van, amelyet az AMD SVM (Secure Virtual Machine) kiterjesztéssel hajtottak végre, és lehetővé tette a vendég rendszerek beágyazott indítását.

Ebben a blogbejegyzésben leírom az AMD-specifikus KVM-kód sebezhetőségét, és megvitatom, hogyan válhat ez a hiba egy teljes virtuális gép-meneküléssé. Ha jól tudom, ez az első nyilvános írás egy KVM vendég-fogadó eloszlásról, amely nem támaszkodik a felhasználói tér összetevőinek hibáira, például a QEMU-ra.

A tárgyalt hibának a CVE-2021-29657 kódot rendelték. Mivel a hiba csak a v5.10 verzióban lett kihasználható, és körülbelül 1 hónappal később fedezték fel, a valós KVM-telepítések többségét ez nem érinti. Még mindig azt gondolom, hogy a probléma érdekes esettanulmány a KVM elleni stabil vendég-fogadó menekülés kiépítéséhez szükséges munkában, és remélem, hogy ez a cikk azt állíthatja, hogy a hipervizor-kompromisszumok nem csak elméleti problémák.

A kutatók megemlítik, hogy ennek a funkciónak a helyes megvalósításához a hipervizornak el kell fogadnia az összes SVM utasítást vendégrendszereken futni, utánozza viselkedését és szinkronizálja az állapotot a hardverrel, ami elég nehéz feladat.

A javasolt KVM megvalósítás elemzése után a kutatóks olyan logikai hibát észlelt, amely lehetővé teszi az MSR tartalmát (Modell-specifikus regisztráció) a gazdagép befolyásolja a vendégrendszer, amely segítségével kód futtatható a gazdagép szintjén.

Különösen egy VMRUN művelet végrehajtása egy második beágyazott szintű vendégtől (az L2 egy másik vendégtől indult) egy második híváshoz vezet a nested_svm_vmrun számára, és megrontja az svm-> nested.hsave struktúrát, amelyet az L2 vendégrendszer vmcb adatai fednek .

Ennek eredményeként kialakul egy olyan helyzet, amikor az L2 vendégszinten lehetőség van memória felszabadítására az svm-> nested.msrpm struktúrában, amely tárolja az MSR bitet, annak ellenére, hogy továbbra is használatos, és hozzáférhet a gazdagép MSR-jéhez. környezet.

Ez például azt jelenti, hogy a vendég memóriája megvizsgálható a felhasználó térfolyamatának lefoglalt memóriájának kidobásával, vagy hogy a CPU idejére és memóriájára vonatkozó erőforráskorlátok könnyen érvényesíthetők. 

Ezenkívül a KVM az eszközemulációval kapcsolatos munka nagy részét a felhasználói térkomponensre töltheti le.

A probléma az AMD processzorokkal rendelkező rendszerekben használt kódban van (kvm-amd.ko modul), és nem jelenik meg az Intel processzorain.

 Néhány, a megszakítás kezeléséhez kapcsolódó teljesítményérzékeny eszközön kívül a virtuális lemezhez, a hálózathoz vagy a GPU-hoz való hozzáférést biztosító összes összetett alacsony szintű kód telepíthető a felhasználói térben.  

A kutatók a probléma leírása mellett Készítettek egy kipróbálás működő prototípusát is amely lehetővé teszi a gyökérhéj futtatását vendégkörnyezetből hosztkörnyezetben AMD Epyc 7351P processzorral és Linux 5.10 rendszermaggal rendelkező rendszeren.

Megfigyelhető, hogy ez az első olyan vendég, aki sebezhetőséget tárol a KVM hipervizorában önmagában nem kapcsolódik a felhasználói tér összetevőinek hibáihoz, például a QEMU-hoz. A javítást a kernel március végén fogadta el.

Végül ha érdekel, hogy többet tudjon meg róla a jegyzetről ellenőrizheti a részleteket A következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.