Sårbarheter i MMIO-mekanismen til Intel-prosessorer

Intel har avslørt informasjon om en ny klasse av datalekkasjer gjennom mikroarkitektoniske strukturer av prosessorer, som tillater, gjennom manipulering av MMIO (Memory Mapped Input Output)-mekanismen, å bestemme informasjon behandlet på andre CPU-kjerner. For eksempel lar sårbarheter data trekkes ut fra andre prosesser, Intel SGX-enklaver eller virtuelle maskiner. Sårbarhetene er kun spesifikke for Intel CPUer; prosessorer fra andre produsenter påvirkes ikke av sårbarhetene.

Sårbarhetene vises i ulike Intel-CPU-er, inkludert prosessorer basert på Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake og Rocketlake mikroarkitekturer, samt Xeon EP/EX, Scalable og noen Atom-serverprosessorer. For å gjennomføre et angrep kreves tilgang til MMIO, som for eksempel kan fås i virtualiseringssystemer som gir mulighet for tilgang til MMIO for gjestesystemer kontrollert av angriperen. En reparasjon kan også være nødvendig for systemer som bruker Intel SGX (Software Guard Extensions) isolerte enklaver.

Blokkering av sårbarheten krever både en mikrokodeoppdatering og bruk av ekstra programvarebeskyttelsesmetoder basert på bruk av VERW-instruksjonen for å tømme innholdet i mikroarkitektoniske buffere ved retur fra kjernen til brukerområdet eller ved overføring av kontroll til gjestesystemet. Tilsvarende beskyttelse brukes også til å blokkere tidligere identifiserte angrep av klassene MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) og TAA (Transactional Asynchronous Abort).

På mikrokodesiden ble endringene som er nødvendige for å implementere beskyttelse foreslått i mai-mikrokodeoppdateringen for Intel CPUer (IPU 2022.1). I Linux-kjernen er beskyttelse mot en ny klasse av angrep inkludert i utgivelsene 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 og 4.9.319. For å sjekke systemets eksponering for sårbarheter i MMIO og evaluere aktiviteten til visse beskyttelsesmekanismer, er filen "/sys/devices/system/cpu/vulnerabilities/mmio_stale_data" lagt til Linux-kjernen. For å kontrollere inkluderingen av beskyttelse er kjerneoppstartsparameteren "mmio_stale_data" implementert, som kan ta verdiene "full" (muliggjør rensing av buffere når du flytter til brukerplass og i VM), "full,nosmt" ( som "full" + deaktiverer i tillegg SMT/Hyper-Tråder) og "av" (beskyttelse deaktivert). Separate rettelser tilbys for Xen-hypervisoren og Qubes-operativsystemet.

Essensen av den identifiserte klassen av sårbarheter er at noen operasjoner fører til kopiering eller flytting av data som gjenstår etter kjøring på andre CPU-kjerner fra en mikroarkitektonisk buffer til en annen. Sårbarheter i MMIO gjør at disse gjenværende dataene kan overføres fra isolerte mikroarkitektoniske buffere til applikasjonssynlige registre eller CPU-buffere. Tre metoder er identifisert for å trekke ut gjenværende data gjennom MMIO:

  • DRPW (Device Register Partial Write, CVE-2022-21166) er et problem med feil håndtering av skriv til enkelte MMIO-registre. Hvis størrelsen på dataene som skrives er mindre enn størrelsen på registeret, kopieres også restinformasjonen fra fyllebufferne inn i registeret. Som et resultat kan en prosess som initierer en ufullstendig skriveoperasjon til MMIO-registeret hente data som er igjen i de mikroarkitektoniske bufferne fra operasjoner utført på andre CPU-kjerner.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) er en lekkasje av gjenværende data fra en kjernebundet fyllbuffer som er et resultat av bevegelse fra mellombuffere som er felles for alle kjerner.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - problemet ligner på SBDS, men skiller seg ved at gjenværende data kan havne i CPU-strukturer som er synlige for applikasjoner. SBDS- og SBDR-problemer vises bare på prosessorer for klientsystemer og på Intel Xeon E3-serverfamilien.

Sårbarheter i MMIO-mekanismen til Intel-prosessorer


Kilde: opennet.ru

Legg til en kommentar