„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.

На стороне микрокода необходимые для реализации защиты изменения предложены в майском обновлении микрокода для CPU Intel (IPU 2022.1). В ядре Linux защита от нового класса атак включена в состав выпусков 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 и 4.9.319. Для проверки подверженности системы уязвимостям в MMIO и оценки активности тех или иных механизмов защиты в ядро Linux добавлен файл «/sys/devices/system/cpu/vulnerabilities/mmio_stale_data». Для управления включением защиты реализован загрузочный параметр ядра «mmio_stale_data», который может принимать значения «full» (включение чистки буферов при переходе в пространство пользователя и в VM), «full,nosmt» (как «full» + дополнительно отключается SMT/Hyper-Threads) и «off» (защита отключена). Отдельные исправления предложены для гипервизора Xen и операционной системы Qubes.

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
Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster