Intel procesoru MMIO mehānisma ievainojamības

Intel ir atklājis informāciju par jaunu datu noplūdes klasi, izmantojot procesoru mikroarhitektūras struktūras, kas, manipulējot ar MMIO (Memory Mapped Input Output) mehānismu, ļauj noteikt citos CPU kodolos apstrādāto informāciju. Piemēram, ievainojamības ļauj iegūt datus no citiem procesiem, Intel SGX anklāviem vai virtuālajām mašīnām. Ievainojamības ir raksturīgas tikai Intel CPU; citu ražotāju procesorus ievainojamības neietekmē.

Ievainojamības parādās dažādos Intel CPU, tostarp procesoros, kuru pamatā ir Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake un Rocketlake mikroarhitektūras, kā arī Xeon EP/EX, Scalable un daži Atom serveru procesori. Lai veiktu uzbrukumu, ir nepieciešama piekļuve MMIO, ko, piemēram, var iegūt virtualizācijas sistēmās, kas nodrošina iespēju piekļūt MMIO uzbrucēja kontrolētajām viesu sistēmām. Labojums var būt nepieciešams arī sistēmām, kurās tiek izmantoti Intel SGX (Software Guard Extensions) izolēti anklāvi.

Lai bloķētu ievainojamību, ir nepieciešams gan mikrokoda atjauninājums, gan papildu programmatūras aizsardzības metožu izmantošana, pamatojoties uz VERW instrukcijas izmantošanu, lai notīrītu mikroarhitektūras buferu saturu, atgriežoties no kodola lietotāja telpā vai nododot vadību viesu sistēmai. Līdzīga aizsardzība tiek izmantota arī, lai bloķētu iepriekš identificētos MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) un TAA (Transactional Asynchronous Abort) klases uzbrukumus.

Mikrokoda pusē aizsardzības ieviešanai nepieciešamās izmaiņas tika ierosinātas maija mikrokoda atjauninājumā Intel CPU (IPU 2022.1). Linux kodolā aizsardzība pret jaunas klases uzbrukumiem ir iekļauta laidienos 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 un 4.9.319. Lai pārbaudītu sistēmas pakļaušanu MMIO ievainojamībām un novērtētu noteiktu aizsardzības mehānismu darbību, Linux kodolam ir pievienots fails “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data”. Lai kontrolētu aizsardzības iekļaušanu, ir ieviests kodola sāknēšanas parametrs “mmio_stale_data”, kas var iegūt vērtības “full” (ļauj tīrīt buferus, pārejot uz lietotāja vietu un virtuālajā mašīnā), “full,nosmt” ( kā “pilns” + papildus atspējo SMT/Hyper- Threads) un “off” (aizsardzība atspējota). Xen hipervizoram un Qubes operētājsistēmai tiek piedāvāti atsevišķi labojumi.

Identificētās ievainojamības klases būtība ir tāda, ka dažas darbības noved pie datu, kas palikuši pēc izpildes citos CPU kodolos, kopēšanas vai pārvietošanas no viena mikroarhitektūras bufera uz citu. MMIO ievainojamības ļauj pārsūtīt šos atlikušos datus no izolētiem mikroarhitektūras buferiem uz lietojumprogrammām redzamiem reģistriem vai CPU buferiem. Ir noteiktas trīs metodes atlikušo datu iegūšanai, izmantojot MMIO:

  • DRPW (ierīču reģistra daļēja rakstīšana, CVE-2022-21166) ir problēma, kas saistīta ar nepareizu rakstīšanu dažos MMIO reģistros. Ja ierakstāmo datu izmērs ir mazāks par reģistra izmēru, tad reģistrā tiek kopēta arī atlikušā informācija no aizpildīšanas buferiem. Rezultātā process, kas ierosina nepilnīgu ierakstīšanas darbību MMIO reģistrā, var iegūt datus, kas paliek mikroarhitektūras buferos no darbībām, kas veiktas citos CPU kodolos.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) ir atlikušo datu noplūde no ar kodolu saistītā aizpildīšanas bufera, kas rodas, pārvietojoties no visiem kodoliem kopīgiem starpbuferiem.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) — problēma ir līdzīga SBDS, taču atšķiras ar to, ka atlikušie dati var nonākt lietojumprogrammām redzamajās CPU struktūrās. SBDS un SBDR problēmas parādās tikai klientu sistēmu procesoros un Intel Xeon E3 serveru saimē.

Intel procesoru MMIO mehānisma ievainojamības


Avots: opennet.ru

Pievieno komentāru