Hogyan működött a Spectre és a Meltdown Hacks

által Nael Abu-Ghazaleh, Dmitrij Ponomarev és Dmitrij Evtyushkin

Posted 2019-02-28 16: 00 GMT

a mikroprocesszor sebezhetőségének veszélyes kihasználása és miért lehet több közülük odakint

illusztráció: Erik Vrielink
/image/MzIzODU1Mw.jpeg
illusztráció: Erik Vrielink

megszoktuk, hogy a számítógépes processzorok rendezett gépek, amelyek az egyik egyszerű utasításból a másikba teljes rendszerességgel haladnak. De az igazság az, hogy évtizedek óta nem megfelelően végzik a feladataikat, és csak találgatják, mi jöhet ezután. Természetesen nagyon jók benne. Valójában annyira jó, hogy ez a képesség, az úgynevezett spekulatív végrehajtás, alátámasztotta a számítási teljesítmény javulásának nagy részét az elmúlt 25 évben. De 3 Január 2018-án a világ megtudta, hogy ez a trükk, amely annyira sokat tett a modern számítástechnika számára, most az egyik legnagyobb sebezhetősége.

2017 folyamán a Cyberus Technology, A Google Project Zero, a Grazi Műszaki Egyetem, a Rambus, az Adelaide Egyetem és a Pennsylvaniai Egyetem kutatói, valamint olyan független kutatók, mint Paul Kocher kriptográfus, külön dolgoztak ki olyan támadásokat, amelyek kihasználták a spekulatív végrehajtást. Saját csoportunk még 2016-ban fedezte fel az egyik ilyen támadás mögött rejlő eredeti sebezhetőséget, de nem tettük össze az összes darabot.

az ilyen típusú támadások, a Meltdown és a Spectre, nem voltak szokványos hibák. Abban az időben, amikor felfedezték, a Meltdown képes volt feltörni az összes Intel x86 mikroprocesszort és IBM Power processzort, valamint néhány ARM-alapú processzort. A Spectre és számos változata hozzáadta az Advanced Micro Devices (AMD) processzorokat a listához. Más szavakkal, a számítástechnika szinte az egész világa sebezhető volt.

és mivel a spekulatív végrehajtás nagyrészt a processzor hardverében van, a biztonsági rések kijavítása nem volt könnyű feladat. Ez anélkül, hogy a számítási sebességet alacsony sebességfokozatba darálná, még nehezebbé tette. Valójában, egy év múlva, a munka még messze nem ért véget. A biztonsági javításokra nem csak a processzorgyártóktól volt szükség, hanem az ellátási láncban lejjebb lévőktől is, mint például az Apple, a Dell, a Linux és a Microsoft. Az első számítógépek, amelyeket szándékosan úgy terveztek, hogy ellenálljanak ezeknek a sebezhetőségeknek, csak a közelmúltban érkeztek.

a Spectre és a Meltdown annak a különbségnek az eredménye, amit a szoftvernek meg kell tennie, és a processzor mikroarchitektúrája—a részletek, hogy valójában hogyan csinálja ezeket a dolgokat. A hackek e két osztálya feltárta az információ kiszivárgásának módját ezen a különbségen keresztül. És minden okunk megvan azt hinni, hogy még több módszer fog kiderülni. Tavaly segítettünk megtalálni kettőt, a Branchscope-ot és a SpectreRSB-t.

ha a számítástechnikai fejlesztések ütemét a biztonság feláldozása nélkül akarjuk tartani, meg kell értenünk, hogyan történnek ezek a hardveres sebezhetőségek. És ez a Spectre és a Meltdown megértésével kezdődik.

