Meltdown osztályú sebezhetőséget fedeztek fel a Zen+ és Zen 2 mikroarchitektúrán alapuló AMD processzorokban

A Drezdai Műszaki Egyetem kutatóinak egy csoportja sebezhetőséget (CVE-2020-12965) azonosított a Zen+ és Zen 2 mikroarchitektúrákon alapuló AMD processzorokban, amely lehetővé teszi a Meltdown osztályú támadást. Kezdetben azt feltételezték, hogy az AMD Zen+ és Zen 2 processzorok nem érzékenyek a Meltdown sebezhetőségre, de a kutatók azonosítottak egy olyan funkciót, amely a védett memóriaterületekhez való spekulatív hozzáféréshez vezet nem kanonikus virtuális címek használatakor.

Az AMD64 architektúra csak a virtuális cím első 48 bitjét használja, és figyelmen kívül hagyja a fennmaradó 16 bitet. Meg van határozva, hogy a 48–63. biteknek mindig a 47. bit értékét kell másolniuk (előjelbit kiterjesztése). Ha ezt a feltételt megsértik, és megpróbálnak hozzáférni egy címhez a felső bitek tetszőleges értékeivel, a processzor kivételt generál. A felső bitek ismételt kitöltése azt eredményezi, hogy a rendelkezésre álló címtér két blokkra oszlik - egy alsóra (0-tól 00007FFFFFFFFFFFFFF-ig), amelyben a felső bitek 800000000000-ra vannak állítva, és egy felsőre (FFFF1-tól FFFFFFFFFFFFFFFFFF-ig), amelyben az összes felső bit XNUMX-re van állítva.

A megadott blokkba eső címeket kanonikusnak, a felső bitek tetszőleges tartalmú helytelen címeit pedig nem kanonikusnak nevezzük. A kanonikus címek alsó tartománya jellemzően a folyamatadatokhoz, a felső tartomány pedig a kerneladatokhoz használatos (az ezekhez a címekhez való hozzáférés a felhasználói térből a jogosultság elválasztás szintjén le van tiltva).

A klasszikus Meltdown sebezhetőség azon alapul, hogy az utasítások spekulatív végrehajtása során a processzor hozzáférhet egy privát adatterülethez, majd elveheti az eredményt, mivel a beállított jogosultságok tiltják az ilyen hozzáférést a felhasználó folyamatából. A programban a spekulatívan végrehajtott blokkot a fő kódtól egy feltételes ág választja el, amely valós körülmények között mindig elindul, de abból kifolyólag, hogy a feltételes utasítás olyan számított értéket használ, amelyet a processzor nem ismer a preemptív végrehajtása során. a kódot, minden elágazási opciót spekulatív módon hajtanak végre.

Mivel a spekulatív módon végrehajtott műveletek ugyanazt a gyorsítótárat használják, mint a normál végrehajtású utasítások, a spekulatív végrehajtás során lehetőség van a gyorsítótárban olyan markereket beállítani, amelyek tükrözik az egyes bitek tartalmát egy privát memóriaterületen, majd a normál végrehajtású kódban az értékük időzítéssel történő meghatározásához. elemzési hozzáférést biztosít a gyorsítótárazott és nem gyorsítótárazott adatokhoz.

Az AMD Zen+ és Zen 2 processzorokat érintő új sebezhetőség egyik jellemzője, hogy a CPU-k spekulatív olvasási és írási műveleteket tesznek lehetővé, amelyek érvénytelen, nem kanonikus címek használatával érik el a memóriát, egyszerűen figyelmen kívül hagyva a felső 16 bitet. Így a spekulatív kódvégrehajtás során a processzor mindig csak az alsó 48 bitet használja, a cím érvényességét pedig külön ellenőrzi. Ha egy nem kanonikus virtuális cím fizikai címre történő fordításakor az asszociatív fordítási pufferben (TLB) egyezést észlel a cím kanonikus részében, akkor a spekulatív betöltési művelet a tartalom figyelembe vétele nélkül adja vissza az értéket. a felső 16 bitből, ami lehetővé teszi a szálak közötti memóriamegosztás megkerülését. Ezt követően a művelet érvénytelennek minősül, és eldobásra kerül, de a memória-hozzáférés befejeződik, és az adatok a gyorsítótárba kerülnek.

A kísérlet során a kutatók a FLUSH+RELOAD gyorsítótár tartalmának meghatározásának technikájával 125 bájt/s sebességű rejtett adatátviteli csatornát tudtak szervezni. A probléma az AMD chipek mellett az összes Intel processzort is érinti, amelyek érzékenyek a klasszikus Meltdown sebezhetőségre. Ugyanazok a technikák, amelyek segítenek blokkolni a Meltdown támadásokat, például az LFENCE utasítások, használhatók az új típusú támadások elleni védekezésre. Például, ha egy Intel processzor hardveres védelmet tartalmaz a Meltdown ellen, vagy a rendszerben engedélyezve van a szoftvervédelem, akkor az ilyen konfigurációk nem érzékenyek az új támadási változatra.

A kutatók ugyanakkor megjegyzik, hogy az Intel processzorokhoz képest az AMD processzorok architektúrája korlátozza a valódi támadások lebonyolításának lehetőségét, de nem zárja ki egy új módszer alkalmazását más mikroarchitektúrás támadásokkal kombinálva a hatékonyság növelése érdekében. A javasolt támadás különösen nem teszi lehetővé a kernel és más folyamatok memóriaterületeinek tartalmának meghatározását, hanem arra korlátozódik, hogy hozzáférjen ugyanazon program más szálaihoz, amelyek ugyanabban a virtuális memóriatérben futnak.

Mivel a sebezhetőség nélküli program képes hozzáférni a szálaihoz, gyakorlati szempontból ez a módszer érdekes a sandbox izoláció megkerülésére és a más szálak munkájával való interferencia megszervezésére olyan programokban, amelyek lehetővé teszik harmadik féltől származó programok végrehajtását. kódot, például webböngészőket és JIT-motorokat . A kutatók megvizsgálták a SpiderMonkey JavaScript motor és a Linux kernel támadásokkal szembeni sebezhetőségét, de nem találtak sebezhető kódszekvenciákat, amelyekkel támadást lehetne végrehajtani. A módszerrel az alkalmazások támadása mellett más mikroarchitektúra-sérülékenységek kihasználása során is elfogadhatatlan adatáramlást kényszeríthetünk ki a processzor mikroarchitektúra elemei között.

Forrás: opennet.ru

Hozzászólás