En sårbarhed i KVM tillader udførelse af kode uden for gæstesystemet på AMD-processorer

Forskere fra Google Project Zero-teamet afslørede for et par dage siden i et blogindlæg, der har identificeret en sårbarhed (CVE-2021-29657) i KVM-hypervisoren (en open source Linux-baseret hypervisor, der understøtter hardware-accelereret virtualisering på x86, ARM, PowerPC og S / 390), der giver dig mulighed for at undgå isolering af gæstesystemet og kør din kode på værtsmiljøsiden.

Indlægget nævner, at problemet manifesterer sig fra Linux-kerne 5.10-rc1 til v5.12-rc6, det vil sige dækker kun kerner 5.10 og 5.11 (De fleste af de stabile distributionsgrene blev ikke berørt af problemet.) Problemet er til stede i nested_svm_vmrun-mekanismen, implementeret ved hjælp af AMD SVM (Secure Virtual Machine) -udvidelsen og tillader indlejret lancering af gæstesystemer.

I dette blogindlæg beskriver jeg en sårbarhed i den AMD-specifikke KVM-kode og diskuterer, hvordan denne fejl kan blive til en komplet virtuel maskinflukt. Så vidt jeg ved, er dette den første offentlige opskrivning af en KVM-gæst-til-vært-breakout, der ikke er afhængig af fejl i brugerrumskomponenter som QEMU.

Den diskuterede fejl blev tildelt CVE-2021-29657, påvirker kerneversioner v5.10-rc1 til v5.12-rc6 og blev patched i slutningen af ​​marts 2021. Da fejlen kun blev udnyttet i v5.10 og blev opdaget ca. 5 måneder senere, bør de fleste KVM-implementeringer i den virkelige verden ikke påvirkes. Jeg synes stadig, at problemet er en interessant casestudie i det arbejde, der kræves for at opbygge en stabil gæst-til-vært-flugt mod KVM, og jeg håber, at denne artikel kan sige, at kompromiser med hypervisor ikke kun er teoretiske problemer.

Forskerne nævner, at for den korrekte implementering af denne funktionalitet, hypervisoren skal opfange alle SVM-instruktioner køre på gæstesystemer, efterligne dens adfærd og synkronisere tilstanden med hardwaren, hvilket er en ganske vanskelig opgave.

Efter at have analyseret den foreslåede implementering af KVM, forskernes stødte på en logisk fejl, der tillader indholdet af MSR (Modelspecifik registrering) af værten blive påvirket af gæstesystemet, som kan bruges til at udføre kode på værtsniveau.

Især fører en VMRUN-operation fra en anden indlejret niveau-gæst (L2 lanceret fra en anden gæst) til et andet opkald til nested_svm_vmrun og korrumperer svm-> nested.hsave-strukturen, som er overlejret med data fra vmcb fra L2-gæstesystemet .

Som et resultat opstår der en situation, hvor det på L2-gæsteniveau er muligt at frigøre hukommelse i svm-> nestet.msrpm-strukturen, som gemmer MSR-biten, selvom den fortsat bruges, og får adgang til værten MSR miljø.

Dette betyder for eksempel, at en gæstes hukommelse kan inspiceres ved at dumpe den tildelte hukommelse i dens brugerrumsproces, eller at ressourcebegrænsninger for CPU-tid og hukommelse let kan håndhæves. 

Derudover kan KVM aflaste det meste af arbejdet relateret til enhedsemulering til brugerrumskomponenten.

Problemet er til stede i koden, der bruges på systemer med AMD-processorer (kvm-amd.ko-modul) og vises ikke på Intel-processorer.

 Uden for et par præstationsfølsomme enheder, der beskæftiger sig med afbrydelse af håndtering, kan al den komplekse lavniveaukode til levering af virtuel disk-, netværks- eller GPU-adgang implementeres i brugerrum.  

Forskerne ud over at beskrive problemet de har også udarbejdet en fungerende prototype af en udnyttelse som gør det muligt at køre en rodskal fra et gæstemiljø i et værtsmiljø på et system med en AMD Epyc 7351P-processor og en Linux 5.10-kerne.

Det observeres, at dette er den første gæst, der er vært for sårbarhed i KVM hypervisor i sig selv, ikke relateret til fejl i komponenter i brugerrummet som QEMU. Rettelsen blev accepteret i kernen i slutningen af ​​marts.

Endelig hvis du er interesseret i at vide mere om det om noten kan du kontrollere detaljerne I det følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.