Intel-prosessorien MMIO-mekanismin haavoittuvuudet

Intel on paljastanut tietoja uudesta tietovuodosta prosessorien mikroarkkitehtuurirakenteiden kautta, jotka mahdollistavat MMIO (Memory Mapped Input Output) -mekanismin manipuloinnin avulla määrittämään muilla prosessorin ytimillä käsitellyt tiedot. Haavoittuvuuksien avulla voidaan esimerkiksi poimia tietoja muista prosesseista, Intel SGX -enklaaveista tai virtuaalikoneista. Haavoittuvuudet koskevat vain Intel-suorittimia; muiden valmistajien prosessoreihin haavoittuvuudet eivät vaikuta.

Haavoittuvuudet näkyvät useissa Intel-suorittimissa, mukaan lukien Haswell-, Skylake-, IceLake-, Broadwell-, Lakefield-, Kabylake-, Cometlake- ja Rocketlake-mikroarkkitehtuureihin perustuvat prosessorit sekä Xeon EP/EX-, Scalable- ja joihinkin Atom-palvelinprosessoreihin. Hyökkäyksen toteuttamiseen tarvitaan pääsy MMIO:han, joka voidaan saada esimerkiksi virtualisointijärjestelmissä, jotka tarjoavat mahdollisuuden käyttää MMIO:ta hyökkääjän hallitsemille vierasjärjestelmille. Korjaus voi olla tarpeen myös Intel SGX (Software Guard Extensions) -eristettyjä erillisalueita käyttäville järjestelmille.

Haavoittuvuuden estäminen vaatii sekä mikrokoodipäivityksen että lisäohjelmiston suojausmenetelmien käyttöä, jotka perustuvat VERW-käskyn käyttöön mikroarkkitehtonisten puskurien sisällön tyhjentämiseksi palatessaan ytimestä käyttäjätilaan tai siirrettäessä ohjausta vierasjärjestelmään. Samanlaista suojausta käytetään myös estämään aiemmin tunnistetut MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) ja TAA (Transactional Asynchronous Abort) -luokkien hyökkäykset.

Mikrokoodipuolella suojauksen toteuttamiseen tarvittavia muutoksia ehdotettiin toukokuun mikrokoodipäivityksessä Intel-suorittimille (IPU 2022.1). Linux-ytimessä suojaus uutta hyökkäysluokkaa vastaan ​​sisältyy julkaisuihin 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 ja 4.9.319. Jotta voidaan tarkistaa järjestelmän altistuminen MMIO:n haavoittuvuuksille ja arvioida tiettyjen suojausmekanismien toimintaa, tiedosto “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” on lisätty Linux-ytimeen. Suojauksen sisällyttämisen ohjaamiseksi on toteutettu ytimen käynnistysparametri “mmio_stale_data”, joka voi ottaa arvot “full” (mahdollistaa puskurien puhdistuksen siirryttäessä käyttäjätilaan ja virtuaalikoneeseen), “full,nosmt” ( "täynnä" + lisäksi poistaa käytöstä SMT/Hyper-Treads) ja "off" (suojaus pois käytöstä). Xen-hypervisorille ja Qubes-käyttöjärjestelmälle tarjotaan erilliset korjaukset.

Tunnistetun haavoittuvuusluokan ydin on, että jotkin toiminnot johtavat suorituksen jälkeen jäljelle jääneiden tietojen kopioimiseen tai siirtämiseen muissa suorittimen ytimissä mikroarkkitehtuuripuskurista toiseen. MMIO:n haavoittuvuudet mahdollistavat tämän jäännösdatan siirtämisen eristetyistä mikroarkkitehtuuripuskureista sovelluksen näkyviin rekistereihin tai suoritinpuskureihin. Jäännöstietojen poimimiseen MMIO:n kautta on tunnistettu kolme menetelmää:

  • DRPW (Device Register Partial Write, CVE-2022-21166) on ongelma joidenkin MMIO-rekisterien kirjoitusten virheellisessä käsittelyssä. Jos kirjoitettavan tiedon koko on pienempi kuin rekisterin koko, kopioidaan rekisteriin myös täyttöpuskureiden jäännöstiedot. Tämän seurauksena prosessi, joka käynnistää epätäydellisen kirjoitustoiminnon MMIO-rekisteriin, voi saada mikroarkkitehtuuripuskureissa jäljellä olevan datan muilla CPU-ytimillä suoritetuista toiminnoista.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) on ytimeen sidotun täyttöpuskurin jäännöstietojen vuoto, joka johtuu siirrosta kaikille ytimille yhteisistä välipuskureista.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - ongelma on samanlainen kuin SBDS, mutta eroaa siinä, että jäännöstiedot voivat päätyä sovellusten näkyviin suoritinrakenteisiin. SBDS- ja SBDR-ongelmat näkyvät vain asiakasjärjestelmien prosessoreissa ja Intel Xeon E3 -palvelinperheessä.

Intel-prosessorien MMIO-mekanismin haavoittuvuudet


Lähde: opennet.ru

Lisää kommentti