Ang isang kahinaan sa KVM ay nagbibigay-daan sa pagpapatupad ng code sa labas ng system ng bisita sa mga processor ng AMD

Inilabas ng mga mananaliksik mula sa koponan ng Google Project Zero ilang araw na ang nakakaraan sa isang post sa blog na nakilala ang isang kahinaan (CVE-2021-29657) sa KVM hypervisor (isang bukas na mapagkukunan ng hypervisor na nakabatay sa Linux na sumusuporta sa virtualization na pinabilis ng hardware sa x86, ARM, PowerPC, at S / 390) na Pinapayagan kang iwasan ang paghihiwalay ng sistema ng panauhin at patakbuhin ang iyong code sa panig ng kapaligiran ng host.

Nabanggit sa post na ang problema nagpapakita mula sa Linux kernel 5.10-rc1 hanggang v5.12-rc6, iyon ay, sumasaklaw lamang ng mga kernel 5.10 at 5.11 (Karamihan sa mga matatag na sangay ng pamamahagi ay hindi apektado ng problema.) Ang problema ay naroroon sa nested_svm_vmrun na mekanismo, na ipinatupad gamit ang extension na AMD SVM (Secure Virtual Machine) at pinapayagan ang pugad na paglulunsad ng mga sistema ng panauhin.

Sa post sa blog na ito, inilalarawan ko ang isang kahinaan sa tukoy na AMD na KVM code at tinatalakay kung paano ang bug na ito ay maaaring maging isang kumpletong pagtakas sa virtual machine. Sa pagkakaalam ko, ito ang kauna-unahang pagsulat sa publiko ng isang breakout ng panauhing host ng KVM na hindi umaasa sa mga bug sa mga bahagi ng puwang ng gumagamit tulad ng QEMU.

Ang tinalakay na bug ay nakatalaga sa CVE-2021-29657, nakakaapekto sa mga bersyon ng kernel v5.10-rc1 hanggang v5.12-rc6, at na-patch noong huli ng Marso 2021. Dahil ang bug ay napagsamantalahan lamang noong v5.10 at natuklasan mga 5 buwan pa ang lumipas, ang karamihan sa mga pag-deploy ng real-world na KVM ay hindi dapat maapektuhan. Sa palagay ko pa rin ang problema ay isang kagiliw-giliw na pag-aaral ng kaso sa gawaing kinakailangan upang bumuo ng isang matatag na pagtakas sa panauhing host-to-host laban sa KVM at inaasahan kong magawa ng artikulong ito ang kaso na ang mga kompromiso sa hypervisor ay hindi lamang mga problemang panteorya.

Nabanggit ng mga mananaliksik na para sa wastong pagpapatupad ng pagpapaandar na ito, dapat hadlangan ng hypervisor ang lahat ng mga tagubilin sa SVM patakbuhin sa mga system ng panauhin, gayahin ang pag-uugali nito at isabay ang estado sa hardware, na kung saan ay isang mahirap gawain.

Matapos pag-aralan ang ipinanukalang pagpapatupad ng KVM, ang mga mananaliksikNaranasan ng isang lohikal na error na nagpapahintulot sa nilalaman ng MSR (Pagpaparehistro na tukoy sa modelo) ng host maiimpluwensyahan mula sa sistema ng panauhin, na maaaring magamit upang magpatupad ng code sa antas ng host.

Sa partikular, ang pagpapatupad ng isang pagpapatakbo ng VMRUN mula sa pangalawang naka-salubong na panauhin (ang L2 na inilunsad mula sa isa pang panauhin) ay humahantong sa isang pangalawang tawag sa pugad_svm_vmrun at pinipinsala ang istraktura ng svm-> naka-upo. .

Bilang isang resulta, lumitaw ang isang sitwasyon kung saan sa antas ng panauhin ng L2 posible na magbakante ng memorya sa istruktura ng svm-> nested.msrpm, na nag-iimbak ng MSR bit, kahit na ito ay patuloy na ginagamit, at i-access ang MSR ng host kapaligiran.

Nangangahulugan ito, halimbawa, na ang memorya ng isang panauhin ay maaaring siyasatin sa pamamagitan ng pagtatapon ng inilaang memorya ng proseso ng puwang ng gumagamit nito o ang mga limitasyon ng mapagkukunan para sa oras ng CPU at memorya ay madaling maipatupad. 

Bilang karagdagan, maaaring ma-offload ng KVM ang karamihan sa gawaing nauugnay sa pagtulad sa aparato sa bahagi ng puwang ng gumagamit.

Ang problema ay naroroon sa code na ginamit sa mga system na may AMD processors (kvm-amd.ko module) at hindi lilitaw sa mga processor ng Intel.

 Sa labas ng isang pares ng mga aparatong sensitibo sa pagganap na nauugnay sa nakakagambala na paghawak, ang lahat ng kumplikadong mababang antas ng code para sa pagbibigay ng virtual disk, network o pag-access sa GPU ay maaaring maipalipat sa puwang ng gumagamit.  

Ang mga mananaliksik bilang karagdagan sa paglalarawan ng problema Naghanda rin sila ng gumaganang prototype ng isang pagsasamantala na nagpapahintulot sa pagpapatakbo ng isang root shell mula sa isang kapaligiran sa panauhin sa isang host environment sa isang system na may AMD Epyc 7351P processor at isang Linux 5.10 kernel.

Naobserbahan na ito ang unang panauhing nagho-host ng kahinaan sa KVM hypervisor mismo, hindi nauugnay sa mga bug sa mga bahagi ng puwang ng gumagamit tulad ng QEMU. Ang pag-aayos ay tinanggap sa kernel sa pagtatapos ng Marso.

Sa wakas kung interesado kang malaman ang tungkol dito tungkol sa tala, maaari mong suriin ang mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.