Intel vállalat a mikroprogram frissítése, amely megszünteti (CVE-2019-14607), hogy a CPU feszültség- és frekvenciakontroll mechanizmusának manipulációival adatsorok tartalmának megsértését idézze elő, beleértve az Intel SGX izolált környezeteiben történő számításokhoz használt területeket. A támadás neve Plundervolt, és potenciálisan lehetővé teszi a helyi felhasználók számára, hogy jogokat szerezzenek a rendszerben, szolgáltatásmegtagadást okozzanak, és hozzáférjenek titkos adatokhoz.
A támadás csak az SGX környezetekben végzett számítások manipulálása esetén jelent veszélyt, mivel végrehajtásához root jogosultságok szükségesek a rendszerben. A legegyszerűbb esetben a támadó elérheti az információk torzítását, amelyek a környezetben kerülnek feldolgozásra, azonban bonyolultabb forgatókönyvek esetén nem zárható ki a lehetőség, hogy visszaállítsák a titkos kulcsokat, amelyeket az RSA-CRT és AES-NI algoritmusokkal történő titkosításhoz használnak. A technika használható hibák generálására is az eredetileg helyes algoritmusokban, hogy memóriakezelés során sebezhetőségeket provokáljanak, például a lefoglalt puffer határain kívüli területekhez való hozzáférés megszervezésére.
A támadás végrehajtásához szükséges kód prototípusa a GitHub-on
A módszer lényege, hogy olyan körülményeket teremtsenek, amelyek előre nem látható adatorozdásokat okoznak az SGX-ben végzett számítások során, amelyek védelme érdekében sem az adatok titkosításának, sem a memória hitelesítésének alkalmazása nem nyújt védelmet. A torzítások előidézésére rendelkezésre állnak a rendszerek energiaköltségeinek csökkentésére és a maximális teljesítmény aktiválására szolgáló, általában használt szoftveres interfészek. A feszültség- és frekvenciatulajdonságok az egész chipet lefedik, beleértve az izolált környezetben végzett számítások teljesítményét is.
A feszültség változtatásával olyan körülményeket lehet teremteni, amelyeknél a CPU-n belüli memória cella regenerálásához nem elegendő a töltés, és annak értéke megváltozik. A támadás kulcsfontosságú eltérése a RowHammer lehetővé teszi, hogy megváltoztassuk a DRAM memória egyes biteinek tartalmát azáltal, hogy ciklikusan olvassuk az adatokat a szomszédos cellákból, míg a Plundervolt azt teszi lehetővé, hogy a bitek megváltozzanak a CPU-n belül, amikor az adatok már betöltődtek a memóriából a számítások végrehajtásához. Ez a funkció lehetővé teszi a SGX által alkalmazott integritás-ellenőrzési és titkosítási mechanizmusok megkerülését, mivel az értékek a memóriában helyesek maradnak, de manipulálódhatnak, mielőtt az eredmény visszakerül a memóriába.
Ha a módosított értéket a titkosítási folyamat során szorzáskor használják, akkor az eredményként kapott titkos szöveg helytelen lesz. Mivel a támadó hozzáférhet a SGX kezelőhöz, hogy titkosítsa adatait, képes áramkimaradások révén statisztikát felhalmozni a kimeneti titkos szöveg változásáról, és néhány percen belül visszafejteni a rekeszben tárolt kulcs értékét. A bemeneti szöveg és a helyes titkos szöveg kimenete ismert, a kulcs nem változik, és a helytelen titkos szöveg kimeneti eredménye azt mutatja, hogy egy bit ellentétes értékre torzult.
A különböző áramkimaradások során összegyűjtött helyes és torzított titkos szövegek párjainak elemzésével, a hiba differenciális elemzési módszereivel (DFA, ) lehet valószínű kulcsokat, amelyeket az AES szimmetrikus titkosításhoz használnak, majd elemezve a kulcsok keresztmetszetét a különböző készletekben, meghatározhatjuk a keresett kulcsot.

A probléma különböző Intel processzormodellekre vonatkozik, beleértve az 6-tól 10-ig terjedő Intel Core CPU-kat, valamint az ötödik és hatodik generációs Xeon E3-at, az első és második generációs Intel Xeon Skálázható processzorokat, a Xeon D-t,
Xeon W-t és Xeon E-t.
Emlékeztetünk arra, hogy az SGX technológia (
Szoftver Védelmi Kiterjesztések) megjelent az Intel Core hatodik generációs (Skylake) processzorokban és utasítja a felhasználói szintű alkalmazások számára a memórián belüli titkos területek — az úgynevezett enclaves — azonosítását, amelyek tartalmát nem lehet olvasni vagy módosítani még a kernel és a ring0, SMM és VMM üzemmódokban futó kód által sem. A vezérlés átadása az enclave-ben lévő kódnak nem lehetséges hagyományos váltófüggvényekkel vagy regiszterek és a verem manipulálásával — a vezérlés átvitelére egy különlegesen létrehozott új utasítást alkalmaznak, amely ellenőrzi a jogosultságokat. Az enclaves-be helyezett kód klasszikus hívási módszereket alkalmazhat a belső funkciók elérésére, valamint egy speciális utasítást külső funkciók megkeresésére. A hardveres támadások, például a DRAM modulokhoz való csatlakozás elleni védelem érdekében az enclaves memória titkosítást alkalmaz.
Forrás: opennet.ru