a modern számítástechnikai rendszerekben az ember számára érthető nyelveken, például a C++ nyelven írt szoftverprogramokat assembly nyelvű utasításokká állítják össze-olyan alapvető műveletekké, amelyeket a számítógépes processzor képes végrehajtani. A végrehajtás felgyorsítása érdekében a modern processzorok a pipelining nevű megközelítést alkalmazzák. A futószalaghoz hasonlóan a csővezeték is szakaszok sorozata, amelyek mindegyike egy utasítás teljesítéséhez szükséges lépés. Az Intel x86 processzorok tipikus fázisai közé tartoznak azok, amelyek az utasítást a memóriából hozzák be és dekódolják, hogy megértsék, mit jelent az utasítás. A Pipelining alapvetően a párhuzamosságot hozza le az utasítások végrehajtásának szintjére: amikor az egyik utasítást egy szakasz segítségével hajtják végre, a következő utasítás szabadon használhatja.

az 1990-es évek óta a mikroprocesszorok két trükkre támaszkodtak a csővezeték folyamatának felgyorsítására: a megbízáson kívüli végrehajtásra és a spekulációra. Ha két utasítás egymástól független—vagyis az egyik kimenete nem befolyásolja a másik bemenetét -, akkor átrendezhetők, és eredményük továbbra is helyes lesz. Ez hasznos, mert lehetővé teszi a processzor számára, hogy tovább működjön, ha egy utasítás elakad a folyamatban. Például, ha egy utasítás olyan adatokat igényel, amelyek a DRAM fő memóriájában vannak, nem pedig a CPU-ban található gyorsítótár-memóriában, akkor néhány száz órajelciklusra lehet szükség az adatok megszerzéséhez. Várakozás helyett a processzor egy másik utasítást mozgathat a csővezetéken keresztül.

a második trükk a spekuláció. Ahhoz, hogy megértsük, kezdjük azzal a ténnyel, hogy egyes utasítások szükségszerűen megváltoztatják az utasításokat. Vegyünk egy “if” utasítást tartalmazó programot: ellenőrzi a feltételt, és ha a feltétel igaz, a processzor egy másik helyre ugrik a programban. Ez egy példa a feltételes ágú utasításokra, de vannak más utasítások is, amelyek az utasítások áramlásának változásához vezetnek.

most fontolja meg, mi történik, ha egy ilyen elágazási utasítás belép a folyamatba. Ez egy olyan helyzet, amely egy talányhoz vezet. Amikor az utasítás megérkezik a csővezeték elejére, addig nem tudjuk annak eredményét, amíg meglehetősen mélyen nem haladt előre a csővezetékben. És anélkül, hogy tudnánk ezt az eredményt, nem tudjuk letölteni a következő utasítást. Egy egyszerű, de naiv megoldás az, hogy megakadályozzuk az új utasítások bejutását a csővezetékbe, amíg az elágazási utasítás el nem éri azt a pontot, ahol tudjuk, honnan származik a következő utasítás. Sok óraciklus elpazarolódik ebben a folyamatban, mert a csővezetékek általában 15-25 szakaszból állnak. Még ennél is rosszabb, hogy az elágazási utasítások elég gyakran felmerülnek, sok programban az összes utasítás 20% – át teszik ki.

a csővezeték nagy teljesítményű költségeinek elkerülése érdekében a modern processzorok egy elágazási előrejelzőnek nevezett építészeti egységet használnak, hogy kitalálják, honnan származik a következő utasítás egy ág után. Ennek az előrejelzőnek az a célja, hogy néhány kulcsfontosságú pontot spekuláljon. Először egy feltételes ágat kell venni, ami a programot a program egy másik szakaszára irányítja, vagy folytatja a meglévő utat? Másodszor, ha az ágat veszik, hová megy a program—mi lesz a következő utasítás? Ezekkel az előrejelzésekkel felfegyverkezve a processzor csővezetéke teljes lehet.

mivel az utasítás végrehajtása előrejelzésen alapul, “spekulatív módon” hajtják végre: ha az előrejelzés helyes, a teljesítmény jelentősen javul. De ha az előrejelzés helytelennek bizonyul, a processzornak képesnek kell lennie arra, hogy viszonylag gyorsan visszavonja a spekulatív módon végrehajtott utasítások hatásait.

a branch predictor kialakítását évek óta alaposan kutatják a számítógép-architektúra közösségben. A Modern prediktorok eredményeik alapjául a programon belüli végrehajtás történetét használják. Ez a séma több mint 95 százalékos pontosságot ér el számos különféle program esetében, ami drámai teljesítményjavulást eredményez, összehasonlítva egy olyan mikroprocesszorral, amely nem spekulál. A téves spekuláció azonban lehetséges. És sajnos, a Spectre támadások téves spekulációt használnak ki.

a spekuláció másik formája, amely problémákhoz vezetett, a folyamatban lévő egyetlen utasításon belüli spekuláció. Ez elég homályos fogalom, szóval csomagoljuk ki. Tegyük fel, hogy egy utasítás végrehajtásához engedély szükséges. Például egy utasítás arra utasíthatja a számítógépet, hogy írjon egy adatdarabot az operációs rendszer magjának fenntartott memóriarészre. Nem akarja, hogy ez megtörténjen, kivéve, ha maga az operációs rendszer szankcionálta, vagy kockáztatja a számítógép összeomlását. A Meltdown és a Spectre felfedezése előtt a hagyományos bölcsesség az volt, hogy rendben van az utasítás spekulatív végrehajtása, még mielőtt a processzor elérte azt a pontot, hogy ellenőrizze, hogy az utasításnak van-e engedélye a munkájának elvégzésére.

végül, ha az engedély nem teljesül—példánkban az operációs rendszer nem szankcionálta ezt a memóriával való babrálási kísérletet—, az eredményeket kidobják, és a program hibát jelez. Általánosságban elmondható, hogy a processzor spekulálhat az utasítás bármely olyan része körül, amely várakozást okozhat, feltéve, hogy a feltétel végül megoldódik, és a rossz találgatások eredményei gyakorlatilag visszavonásra kerülnek. Ez a fajta intra-instruction spekuláció áll a Meltdown bug minden változata mögött, beleértve annak vitathatatlanul veszélyesebb változatát is, Foreshadow.

a spekulációs támadásokat lehetővé tevő betekintés a következő: a téves spekuláció során nem történik olyan változás, amelyet egy program közvetlenül megfigyelhet. Más szavakkal, nincs olyan program, amelyet meg tudna írni, amely egyszerűen megjelenítené a spekulatív végrehajtás során generált adatokat. Az a tény azonban, hogy spekuláció történik, nyomokat hagy azáltal, hogy befolyásolja, mennyi ideig tart az utasítások végrehajtása. És sajnos most már világos, hogy észlelhetjük ezeket az időzítési jeleket, és titkos adatokat nyerhetünk ki belőlük.

mi ez az időzítési információ,és hogyan fér hozzá egy hacker? Ennek megértéséhez meg kell értenie az oldalsó csatornák fogalmát. Az oldalsó csatorna egy nem szándékolt útvonal, amely információkat szivárog az egyik entitásból a másikba (általában mindkettő szoftver), általában egy megosztott erőforráson keresztül, például merevlemezen vagy memórián keresztül.

az oldalcsatornás támadás példájaként tekintsünk egy olyan eszközre, amely úgy van programozva, hogy meghallja a nyomtatóból származó hangot, majd ezt a hangot használja a nyomtatás levezetésére. A hang ebben az esetben egy oldalsó csatorna.

a mikroprocesszorokban elvileg bármely megosztott hardver erőforrás használható oldalsó csatornaként, amely információkat szivárogtat ki az áldozatprogramból a támadó programba. Egy általánosan használt oldalcsatornás támadásban a megosztott erőforrás a CPU gyorsítótára. A gyorsítótár egy viszonylag kicsi, gyors hozzáférésű memória a processzor chipen, amelyet a program által leggyakrabban szükséges adatok tárolására használnak. Amikor egy program hozzáfér a memóriához, a processzor először ellenőrzi a gyorsítótárat; ha az adatok ott vannak (gyorsítótár-találat), akkor gyorsan helyreáll. Ha az adatok nincsenek a gyorsítótárban (hiányzik), a processzornak meg kell várnia, amíg a fő memóriából letöltésre kerül, ami több száz órajelet is igénybe vehet. De amint az adatok megérkeznek a fő memóriából, hozzáadódik a gyorsítótárhoz, amelyhez szükség lehet más adatok kidobására, hogy helyet biztosítson. A gyorsítótár szegmensekre van osztva, amelyeket gyorsítótár-készleteknek neveznek, és a fő memória minden helyének van egy megfelelő készlete a gyorsítótárban. Ez a szervezet megkönnyíti annak ellenőrzését, hogy van-e valami a gyorsítótárban anélkül, hogy az egészet meg kellene keresnie.

