Inteli protsessorite MMIO mehhanismi haavatavused

Intel on avalikustanud teabe protsessorite mikroarhitektuursete struktuuride kaudu toimuvate uue andmelekkete klassi kohta, mis võimaldavad MMIO (Memory Mapped Input Output) mehhanismi manipuleerimise kaudu määrata teistes CPU tuumades töödeldud teavet. Näiteks võimaldavad haavatavused eraldada andmeid teistest protsessidest, Inteli SGX enklaavidest või virtuaalmasinatest. Turvaaugud on spetsiifilised ainult Inteli protsessoritele, teiste tootjate protsessoreid need haavad ei mõjuta.

Turvaaukud ilmnevad erinevates Inteli protsessorites, sealhulgas Haswelli, Skylake'i, IceLake'i, Broadwelli, Lakefieldi, Kabylake'i, Cometlake'i ja Rocketlake'i mikroarhitektuuridel põhinevates protsessorites, samuti Xeon EP/EX, Scalable ja mõnel Atomi serveriprotsessoril. Rünnaku läbiviimiseks on vajalik juurdepääs MMIO-le, mille saab näiteks virtualiseerimissüsteemides, mis pakuvad ründaja juhitavate külalistesüsteemide jaoks juurdepääsu MMIO-le. Parandus võib olla vajalik ka Intel SGX (Software Guard Extensions) isoleeritud enklaave kasutavate süsteemide puhul.

Haavatavuse blokeerimiseks on vaja nii mikrokoodi värskendamist kui ka täiendavate tarkvarakaitsemeetodite kasutamist, mis põhinevad VERW käsu kasutamisel, et puhastada mikroarhitektuuripuhvrite sisu tuumast kasutajaruumi naastes või juhtimise üleandmisel külalissüsteemi. Sarnast kaitset kasutatakse ka klasside MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) ja TAA (Transactional Asynchronous Abort) varem tuvastatud rünnakute blokeerimiseks.

Mikrokoodi poole pealt pakuti kaitse rakendamiseks vajalikke muudatusi Inteli protsessorite maikuu mikrokoodivärskenduses (IPU 2022.1). Linuxi tuumas sisaldub kaitse uue klassi rünnakute vastu väljaannetes 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 ja 4.9.319. Et kontrollida süsteemi kokkupuudet MMIO haavatavustega ja hinnata teatud kaitsemehhanismide aktiivsust, on Linuxi kernelisse lisatud fail “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data”. Kaitse kaasamise kontrollimiseks on juurutatud kerneli alglaadimisparameeter “mmio_stale_data”, mis võib võtta väärtusi “full” (võimaldab puhvrite puhastamist kasutajaruumi liikumisel ja VM-is), “full,nosmt” ( kui "täis" + lisaks keelab SMT/Hyper- Threads) ja "off" (kaitse on keelatud). Xeni hüperviisori ja Qubesi operatsioonisüsteemi jaoks pakutakse eraldi parandusi.

Tuvastatud haavatavuste klassi põhiolemus seisneb selles, et mõned toimingud põhjustavad pärast täitmist teistes CPU tuumades allesjäänud andmete kopeerimist või teisaldamist ühest mikroarhitektuursest puhvrist teise. MMIO haavatavused võimaldavad need jääkandmed isoleeritud mikroarhitektuuripuhvritest üle kanda rakenduste nähtavatesse registritesse või CPU puhvritesse. Jääkandmete ekstraheerimiseks MMIO kaudu on tuvastatud kolm meetodit:

  • DRPW (seadmeregistri osaline kirjutamine, CVE-2022-21166) on probleem, mis on seotud mõne MMIO-registri kirjutamise ebaõige käsitlemisega. Kui kirjutatavate andmete suurus on väiksem kui registri suurus, siis kopeeritakse registrisse ka täitepuhvrite jääkinfo. Selle tulemusel võib protsess, mis käivitab MMIO registrisse mittetäieliku kirjutamistoimingu, saada mikroarhitektuuripuhvritesse jäänud andmeid teiste protsessori tuumadega tehtud toimingutest.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) on kerneliga seotud täitepuhvri jääkandmete leke, mis tuleneb kõigi tuumade jaoks ühistest vahepuhvritest liikumisest.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) – probleem sarnaneb SBDS-iga, kuid erineb selle poolest, et jääkandmed võivad sattuda rakendustele nähtavatesse protsessoristruktuuridesse. SBDS- ja SBDR-probleemid ilmnevad ainult klientsüsteemide protsessoritel ja Intel Xeon E3 serveriperekonnal.

Inteli protsessorite MMIO mehhanismi haavatavused


Allikas: opennet.ru

Lisa kommentaar