Minden AMD Ryzen CPU érzékeny az új "Inception" támadásokra, amelyek érzékeny adatokat szivárogtatnak ki

Az Inception névre keresztelt új támadás bármely AMD CPU-ból érzékeny adatok kiszivárogtatására használható.

Kulcs elvitelek

  • Az ETH Zurich kutatói egy új átmeneti végrehajtási támadást fejlesztettek ki Training in Transient Execution néven. (TTE), amely a spekulatív végrehajtást kihasználva kiszivárogtatja a kernelmemóriát és eléri az olyan érzékeny fájlokat, mint a /etc/shadow Linuxon gépek.
  • Az Inception, a TTE-vel épített végpontok közötti exploit másodpercenként akár 39 bájtot is kiszivároghat az AMD Zen 4-en processzorokat, és sikeresen lekéri az /etc/shadow fájlban tárolt kivonatolt felhasználói fiók jelszavakat 40-en belül percek.
  • Az Inception különbözik a többi tranziens végrehajtási támadástól azáltal, hogy új előrejelzéseket illeszt be az elágazás előrejelzőjébe tranziens ablak, erősebb tranziens ablakok létrehozása, amelyek segítségével túlcsordulhat a Return Stack Buffer és átveheti az irányítást a CPU. A támadás hatásának mérséklése nyilvánvalóan kihívást jelent.

Nyomában Zenbleed

, az ETH Zurich kutatói a Training in Transient Execution (TTE) elnevezésű tranziens végrehajtási támadások új osztályát tervezték. A TTE segítségével a kutatók egy end-to-end exploitot építettek ki Inception néven. Akár 39 bájt/másodperc sebességgel szivárogtathatja ki a kernelmemóriát az AMD Zen 4-en, és a kutatóknak sikerült kiszivárogtatniuk az /etc/shadow fájlt egy Linux gép 40 perc alatt. Ez a fájl kivonatolt felhasználói fiók jelszavakat tartalmaz, és a rendszer védi, csak a root felhasználó férhet hozzá. Más szóval, ez a kizsákmányolás nagyon rossz.

Hogyan működik az Inception?

Mint a Zenbleednél, Kezdetben (CVE-2023-20569, keresztül Csipogó számítógép) visszaél a spekulatív végrehajtással annak működésében. Az elágazás előrejelzése és a spekulatív végrehajtás általában arra utal, amikor a számítógép olyan műveleteket hajt végre, amelyekre még nincs szükség, de valószínűleg szükség lesz a következő ciklusokban. Ezt gyakran olyan időkben teszik meg, amikor a rendszernek szabad erőforrásai vannak, mivel felgyorsítja az általános feldolgozást, amikor az utasítások vagy adatok egyébként még nem lennének készen a CPU számára. Ha az elvégzett munkára nincs szükség, azt általában eldobják, és a processzor visszaugorhat oda, ahol kell, hogy végrehajtsa a következő, helyes utasítást. Amikor ezt megteszi, ezt elágazási téves előrejelzésnek nevezik.

Sok probléma merül fel azonban a spekulatív végrehajtással kapcsolatban, és az olyan sebezhetőségek, mint a Spectre és a Zenbleed ennek eredménye. Ezek a kutatók a "Phantom" nevű régebbi kizsákmányolást (amely a Zen 1 és Zen 2 architektúrákat érintette) párosították a TTE támadásukkal, hogy létrehozzák az Inceptiont.

A „Kezdet” az azonos nevű filmre utal, ahol a film előfeltevése azon alapul, hogy álmodozás közben valakinek elültetjük az ötletet. Ebben az esetben a kutatók azt állítják, hogy egy "ötletet" ültetnek a CPU-ba, miközben az bizonyos értelemben "álom". Ez helytelen utasításokat hajt végre, ami lehetővé teszi az Inception számára, hogy eltérítse a vezérlőfolyamat a CPU.

A BTB a Branch Target Buffer, az RSB pedig a Return Stack Buffer. Az Inception fehér könyvéből átvéve:

"Az első T1 képzési lépésben a támadó végrehajt egy képzési ágat a TJ-n, amely ütközik a PHANTOMJMP forrás PJ BTB bejegyzésével. A kernel címterében található PJ az a cím, amely elindítja a rekurzív PHANTOMCALL-t. Az áldozat visszatérési VR a PJ után kerül kiosztásra a vezérlőfolyamban. A PHANTOMJMP célja PC-re van beállítva, amelynél a rekurzív PHANTOMCALL aktiválódik. A T2 betanítási lépésben a támadó egy edzéshívást hajt végre a TC-nél, amely ütközik a BTB-ben lévő PC-vel, amely létrehozza a PHANTOMCALL előrejelzését. Ennek a képzési hívásnak a célja a számítógépre van állítva, rekurzív PHANTOMCALL előrejelzést hozva létre. A PC futtatásakor a CPU így rekurzív módon RSB előrejelzéseket injektál a G adattárba, amelynek helye közvetlenül követi a PC PHANTOMCALL-ját. Mivel a PC a kerneltérben található, a TJ és TC tanító ágak oldalhibákat indítanak el, amelyekből helyreállunk."

Az Inception abban különbözik a legtöbb tranziens végrehajtási támadástól, hogy a tranziens ablakban új előrejelzéseket szúr be az elágazás-előrejelzőbe. Minden beillesztés további átmeneti ablakokat hoz létre, amelyek erősebbek lehetnek, mint az előzőek. A Phantom esetében (CVE-2022-23825), tetszőleges utasítások segítségével átmeneti ablak hozható létre. Ez azt jelenti, hogy az utasítások (például kizárólagos-vagy vagy XOR) hívási utasításként használhatók, és további átmeneti ablakokat hozhatnak létre. Ezt használjuk a Return Stack puffer túlcsordítására.

Mit tudsz csinálni?

Jelenleg nem sok mindent tehetsz, és még az AMD esetében is nehéz megmondani, hogy valójában mit tehetnek ellene. A hatás teljes mérséklése érdekében az AMD-nek ki kell ürítenie a márka előrejelzőjét, miközben vált a kontextusok között, ami hihetetlenül költséges lehet a teljesítmény tekintetében.

Az AMD másfajta mérséklést javasolt, és olyat, ami miatt az AMD úgy döntött, hogy az összes közvetett ágat erőszakosan félrejósolja egy jóindulatú helyre. A javítások megjelenéséig azonban a hardver érzékeny lesz.

A papír az Inceptionről a következő napon kerül bemutatásra USENIX Security 2023 és a papír a Phantom-spekulációról a következő címen kerül bemutatásra MIKRO 2023. Olvassa el ezeket a papírokat, hogy többet megtudjon a kizsákmányolásról.