a gyorsítótár-alapú támadásokat már a Spectre és a Meltdown megjelenése előtt alaposan tanulmányozták. Bár a támadó nem tudja közvetlenül elolvasni az áldozat adatait—még akkor sem, ha ezek az adatok egy megosztott erőforrásban, például a gyorsítótárban vannak—, a támadó információkat szerezhet az áldozat által elért memóriacímekről. Ezek a címek érzékeny adatoktól függhetnek, lehetővé téve egy okos támadó számára, hogy helyreállítsa ezeket a titkos adatokat.

hogyan teszi ezt a támadó? Számos lehetséges módszer létezik. Az egyik változat, az úgynevezett Flush and Reload, azzal kezdődik, hogy a támadó eltávolítja a megosztott adatokat a gyorsítótárból a “flush” utasítás segítségével. A támadó ezután megvárja, amíg az áldozat hozzáfér az adatokhoz. Mivel már nincs a gyorsítótárban, az áldozat által kért adatokat a fő memóriából kell behozni. Később a támadó hozzáfér a megosztott adatokhoz, miközben időzíti, hogy ez mennyi ideig tart. A gyorsítótár-találat-vagyis az adatok visszatértek a gyorsítótárba—azt jelzi, hogy az áldozat hozzáfért az adatokhoz. A gyorsítótár hiánya azt jelzi, hogy az adatokhoz nem férnek hozzá. Tehát egyszerűen annak mérésével, hogy mennyi ideig tartott az adatokhoz való hozzáférés, a támadó meghatározhatja, hogy az áldozat mely gyorsítótár-készletekhez fér hozzá. Ez egy kis algoritmikus varázslatot igényel, de ez a tudás, hogy mely gyorsítótár-készletekhez férnek hozzá, és melyek nem, titkosítási kulcsok és egyéb titkok felfedezéséhez vezethet.

Meltdown, Spectre és variánsaik mind ugyanazt a mintát követik. Először spekulációt váltanak ki a támadó által kívánt kód végrehajtására. Ez a kód titkos adatokat olvas engedély nélkül. Ezután a támadások a flush and Reload vagy hasonló oldalsó csatorna segítségével kommunikálják a titkot. Ez az utolsó rész jól érthető és hasonló az összes támadási változatban. Így a támadások csak az első komponensben különböznek egymástól, ami a spekuláció kiváltása és kihasználása.

img

Meltdown támadások

az Meltdown támadások egyetlen utasításon belül kihasználják a spekulációt. Bár az assembly nyelvű utasítások általában egyszerűek, egyetlen utasítás gyakran több műveletből áll, amelyek egymástól függhetnek. Például a memóriaolvasási műveletek gyakran attól függnek, hogy az utasítás megfelel-e az olvasott memóriacímhez társított engedélyeknek. Egy alkalmazásnak általában csak a hozzá rendelt memóriából van engedélye olvasni, nem pedig az operációs rendszerhez vagy más felhasználó programjához rendelt memóriából. Logikusan ellenőriznünk kell az engedélyeket, mielőtt engedélyeznénk az olvasás folytatását, ezt teszik egyes mikroprocesszorok, nevezetesen az AMD. Feltéve azonban, hogy a végeredmény helyes, a CPU-tervezők feltételezték, hogy szabadon spekulatív módon végrehajthatják ezeket a műveleteket. Ezért az Intel mikroprocesszorok az engedélyek ellenőrzése előtt elolvassák a memóriahelyet, de csak akkor “kötelezik el” az utasítást—Az eredmények láthatóvá tétele a program számára—, ha az engedélyek teljesülnek. De mivel a titkos adatokat spekulatív módon szerezték be, egy oldalsó csatorna segítségével fedezhetők fel, így az Intel processzorok sebezhetővé válnak a támadással szemben.

