Chyby v mechanismu MMIO procesorů Intel

Intel zveřejnil informace o nové třídě úniků dat prostřednictvím mikroarchitektonických struktur procesorů, které umožňují prostřednictvím manipulace s mechanismem MMIO (Memory Mapped Input Output) určit informace zpracovávané na jiných jádrech CPU. Zranitelnosti například umožňují extrahovat data z jiných procesů, enkláv Intel SGX nebo virtuálních strojů. Zranitelnosti jsou specifické pouze pro procesory Intel, procesorů jiných výrobců se zranitelnosti netýkají.

Chyby zabezpečení se objevují v různých procesorech Intel, včetně procesorů založených na mikroarchitekturách Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake a Rocketlake a také na procesorech Xeon EP/EX, Scalable a některých serverových procesorech Atom. K provedení útoku je nutný přístup k MMIO, který lze například získat ve virtualizačních systémech, které poskytují možnost přístupu k MMIO pro hostované systémy ovládané útočníkem. Oprava může být také vyžadována pro systémy používající izolované enklávy Intel SGX (Software Guard Extensions).

Blokování zranitelnosti vyžaduje jak aktualizaci mikrokódu, tak použití dodatečných metod ochrany softwaru založených na použití instrukce VERW k vymazání obsahu mikroarchitektonických vyrovnávacích pamětí při návratu z jádra do uživatelského prostoru nebo při přenosu řízení na hostující systém. Podobná ochrana se také používá k blokování dříve identifikovaných útoků tříd MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) a TAA (Transactional Asynchronous Abort).

Na straně mikrokódu byly změny nutné k implementaci ochrany navrženy v květnové aktualizaci mikrokódu pro procesory Intel (IPU 2022.1). V linuxovém jádře je ochrana proti nové třídě útoků zahrnuta ve vydáních 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 a 4.9.319. Pro kontrolu vystavení systému zranitelnostem v MMIO a vyhodnocení aktivity určitých ochranných mechanismů byl do linuxového jádra přidán soubor „/sys/devices/system/cpu/vulnerabilities/mmio_stale_data“. Pro řízení zahrnutí ochrany byl implementován spouštěcí parametr jádra „mmio_stale_data“, který může nabývat hodnot „full“ (umožňuje čištění vyrovnávacích pamětí při přesunu do uživatelského prostoru a ve virtuálním počítači), „full,nosmt“ ( jako „plné“ + navíc deaktivuje SMT/Hypervlákna) a „vypnuto“ (ochrana vypnuta). Samostatné opravy jsou nabízeny pro hypervizor Xen a operační systém Qubes.

Podstatou identifikované třídy zranitelnosti je, že některé operace vedou ke kopírování nebo přesunutí dat zbývajících po spuštění na jiných jádrech CPU z jedné mikroarchitektonické vyrovnávací paměti do druhé. Zranitelnosti v MMIO umožňují přenos těchto zbytkových dat z izolovaných mikroarchitektonických vyrovnávacích pamětí do aplikačně viditelných registrů nebo vyrovnávacích pamětí CPU. Pro extrakci zbytkových dat prostřednictvím MMIO byly identifikovány tři metody:

  • DRPW (Device Register Partial Write, CVE-2022-21166) je problém s nesprávným zpracováním zápisů do některých MMIO registrů. Pokud je velikost zapisovaných dat menší než velikost registru, pak se do registru zkopírují také zbytkové informace z vyrovnávací paměti. Výsledkem je, že proces, který zahájí operaci neúplného zápisu do registru MMIO, může získat data zbývající v mikroarchitektonických vyrovnávací paměti z operací prováděných na jiných jádrech CPU.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) je únik zbytkových dat z vyrovnávací paměti vázané na jádro v důsledku přesunu z mezilehlých vyrovnávacích pamětí společných pro všechna jádra.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) – problém je podobný jako u SBDS, ale liší se tím, že zbytková data mohou skončit ve strukturách CPU viditelných pro aplikace. Problémy SBDS a SBDR se objevují pouze u procesorů pro klientské systémy a u serverů řady Intel Xeon E3.

Chyby v mechanismu MMIO procesorů Intel


Zdroj: opennet.ru

Přidat komentář