A Retbleed — új támadás az Intel és AMD CPU-k spekulatív végrehajtási mechanizmusára

A kutatócsoport a Zürichi Műszaki Egyetemen új támadási variánst fedezett fel a CPU spekulatív végrehajtási mechanizmusának közvetett ugrásaival kapcsolatban, amely lehetővé teszi az információk kihúzását a magmemóriából, vagy támadást indíthat a hoszt rendszeren virtuális gépekből. A sebezhetőségek Retbleed (CVE-2022-29900, CVE-2022-29901) kódnevet kaptak, és lényegileg hasonlóak a Spectre-v2 támadásokhoz. A különbség abban rejlik, hogy a spekulatív végrehajtást tetszőleges kód futtatásának megszervezése mellett

A támadó olyan körülményeket hozhat létre, amely lehetővé teszi a rossz előrejelzést, és célzott spekulatív ugrást valósíthat meg egy olyan kódblokkra, amely nem része a program végrehajtási logikájának. Végső soron a processzor azt fogja megállapítani, hogy az elágazási előrejelzés nem vált be, és visszaállítja az operációt az eredeti állapotába. Azonban az elágazási végrehajtás során feldolgozott adatok megmaradnak a cache-ben és a mikroszerkezeti pufferekben. Ha a helytelenül végrehajtott blokk memória hozzáférést hajt végre, akkor spekulatív végrehajtása a közös cache-re és az olvasott memória adataira is kiterjedhet.

A spekulatív végrehajtás során a cache-ben megmaradt adatok azonosításához a támadó külső csatornákon keresztül, például előre beprogramozott és nem beprogramozott adatok hozzáférési idejének változásainak elemzésével módszereket alkalmazhat. Az információk célzott kihúzásához más jogosultsági szinten (például a magmemóriából) "gadgets"-et használnak - az operációs rendszerben jelen lévő utasítások sorozata, amely alkalmas a spekulatív adatolvasásra a memória függvényében, a támadó által befolyásolható külső körülmények hatására.

A Spectre-típusú klasszikus támadások ellen, amelyek feltételezett és közvetett ugrási utasításokat használnak, a legtöbb operációs rendszer a "retpoline" technikát alkalmazza. Ez a technika a közvetett ugrások helyébe a "ret" utasítást állítja, amelyhez a processzorokban egy külön állapot-előrejelző blokk tartozik, amely nem használja az ugrások előrejelzésének blokkot. A retpoline 2018-as bevezetésekor feltételezték, hogy a Spectre-hez hasonló címmel végzett manipulációk a gyakorlatban nem alkalmazhatók spekulatív ugrásra a "ret" utasítással.

A Retbleed támadási módszert kifejlesztő kutatók bemutatták, hogy képesek mikroarchitekturális körülményeket létrehozni spekulatív ugrás kezdeményezésére a "ret" utasítással, és közzétették a Linux kernelben történő kihasználhatóság ellenőrzésére alkalmas eszközöket, amelyekben megjelennek az ilyen körülmények.

A kutatás során egy működő exploit készült, amely lehetővé teszi, hogy Intel CPU-val rendelkező rendszereken nem privilegizált folyamatból a felhasználói térben tetszőleges adatokat nyerjenek ki a kernel memóriájából 219 bájt másodpercenként és 98%-os pontossággal. AMD processzorok esetében az exploit hatékonysága sokkal nagyobb — az adatlopás sebessége 3,9 KB másodpercenként. Gyakorlati példaként bemutatásra került, hogyan lehet megállapítani a /etc/shadow fájl tartalmát a javasolt exploit segítségével. Az Intel CPU-val rendelkező rendszereken a root felhasználó jelszó hash-ának meghatározására irányuló támadást 28 perc alatt hajtották végre, míg AMD CPU-val rendelkező rendszereken 6 perc alatt.

Videó lejátszása

A támadás lehetősége megerősítést nyert az Intel 6-8. generációs processzorainál, amelyek 2019 harmadik negyedéig készültek (beleértve a Skylake-t), valamint az AMD Zen 1, Zen 1+ és Zen 2 mikroarchitektúráján alapuló processzoroknál, amelyek 2021 második negyedéig készültek. Az újabb processzormodellek, mint például az AMD Zen3 és Intel Alder Lake, valamint az ARM processzorok esetében a probléma védelmi mechanizmusokkal blokkolva van. Például az IBRS (Közvetett Ugrás Korlátozott Spekuláció) utasítások alkalmazása segít megvédeni a támadástól.

A Linux kernel and Xen hypervisor modification set has been prepared for old CPUs that block the problem through software. The proposed Linux kernel patch modifies 68 files, adds 1783 lines, and removes 387 lines. Unfortunately, this protection incurs significant overhead — in tests conducted on AMD and Intel processors, performance degradation is estimated at 14% to 39%. The preferred method is to use protection based on IBRS instructions, available in new generations of Intel CPUs and supported since Linux kernel 4.19.

On Intel processors, the address substitution for speculative indirect jumps is achieved due to a feature that manifests during underflow in the Return Stack Buffer. Under such conditions, the logic for selecting addresses used for the 'ret' instruction behaves similarly to that used in regular indirect jumps. Over a thousand locations in the Linux kernel have been found that create conditions for initiating such backward underflows accessible through system calls.

On AMD processors, the speculative execution of the 'ret' instruction occurs without reliance on the stack-specific Return Address Stack, and the branch prediction block treats the 'ret' instruction not as a control return but as an indirect jump, thus using data for indirect jumps in its predictions. Under these conditions, effectively any 'ret' operation reachable via a system call can be exploited.

Additionally, another issue has been identified in AMD CPUs (CVE-2022-23825, Branch Type Confusion), related to performing fake jumps — conditions for jump prediction may arise even without the necessary branching instructions, allowing influence on the branch prediction buffer without a 'ret' instruction. This feature significantly complicates the implementation of protection and requires more active clearing of the branch prediction buffer. It is expected that adding full protection to the kernel will lead to an increase in overhead by 209%.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster