En sårbarhet i KVM möjliggör kodkörning utanför gästsystemet på AMD-processorer

Forskare från Google Project Zero-teamet avslöjade för några dagar sedan i ett blogginlägg att har identifierat en sårbarhet (CVE-2021-29657) i KVM-hypervisorn (en Linux-baserad hypervisor med öppen källkod som stöder hårdvaruaccelererad virtualisering på x86, ARM, PowerPC och S/390) låter dig undvika isolering av gästsystemet och kör din kod på värdmiljösidan.

I publikationen nämns att problemet manifesterar från Linux-kärnan 5.10-rc1 till v5.12-rc6, det är täcker endast kärnorna 5.10 och 5.11 (De flesta av de stabila distributionsgrenarna påverkades inte av problemet.) Problemet finns i mekanismen nested_svm_vmrun, implementerad med AMD SVM (Secure Virtual Machine)-tillägget och tillåter kapslad lansering av gästsystem.

I det här blogginlägget beskriver jag en sårbarhet i AMD:s specifika KVM-kod och diskuterar hur denna bugg kan eskalera till en fullständig virtuell maskinflykt. Så vitt jag vet är detta den första offentliga skrivningen av ett KVM gäst-till-värd-utbrott som inte är beroende av buggar i användarlandkomponenter som QEMU.

Felet som diskuteras är tilldelat CVE-2021-29657, påverkar kärnversionerna v5.10-rc1 till v5.12-rc6 och korrigerades i slutet av mars 2021. Eftersom buggen först blev exploateringsbar i v5.10 och upptäcktes cirka 5 månader senare, bör de flesta KVM-implementeringar inte påverkas. Jag tycker fortfarande att frågan är en intressant fallstudie i arbetet som krävs för att bygga en stabil gäst-till-värd-flykt mot KVM och jag hoppas att den här artikeln kan stärka argumentet att hypervisorkompromisser inte bara är teoretiska frågor.

Forskarna nämner att för korrekt implementering av denna funktion, hypervisorn måste fånga upp alla SVM-instruktioner körs på gästsystem, emulera dess beteende och synkronisera tillståndet med hårdvaran, vilket är en ganska komplicerad uppgift.

Efter att ha analyserat den föreslagna KVM-implementeringen, forskares hittade ett logiskt fel som tillåter innehållet i MSR (Modellspecifikt register) för värd påverkas av gästsystemet, som kan användas för att köra kod på värdnivå.

Särskilt, att köra en VMRUN-operation från en andra gäst på kapslingsnivå (L2 startas från en annan gäst) leder till ett andra anrop till nested_svm_vmrun och korrumperar svm-> nested.hsave-strukturen, som överlappas med data från vmcb från L2-gästsystemet .

Som ett resultat uppstår en situation där det på gästnivå L2 är möjligt att frigöra minne i strukturen svm-> nested.msrpm, som lagrar MSR-biten, trots att den fortsätter att användas, och få tillgång till värdens MSR. miljö. .

Detta innebär till exempel att en gästs minne kan inspekteras genom att dumpa det tilldelade minnet för dess process för användarutrymme, eller att resursgränser för CPU-tid och minne enkelt kan upprätthållas. 

Dessutom kan KVM ladda ner det mesta av arbetet relaterat till enhetsemulering till användarutrymmeskomponenten.

Problemet finns i kod som används på system med AMD-processorer (kvm-amd.ko-modul) och visas inte på Intel-processorer.

 Utöver ett par prestandakänsliga enheter relaterade till avbrottshantering kan all komplex lågnivåkod för att ge virtuell disk, nätverk eller GPU-åtkomst implementeras i användarutrymmet.  

Forskarna, förutom att beskriva problemet De har också förberett en fungerande prototyp av en exploit. som låter dig köra ett rotskal från en gästmiljö i en värdmiljö på ett system med en AMD Epyc 7351P-processor och en Linux 5.10-kärna.

Det observeras att detta är den första gäst-till-värd-sårbarheten i KVM-hypervisorn i sig, inte relaterat till buggar i användarutrymmeskomponenter som QEMU. Fixeringen accepterades i kärnan i slutet av mars.

Slutligen om du är intresserad av att veta mer om det om anteckningen kan du kontrollera detaljerna I följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.