a Foreshadow támadás a Meltdown sebezhetőség egyik változata. Ez a támadás az Intel mikroprocesszorait érinti egy olyan gyengeség miatt, amelyet az Intel L1 Terminálhibának (L1TF) nevez. Míg az eredeti Meltdown támadás az engedélyek ellenőrzésének késedelmére támaszkodott, a Foreshadow olyan spekulációkra támaszkodik, amelyek a folyamat címfordításnak nevezett szakaszában fordulnak elő.

a Szoftver a számítógép memóriáját és tárolóeszközeit a virtuális memória egyetlen összefüggő szakaszaként tekinti. De fizikailag ezek az eszközök fel vannak osztva és megosztva a különböző programok és folyamatok között. A címfordítás a virtuális memória címét fizikai memória címévé változtatja.

a mikroprocesszor speciális áramkörei segítenek a virtuális-fizikai memória-cím fordításban, de ez lassú lehet, több memória keresést igényel. A dolgok felgyorsítása érdekében az Intel mikroprocesszorok lehetővé teszik a spekulációt a fordítási folyamat során, lehetővé téve EGY program számára, hogy spekulatív módon olvassa el az L1 nevű gyorsítótár egy részének tartalmát, függetlenül attól, hogy ki birtokolja ezeket az adatokat. A támadó ezt megteheti, majd nyilvánosságra hozhatja az adatokat a már leírt oldalcsatornás megközelítéssel.

bizonyos szempontból a Foreshadow veszélyesebb,mint a Meltdown, más módon kevésbé. A Meltdown-tól eltérően a Foreshadow csak az L1 gyorsítótár tartalmát tudja olvasni, az Intel processzor-architektúrájának megvalósításának sajátosságai miatt. A Foreshadow azonban bármilyen tartalmat képes olvasni az L1 – ben-nem csak a program által címezhető adatokat.

/image/MzIzODYyNw.jpeg

Spectre támadások

a Spectre támadások manipulálják az ág-előrejelző rendszert. Ez a rendszer három részből áll: az ág-irány prediktor, az ág-cél prediktor és a return stack buffer.

az elágazás-irány prediktor megjósolja, hogy egy feltételes ág, például egy “ha” utasítás programozási nyelven történő megvalósítására szolgál-e vagy sem. Ehhez nyomon követi a hasonló ágak korábbi viselkedését. Például ez azt jelentheti, hogy ha egy ágat egymás után kétszer veszünk, a jövőbeni előrejelzések azt mondják, hogy meg kell venni.

az ág-cél prediktor megjósolja az úgynevezett közvetett ágak célmemória-címét. Feltételes ágban a következő utasítás címe meg van írva, de egy közvetett ág esetében ezt a címet kell először kiszámítani. Az eredményeket előrejelző rendszer egy gyorsítótár-struktúra, az úgynevezett branch-target puffer. Lényegében nyomon követi a közvetett ágak utolsó számított célját, és ezeket használja annak előrejelzésére, hogy a következő közvetett ág hova vezet.

a return stack buffer egy “return” utasítás célpontjának előrejelzésére szolgál. Amikor egy program során egy szubrutint “hívnak”, a return utasítás arra készteti a programot, hogy folytassa a munkát azon a ponton, ahonnan a szubrutint hívták. Ha csak a korábbi visszatérési címek alapján próbálja megjósolni a visszatéréshez szükséges megfelelő pontot, nem fog működni, mert ugyanazt a funkciót a kód számos különböző helyéről meg lehet hívni. Ehelyett a rendszer a return stack puffert használja, egy darab memóriát a processzoron, amely megtartja a funkciók visszatérési címeit, ahogy hívják őket. Ezután ezeket a címeket használja, amikor visszatérést tapasztal a szubrutin kódjában.

