A Retbleed egy új támadás az Intel és AMD CPU-k spekulatív végrehajtási mechanizmusa ellen

Az ETH Zurich kutatóinak egy csoportja új támadást azonosított a CPU-ban a közvetett átmenetek spekulatív végrehajtásának mechanizmusa ellen, amely lehetővé teszi információk kinyerését a kernel memóriájából, vagy támadást szervezhet a gazdarendszer ellen a virtuális gépekről. A biztonsági rések kódneve Retbleed (CVE-2022-29900, CVE-2022-29901), és természetüknél fogva közel állnak a Spectre-v2 támadásokhoz. A különbség az tetszőleges kód spekulatív végrehajtásának megszervezésében rejlik a „ret” (return) utasítás feldolgozása során, amely lekéri a veremből az ugráshoz szükséges címet, ahelyett, hogy a „jmp” utasítást használó közvetett ugrás történik, a címet betöltve a veremből. memória vagy CPU regiszter.

A támadó feltételeket teremthet az átmenet helytelen előrejelzéséhez, és célzott, spekulatív átmenetet szervezhet olyan kódblokkra, amelyet a programvégrehajtási logika nem biztosít. Végül a processzor megállapítja, hogy az elágazás előrejelzése nem volt indokolt, és visszaállítja a műveletet az eredeti állapotába, de a spekulatív végrehajtás során feldolgozott adatok a gyorsítótárba és a mikroarchitektúra puffereibe kerülnek. Ha egy hibásan végrehajtott blokk hozzáfér a memóriához, akkor a spekulatív végrehajtása a memóriából kiolvasott adatok a megosztott gyorsítótárban való elhelyezéséhez vezet.

A spekulatív műveletek után a gyorsítótárban maradó adatok meghatározásához a támadó oldalcsatornás technikákat használhat a fennmaradó adatok meghatározására, például elemezheti a gyorsítótárazott és gyorsítótárazott adatok elérési idejének változásait. Más jogosultsági szintű területekről (például a kernel memóriájából) célirányos információk kinyerésére „gadgeteket” használnak - a kernelben jelen lévő parancssorokat, amelyek alkalmasak az adatok spekulatív kiolvasására a memóriából, a külső körülményektől függően, amelyeket befolyásolhat a támadó.

A feltételes és közvetett ugrási utasításokat használó klasszikus Spectre osztályú támadások elleni védelem érdekében a legtöbb operációs rendszer a „retpoline” technikát használja, amely azon alapul, hogy a közvetett ugrási műveleteket a „ret” utasításra cseréli, amelyhez a processzorok külön verem állapot előrejelző egységet használnak. nem használ elágazás előrejelzési blokkot. Amikor a retpoline-t 2018-ban bemutatták, úgy gondolták, hogy a Spectre-szerű címmanipulációk nem voltak praktikusak a „ret” utasítást használó spekulatív elágazáshoz.

A Retbleed támadási módszert kidolgozó kutatók a „ret” utasítás segítségével bemutatták a spekulatív átmenet elindításához szükséges mikroarchitektúra feltételeinek megteremtésének lehetőségét, és kész eszközöket tettek közzé a Linux kernel sérülékenységének kihasználására alkalmas utasítássorozatok (gadgetek) azonosítására. amelyben olyan állapotok nyilvánulnak meg.

A kutatás során elkészült egy működő exploit, amely lehetővé teszi az Intel CPU-val rendelkező rendszereken tetszőleges adatok kinyerését a kernel memóriájából a felhasználói térben lévő privilegizált folyamatokból 219 bájt/s sebességgel és 98%-os pontossággal. Az AMD processzorokon az exploit hatékonysága sokkal magasabb – a szivárgási sebesség 3.9 KB/s. Gyakorlati példaként bemutatjuk, hogyan használhatjuk a javasolt exploitot az /etc/shadow fájl tartalmának meghatározására. Intel CPU-val rendelkező rendszereken a root felhasználói jelszó kivonatának meghatározására irányuló támadás 28 perc alatt, az AMD CPU-val rendelkező rendszereken pedig 6 perc alatt történt meg.

A támadást a 6 harmadik negyedéve előtt kiadott Intel processzorok (beleértve a Skylake-et is) és a Zen 8, Zen 3+ és Zen 2019 mikroarchitektúrán alapuló AMD processzorok 1-1 generációjára vonatkozóan erősítették meg, amelyeket 2 második negyedéve előtt adtak ki. Az olyan újabb processzormodellekben, mint az AMD Zen2021 és az Intel Alder Lake, valamint az ARM processzorokban a problémát a meglévő védelmi mechanizmusok blokkolják. Például az IBRS (Indirect Branch Restricted Speculation) utasítások használata segít megvédeni a támadásokat.

A Linux kernelhez és a Xen hypervisorhoz egy sor változtatás készült, amelyek blokkolják a problémát a régebbi CPU-k szoftverében. A Linux kernelhez javasolt javítás 68 fájlt módosít, 1783 sort ad hozzá és 387 sort töröl. Sajnos a védelem jelentős általános költségekhez vezet - az AMD és Intel processzorokon végzett szövegekben a teljesítménycsökkenést 14%-ról 39%-ra becsülik. Előnyösebb az IBRS utasításokon alapuló védelmet használni, amely elérhető az Intel CPU-k új generációiban, és a Linux kernel 4.19-től kezdve támogatott.

Intel processzorokon a spekulatív közvetett ugrás címhelyettesítése egy olyan funkciónak köszönhetően történik, amely akkor jelenik meg, ha túlcsordulás történik a Return Stack Buffer alsó határán (alulcsordulás) keresztül. Ilyen körülmények esetén a „ret” utasítás elkezdi alkalmazni a címkiválasztási logikát, hasonlóan a normál közvetett ugrásokhoz. A Linux kernelben több mint ezer olyan helyet találtak, amelyek feltételeket teremtenek egy ilyen visszaáramlás elindításához, és rendszerhívásokon keresztül elérhetők.

Az AMD processzorokon a „ret” utasítás spekulatív végrehajtása verem-specifikus pufferre (Return Address Stack) való hivatkozás nélkül történik, és az elágazás előrejelző egység a „ret” utasítást nem vezérlővisszaadásnak, hanem közvetett elágazásnak tekinti. , és ennek megfelelően az adatokat a közvetett átmenetek előrejelzésére használja. Ilyen körülmények között gyakorlatilag minden rendszerhíváson keresztül elérhető "ret" művelet kihasználható.

Ezenkívül egy másik probléma is felmerült az AMD CPU-kban (CVE-2022-23825, Branch Type Confusion) a fiktív elágazások megvalósításával kapcsolatban - az elágazás előrejelzésének feltételei a szükséges elágazási utasítások nélkül is előfordulhatnak, ami lehetővé teszi az elágazás előrejelző puffer befolyásolását a "ret" utasítás nélkül. Ez a funkció jelentősen megnehezíti a védelem megvalósítását, és az elágazás-előrejelző puffer aktívabb tisztítását igényli. A kernel teljes védelemmel való kiegészítése várhatóan 209%-kal növeli a költségeket.

Forrás: opennet.ru

Hozzászólás