Společnost Intel aktualizace mikrokódu, která odstraňuje (CVE-2019-14607), prostřednictvím manipulace s mechanismem dynamického řízení napětí a frekvence v CPU iniciovat poškození obsahu buněk s daty, včetně oblastí používaných při výpočtech v izolovaných enclavích Intel SGX. Útok byl nazván Plundervolt a potenciálně umožňuje lokálnímu uživateli zvýšit své privilégia v systému, vyvolat selhání služby a získat přístup k důvěrným informacím.
Útok představuje nebezpečí pouze v kontextu manipulací s výpočty v enclavech SGX, neboť pro jeho provedení jsou vyžadována práva roota v systému. V nejjednodušším případě může útočník dosáhnout zkreslení informací zpracovávaných v enclave, ale při složitějších scénářích nelze vyloučit možnost rekonstrukce důvěrných klíčů uložených v enclave, které se používají pro šifrování pomocí algoritmů RSA-CRT a AES-NI. Taktika může být rovněž aplikována na generování chyb v původně správných algoritmech s cílem vyvolat zranitelnosti během práce s pamětí, například pro organizaci přístupu do oblasti mimo vyhrazený buffer.
Prototyp kódu pro provedení útoku na GitHubu
Podstata metody spočívá ve vytváření podmínek pro vznik nepředvídaných zkreslení dat při výpočtech v SGX, proti nimž nechrání použití šifrování a autentizace paměti v enclave. Pro zavedení zkreslení bylo možné využít standardní programové rozhraní pro řízení frekvence a napětí, běžně používané pro snížení energetické spotřeby během nečinnosti systému a aktivaci maximálního výkonu při intenzivní práci. Parametry frekvence a napětí pokrývají celý čip a ovlivňují provádění výpočtů v izolovaném enclave.
Změnou napětí lze dosáhnout podmínek, kdy náboj není dostatečný pro regeneraci paměťové buňky uvnitř CPU a její hodnota se mění. Klíčovým rozdílem od útoku je to, co RowHammer umožňuje měnit obsah jednotlivých bitů v paměti DRAM pomocí cyklického čtení dat z sousedních buněk, zatímco Plundervolt umožňuje změny bitů uvnitř CPU, když jsou již data načtena z paměti pro výpočty. Tato vlastnost obchází mechanismy kontroly integrity a šifrování dat v paměti aplikované ve SGX, protože hodnoty v paměti zůstávají korektní, ale mohou být zkresleny při operacích s nimi, než je výsledek zapsán do paměti.
Pokud je tato změněná hodnota použita v procesu násobení během šifrování, výsledkem je neplatný šifrovaný text. S možností volat zpracovatele v SGX pro šifrování svých dat může útočník shromáždit statistiky o změnách šifrovaného textu na výstupu tím, že způsobí závady, a během několika minut obnovit hodnotu uloženého klíče v enclávu. Původní text na vstupu a správný šifrovaný text na výstupu jsou známy, klíč se nemění, a výstup neplatného šifrovaného textu naznačuje zkreslení nějakého bitu na opačnou hodnotu.
Analyzováním shromážděných párů hodnot správného a zkresleného šifrovaného textu při různých závadách pomocí metod diferenciálního analýzy závad (DFA, ) lze pravděpodobné klíče používané pro symetrické šifrování AES a poté, analýzou průniků klíčů v různých sadách, určit hledaný klíč.

Problému jsou vystaveny různé modely procesorů Intel, včetně CPU Intel Core 6.
až 10. generace, stejně jako páté a šesté generace Xeon E3, první a druhé generace Intel Xeon Scalable, Xeon D,
Xeon W a Xeon E.
Připomeňme, že technologie SGX () byla uvedena v procesorech Intel Core šesté generace (Skylake) a série pokynů, které umožňují aplikacím na uživatelské úrovni vyčleňovat uzavřené oblasti paměti – enklávy, jejichž obsah nelze přečíst a změnit ani jádrem a kódem prováděným v režimech ring0, SMM a VMM. Ovládání kódu v enklávě není možné tradičními skokovými funkcemi a manipulacemi s registry a zásobníkem – pro předání řízení do enklávy se používá speciálně navržená nová instrukce, která provádí kontrolu oprávnění. Kód umístěný v enklávě může přitom používat klasické metody volání k přístupu k funkcím uvnitř enklávy a speciální instrukci pro volání externích funkcí. Pro ochranu proti útokům na úrovni hardwaru, jako je připojení k modulu DRAM, je použito šifrování paměti enklávy.
Zdroj: opennet.ru