e három struktúra mindegyike kétféle módon hasznosítható. Először is, a prediktor szándékosan rosszul lehet. Ebben az esetben a támadó látszólag ártatlan kódot hajt végre, amelynek célja a rendszer megzavarása. Később a támadó szándékosan végrehajtja az ágat, amely hibásan jelenik meg, aminek következtében a program a támadó által választott kódrészletre ugrik, amelyet gadgetnek neveznek. A modul ezután az adatok ellopásáról szól.

a Spectre támadás második módját közvetlen injekciónak nevezik. Kiderül, hogy bizonyos körülmények között a három prediktor megoszlik a különböző programok között. Ez azt jelenti, hogy a támadó program kitöltheti a prediktor struktúrákat gondosan kiválasztott rossz adatokkal, miközben végrehajtja. Amikor egy akaratlan áldozat a támadóval egy időben vagy utána hajtja végre a programját, az áldozat a támadó által kitöltött prediktor állapotot használja, és akaratlanul elindít egy gadgetet. Ez a második támadás különösen aggasztó, mert lehetővé teszi az áldozatprogram megtámadását egy másik programból. Egy ilyen fenyegetés különösen káros a felhő-szolgáltatók számára, mivel nem tudják garantálni ügyféladataik védelmét.

a Spectre és Meltdown sebezhetőségek talányt jelentettek a számítástechnikai ipar számára, mivel a sebezhetőség hardverből származik. Bizonyos esetekben a legjobb, amit a meglévő rendszerek esetében tehetünk—amelyek a telepített szerverek és PC—k nagy részét teszik ki -, hogy megpróbáljuk átírni a szoftvert, hogy megpróbáljuk korlátozni a károkat. De ezek a megoldások ad hoc, hiányos, és gyakran eredményeznek egy nagy hit a számítógép teljesítményét. Ugyanakkor a kutatók és a CPU-tervezők elkezdtek gondolkodni azon, hogyan lehet olyan jövőbeli CPU-kat tervezni, amelyek a biztonság veszélyeztetése nélkül folytatják a spekulációt.

az egyik védelem, a kernel page-table isolation (kpti) , már beépült a Linuxba és más operációs rendszerekbe. Emlékezzünk arra, hogy minden alkalmazás a számítógép memóriáját és tárolóeszközeit a virtuális memória egyetlen összefüggő szakaszaként tekinti. De fizikailag ezek az eszközök fel vannak osztva és megosztva a különböző programok és folyamatok között. Az oldaltábla lényegében az operációs rendszer térképe, amely megmondja, hogy a virtuális memória cím mely részei felelnek meg a fizikai memória címeinek. A kernel oldaltáblája felelős azért, hogy ezt az operációs rendszer magja végezze. A KPTI és hasonló rendszerek megvédik az összeomlást azáltal, hogy a memóriában lévő titkos adatokat, például az operációs rendszert, elérhetetlenné teszik, amikor a felhasználó programja (és potenciálisan a támadó programja) fut. Ezt úgy teszi, hogy eltávolítja a tiltott részeket az oldaltáblából. Így még a spekulatív módon végrehajtott kód sem fér hozzá az adatokhoz. Ez a megoldás azonban extra munkát jelent az operációs rendszer számára, hogy leképezze ezeket az oldalakat, amikor végrehajtja,majd leképezi őket.

egy másik védelmi osztály a programozók számára egy sor eszközt kínál a veszélyes spekuláció korlátozására. Például a Google Retpoline javítása átírja azokat az ágakat, amelyek érzékenyek a Spectre 2.változatára, így arra kényszeríti a spekulációt, hogy egy jóindulatú, üres modult célozzon meg. A programozók hozzáadhatnak egy assembly nyelvű utasítást is, amely korlátozza a Spectre v1-et, korlátozva a feltételes ágakat követő spekulatív memóriaolvasásokat. Kényelmesen Ez az utasítás már jelen van a processzor architektúrájában, és a különböző processzormagokból származó memóriaműveletek közötti helyes sorrend kikényszerítésére szolgál.

