„Intel“ procesorių MMIO mechanizmo pažeidžiamumas

„Intel“ atskleidė informaciją apie naujos klasės duomenų nutekėjimą per mikroarchitektūrines procesorių struktūras, kurios leidžia manipuliuojant MMIO (Memory Mapped Input Output) mechanizmu nustatyti informaciją, apdorojamą kituose procesoriaus branduoliuose. Pavyzdžiui, pažeidžiamumas leidžia išgauti duomenis iš kitų procesų, Intel SGX anklavų ar virtualių mašinų. Pažeidžiamumas būdingas tik „Intel“ procesoriams, kurių pažeidžiamumas nepaveikia.

Pažeidžiamumas atsiranda įvairiuose „Intel“ procesoriuose, įskaitant „Haswell“, „Skylake“, „IceLake“, „Broadwell“, „Lakefield“, „Kabylake“, „Cometlake“ ir „Rocketlake“ mikroarchitektūrų procesorius, taip pat „Xeon EP/EX“, „Scalable“ ir kai kuriuos „Atom“ serverių procesorius. Norint įvykdyti ataką, reikalinga prieiga prie MMIO, kurią, pavyzdžiui, galima gauti virtualizacijos sistemose, kurios suteikia galimybę pasiekti MMIO užpuoliko valdomoms svečių sistemoms. Taisymo taip pat gali prireikti sistemoms, naudojančioms Intel SGX (Software Guard Extensions) izoliuotus anklavus.

Norint užblokuoti pažeidžiamumą, reikia atnaujinti ir mikrokodą, ir naudoti papildomus programinės įrangos apsaugos metodus, pagrįstus VERW instrukcijos naudojimu, siekiant išvalyti mikroarchitektūrinių buferių turinį grįžtant iš branduolio į vartotojo erdvę arba perduodant valdymą svečių sistemai. Panaši apsauga taip pat naudojama blokuojant anksčiau nustatytas MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) ir TAA (Transactional Asynchronous Abort) klasių atakas.

Kalbant apie mikrokodą, pakeitimai, būtini apsaugai įgyvendinti, buvo pasiūlyti gegužės mėn. „Intel“ procesorių mikrokodo atnaujinime (IPU 2022.1). „Linux“ branduolyje apsauga nuo naujos klasės atakų įtraukta į 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 ir 4.9.319 leidimus. Norint patikrinti sistemos poveikį MMIO pažeidžiamumui ir įvertinti tam tikrų apsaugos mechanizmų veiklą, prie Linux branduolio buvo pridėtas failas „/sys/devices/system/cpu/vulnerabilities/mmio_stale_data“. Apsaugos įtraukimui valdyti buvo įdiegtas branduolio įkrovos parametras „mmio_stale_data“, kuris gali įgyti reikšmes „full“ (įgalina išvalyti buferius perkeliant į vartotojo erdvę ir VM), „full,nosmt“ ( kaip „pilna“ + papildomai išjungia SMT/Hyper- Threads) ir „off“ (apsauga išjungta). Siūlomi atskiri Xen hipervizoriaus ir Qubes operacinės sistemos pataisymai.

Nustatytos pažeidžiamumo klasės esmė yra ta, kad kai kurios operacijos nukopijuoja arba perkelia duomenis, likusius po vykdymo kituose procesoriaus branduoliuose iš vieno mikroarchitektūrinio buferio į kitą. Dėl MMIO pažeidžiamumo šiuos likutinius duomenis galima perkelti iš izoliuotų mikroarchitektūrinių buferių į programoje matomus registrus arba procesoriaus buferius. Buvo nustatyti trys likutinių duomenų išgavimo per MMIO metodai:

  • DRPW (Įrenginio registro dalinis rašymas, CVE-2022-21166) yra problema, kylanti dėl netinkamo rašymo į kai kuriuos MMIO registrus tvarkymo. Jei rašomų duomenų dydis yra mažesnis už registro dydį, tada likutinė informacija iš užpildymo buferių taip pat nukopijuojama į registrą. Dėl to procesas, kuris inicijuoja neužbaigtą įrašymo į MMIO registrą operaciją, gali gauti duomenis, likusius mikroarchitektūriniuose buferiuose iš operacijų, atliekamų su kitais CPU branduoliais.
  • SBDS (bendrųjų buferių duomenų mėginių ėmimas, CVE-2022-21125) yra likutinių duomenų nutekėjimas iš branduolyje susieto užpildymo buferio, atsirandantis dėl judėjimo iš tarpinių buferių, bendrų visiems branduoliams.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) – problema panaši į SBDS, tačiau skiriasi tuo, kad likutiniai duomenys gali patekti į programoms matomas CPU struktūras. SBDS ir SBDR problemos atsiranda tik klientų sistemų procesoriuose ir Intel Xeon E3 serverių šeimoje.

„Intel“ procesorių MMIO mechanizmo pažeidžiamumas


Šaltinis: opennet.ru

Добавить комментарий