Et sårbarhet i KVM tillater kjøring av kode utenfor gjestesystemet på AMD-prosessorer

Forskere fra Google Project Zero-teamet avduket for noen dager siden i et blogginnlegg som har identifisert et sikkerhetsproblem (CVE-2021-29657) i KVM-hypervisoren (en åpen kildekode Linux-basert hypervisor som støtter maskinvareakselerert virtualisering på x86, ARM, PowerPC og S / 390) som lar deg unngå isolasjon av gjestesystemet og kjør koden på vertsmiljøsiden.

Innlegget nevner at problemet manifesterer seg fra Linux-kjernen 5.10-rc1 til v5.12-rc6, det vil si dekker bare kjerner 5.10 og 5.11 (De fleste av de stabile grenene av distribusjoner ble ikke berørt av problemet.) Problemet er tilstede i nested_svm_vmrun-mekanismen, implementert ved hjelp av AMD SVM (Secure Virtual Machine) -utvidelsen og tillater nestet lansering av gjestesystemer.

I dette blogginnlegget beskriver jeg et sikkerhetsproblem i den AMD-spesifikke KVM-koden og diskuterer hvordan denne feilen kan bli en fullstendig virtuell maskinflukt. Så vidt jeg vet er dette den første offentlige oppskriften av en KVM-gjest-til-vert-breakout som ikke stoler på feil i brukerromkomponenter som QEMU.

Feilen som ble diskutert ble tildelt CVE-2021-29657, påvirker kjerneversjoner v5.10-rc1 til v5.12-rc6, og ble lappet i slutten av mars 2021. Ettersom feilen først ble utnyttet i v5.10 og ble oppdaget omtrent 5 måneder senere, bør de fleste virkelige KVM-distribusjoner ikke påvirkes. Jeg tror fortsatt at problemet er en interessant casestudie i arbeidet som kreves for å bygge en stabil gjeste-til-vert-flukt mot KVM, og jeg håper denne artikkelen kan føre til at kompromiss mellom hypervisorer ikke bare er teoretiske problemer.

Forskerne nevner at for riktig implementering av denne funksjonaliteten, hypervisoren må fange opp alle SVM-instruksjonene kjøres på gjestesystemer, etterligne oppførselen og synkronisere tilstanden med maskinvaren, noe som er ganske vanskelig.

Etter å ha analysert den foreslåtte KVM-implementeringen, forskernes fikk en logisk feil som tillater innholdet i MSR (Modelspesifikk registrering) av verten bli påvirket av gjestesystemet, som kan brukes til å utføre kode på vertsnivå.

Spesielt fører en VMRUN-operasjon fra en andre nestet nivågjest (L2 lansert fra en annen gjest) til et andre anrop til nested_svm_vmrun og korrumperer svm-> nestet.hsave-strukturen, som er overlappet med data fra vmcb fra L2-gjestesystemet .

Som et resultat oppstår det en situasjon hvor det på L2-gjestenivå er mulig å frigjøre minne i svm-> nestet.msrpm-strukturen, som lagrer MSR-biten, selv om den fortsatt brukes, og får tilgang til MSR til verten miljø.

Dette betyr for eksempel at en gjests minne kan inspiseres ved å dumpe det tildelte minnet til brukerplassprosessen, eller at ressursbegrensninger for CPU-tid og minne lett kan håndheves. 

I tillegg kan KVM laste det meste av arbeidet relatert til enhetsemulering til brukerplasskomponenten.

Problemet er til stede i koden som brukes på systemer med AMD-prosessorer (kvm-amd.ko-modulen) og vises ikke på Intel-prosessorer.

 Utenfor et par ytelsesfølsomme enheter som håndterer avbruddshåndtering, kan all den komplekse koden på lavt nivå for å gi virtuell disk-, nettverks- eller GPU-tilgang distribueres i brukerområdet.  

Forskerne i tillegg til å beskrive problemet De har også utarbeidet en fungerende prototype av en utnyttelse som gjør det mulig å kjøre et rotskall fra et gjestemiljø i et vertsmiljø på et system med en AMD Epyc 7351P-prosessor og en Linux 5.10-kjerne.

Det observeres at dette er den første gjesten som er vert for sårbarhet i KVM hypervisor seg selv, ikke relatert til feil i brukerplasskomponenter som QEMU. Løsningen ble akseptert i kjernen i slutten av mars.

Endelig hvis du er interessert i å vite mer om det om notatet, kan du sjekke detaljene I den følgende lenken.


Bli den første til å kommentere

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.