mivel a processzorok tervezői, az Intel és az AMD volt, hogy mélyebbre, mint egy hagyományos szoftver javítás. Javításaik frissítik a processzor mikrokódját. A mikrokód az utasítások olyan rétege, amely illeszkedik a szokásos szoftverek assembly nyelvéhez és a processzor tényleges áramköréhez. A mikrokód rugalmasságot ad a processzor által végrehajtható utasításkészlethez. Egyszerűbbé teszi a CPU tervezését is, mivel a mikrokód használatakor az összetett utasítások több egyszerűbb utasításba kerülnek, amelyeket könnyebben lehet végrehajtani egy folyamatban.

alapvetően az Intel és az AMD módosította mikrokódját, hogy megváltoztassa néhány assembly nyelvű utasítás viselkedését oly módon, hogy korlátozza a spekulációt. Például az Intel mérnökei olyan opciókat adtak hozzá, amelyek zavarják a támadások egy részét azáltal, hogy lehetővé teszik az operációs rendszer számára, hogy bizonyos körülmények között kiürítse az ág-előrejelző struktúrákat.

a megoldások egy másik osztálya megpróbálja megzavarni a támadó azon képességét, hogy oldalsó csatornákon keresztül továbbítsa az adatokat. Például az MIT DAWG technológiája biztonságosan felosztja a processzor gyorsítótárát, hogy a különböző programok ne osszák meg erőforrásait. A legambiciózusabb, hogy vannak olyan javaslatok új processzor-architektúrákra, amelyek olyan struktúrákat vezetnének be a CPU-n, amelyek a spekulációnak szenteltek, és elkülönülnek a processzor gyorsítótárától és más hardverektől. Ily módon a spekulatív módon végrehajtott, de végül nem végrehajtott műveletek soha nem láthatók. Ha a spekulációs eredmény megerősítést nyer, a spekulatív adatokat elküldik a processzor Fő struktúráinak.

a spekulációs sebezhetőségek több mint 20 éve szunnyadnak a processzorokban, és amennyire mindenki tudja, kihasználatlanok maradtak. Felfedezésük jelentősen megrázta az ipart, és rávilágított arra, hogy a kiberbiztonság nemcsak a szoftverrendszerek, hanem a hardverek számára is problémát jelent. A kezdeti felfedezés óta a Spectre és a Meltdown mintegy tucatnyi változatát fedezték fel, és valószínű, hogy több is van. A Spectre és a Meltdown végül is az alapvető tervezési elvek mellékhatásai, amelyekre támaszkodtunk a számítógép teljesítményének javítása érdekében, ami megnehezíti az ilyen sebezhetőségek kiküszöbölését a jelenlegi rendszertervekben. Valószínű, hogy az új CPU-tervek a spekuláció megtartása érdekében alakulnak ki, miközben megakadályozzák az oldalsó csatorna szivárgását, amely lehetővé teszi ezeket a támadásokat. Mindazonáltal a jövőbeli számítógépes rendszertervezőknek, beleértve a processzor chipeket tervezőket is, tisztában kell lenniük döntéseik biztonsági következményeivel, és már nem csak a teljesítményre, a méretre és a teljesítményre optimalizálniuk kell.

A szerzőről

Nael Abu-Ghazaleh a Kaliforniai Egyetem számítógépes mérnöki programjának elnöke, Riverside. Dmitrij Evtyuskin a számítástechnika adjunktusa A William and Mary Főiskolán, Williamsburgban, Va. Dmitrij Ponomarev számítástechnikai professzor a Binghamtoni New York-i Állami Egyetemen.

további vizsgálat céljából

Paul Kocher és a többi kutató, akik együttesen közzétették a Spectre-t, először itt magyarázták el . Moritz Lipp elmagyarázta az összeomlást ebben a beszélgetésben a Usenix Security ’18-ban. A Foreshadow-t ugyanazon a konferencián részletezték.

a kutatók egy csoportja, köztük az egyik szerző, a Spectre és a Meltdown támadások szisztematikus értékelésével jött létre, amely további potenciális támadásokat fedez fel . Az IBM mérnökei valami hasonlót tettek, és a Google mérnökei nemrégiben arra a következtetésre jutottak, hogy a mellékcsatornás és spekulatív végrehajtási támadások itt maradnak .

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

More: