Gå til indhold
atlas

Hypervisor

Også kendt som: VMM

Det lag software, der deler én fysisk computer op i flere virtuelle maskiner og holder dem adskilt.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

Software, der skaber og kører virtuelle maskiner, giver hver en del af den rigtige processor, hukommelse og enheder og forhindrer, at én maskine kan læse eller ændre en anden; en type 1-hypervisor kører direkte på hardwaren, en type 2 oven på et styresystem.

Forklaret enkelt

Som viceværten i en ejendom, der fordeler plads, vand og varme mellem lejlighederne og sørger for, at ingen lejer kan gå ind hos naboen.

I praksis

En region kører to hundrede virtuelle maskiner på en håndfuld servere; når der offentliggøres en fejl i hypervisoren, flytter den IT-driftsansvarlige maskinerne til side og patcher alle værter inden for ugen.

Hvorfor det betyder noget

Alle virtuelle maskiner på en vært er afhængige af den for at holde sig adskilt, så ét hul i hypervisoren kan give en angriber adgang til dem alle på én gang.

Teknisk uddybning

Teorien går tilbage til Popek og Goldberg (1974), der opstillede tre krav til en virtual machine monitor (ækvivalens, ressourcekontrol og effektivitet) og viste, at klassisk trap-and-emulate-virtualisering virker, når alle følsomme instruktioner også er privilegerede, så de udløser en trap i brugertilstand. Klassisk x86 opfyldte ikke dette: instruktioner som POPF opfører sig i stilhed anderledes i ring 3 i stedet for at trappe. VMware omgik problemet fra 1999 med dynamisk binær oversættelse af gæstens kernekode og Xen (2003) med paravirtualisering, hvor den tilpassede gæstekerne kalder hypervisoren via hypercalls. Intel VT-x (2005) og AMD-V (2006) tilføjede derefter en root/non-root-tilstand i hardwaren med VM entries og exits styret af en struktur pr. vCPU (VMCS hos Intel, VMCB hos AMD). Second-level address translation (Intel EPT, AMD NPT) fjernede siden de dyre shadow page tables, og en IOMMU (VT-d, AMD-Vi) gjorde passthrough af enheder og SR-IOV sikkert.

Opdelingen i type 1 og type 2 stammer fra Goldbergs afhandling fra 1973. VMware ESXi, Microsoft Hyper-V og Xen er type 1; i Hyper-V og Xen kører en privilegeret partition (root-partitionen, dom0) et fuldt styresystem til administration og drivere, men hypervisoren ligger under den. VirtualBox og VMware Workstation er type 2. KVM, der kom ind i Linux 2.6.20 i 2007, gør selve Linux-kernen til hypervisor, mens QEMU i brugerrummet emulerer enhederne, så klassificeringen er omdiskuteret. De store clouds kører slanke afledninger: AWS Nitro bygger på KVM og flytter netværk og lager ud på dedikerede kort, og Firecracker er en minimal VMM skrevet i Rust til microVM'er.

Angrebsfladen er koncentreret i de emulerede enheder og i administrationslaget. VENOM (CVE-2015-3456), et bufferoverløb i QEMU's virtuelle diskettecontroller, gjorde det muligt at bryde ud fra gæst til vært, og kæder af VM escapes mod VMware og virtio-enheder dukker jævnligt op ved Pwn2Own. Sidekanaler mellem kunder som L1 Terminal Fault (2018) tvang afhjælpninger som tømning af L1-cachen ved VM entry og deaktivering eller begrænsning af SMT. Ransomwaregrupper springer i stigende grad gæsterne over og angriber ESXi-værterne direkte ved at kryptere de virtuelle maskiners diskfiler på datastoren, som i ESXiArgs-kampagnen i 2023.

NIST SP 800-125 (2011) og SP 800-125A Rev. 1 anbefaler en minimal hypervisor, hurtig patching, et administrationsnetværk adskilt fra gæsternes trafik og stram kontrol med administrativ adgang; i praksis skal hypervisor-administratorer behandles som administratorer på højeste niveau, fordi de kan læse alle gæsters hukommelse og diske. En hypervisor adskiller sig fra en container-runtime, hvor alle containere deler én værtskerne; sandboxede runtimes som Kata Containers og gVisor udvisker den grænse.

Relationer

Åbner for
Virtuel maskine

Kilder og videre læsning

Standarder og officielle tekster

  • NIST SP 800-125 - Guide to Security for Full Virtualization Technologies · NIST

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Test dig selv

Indlæser…

Atlas er i beta.