Ebben az évben eddig a sérülékenységeké a főszerep, ugyanis folyamatosan bukkannak fel az érdekesebbnél érdekesebb biztonsági rések, amelyek komoly feltörést okoznak a hardvergyártóknak és a szoftverfejlesztőknek. Az év elején a Meltdown és a Spectre miatt tört ki pánik a piacon, néhány hete pedig az izraeli CTS Labs felfedezései borzolták a kedélyeket – ráadásul a biztonságtechnikai kutatók nem is voltak túl etikusak, amikor ismertették a hibákat.
Most négy akadémikus újabb biztonsági rést talált, amely a Spectre második variánsához hasonlít, módszertana azonban eltérő. A szakemberek, vagyis Dmitry Evtyushkin, Ryan Riley, Nael Abu-Ghazaleh, és Dmitry Ponomarev természetesen betartották az ilyenkor érvényben lévő íratlan szabályokat, vagyis időben értesítették a gyártókat az ügyről, csak ezután publikálták a felfedezést.
A sérülékenység a modern processzorok spekulatív végrehajtó rendszerét támadja, csak úgy mint a Spectre 2. A BranchScope névre keresztelt sérülékenység viszont nem a Branch Target Bufferen keresztül próbál adatokhoz jutni, hanem a Directional Branch Predictor sérülékenységeit próbálja kiaknázni. Ez a komponens irányítja tulajdonképpen azt, hogy mely spekulatív műveletet hajtsa végre a processzor. A támadók e komponens működésébe tudnak belenyúlni egy megfelelően megírt kód segítségével, amelynek lefuttatásához nem kell emeltszintű jogkör, vagyis felhasználói szintű jogosultság mellett is kiaknázhatóak a sebezhetőségben rejlő lehetőségek. A támadó a megfelelően megírt kód segítségével beavatkozhat a Directional Branch Predictor működésébe, így eltérítve azt olyan memóriaterületek tartalmához juthat, amelyek korábban nem voltak elérhetőek – egyszerűen azzal, hogy az eltérítés során e memóriaterületek tartalmát „olvastatja ki a processzorral”.
Ehhez első körben módosítania kell a Pattern History Table tartalmát, amihez véletlenszerű blokk formájában tálalt elágazás-műveleteket kell használnia. Ezután a támadó elindítja egy olyan elágazás végrehajtását, amelyet meg szeretne figyelni az áldozat-folyamaton keresztül, majd meg kell várnia, hogy az áldozat aktivitásának eredményeként módosuljon a PHT állapota. Ha ez kész, a támadó még több elágazás-műveletet indít, amelyek ugyanazt a PHT bejegyzést célozzák, amit az áldozat folyamata, ezzel egy időben pedig időzíti őket, hogy megfigyelhesse a becslések eredményeit. A támadó a becslések végkimenetelét korrelálja a PHT állapotával, hogy azonosíthassa az áldozat elágazásának irányát. A támadónak ütközést kell okoznia a saját és az áldozat elágazásai között a PHT-ben, ami nem nehéz, hiszen az áldozat kódjának virtuális címe általában nem titok. Amennyiben ASLR-t használ az adott rendszer a kódhelyek véletlenszerűvé tételéhez, a támadó de-randomizálással vagy oldalcsatorna-támadással is elérheti a célját. A kutatók által publikált PDF a támadás egyéb részleteire is mélyen kitér, így akit ez érdekel, itt találja a dokumentumot.
A sérülékenység hatásait szoftveres javításokkal lehet kezelni, de igazából a hardveres működés módosítása jelenthet megnyugtató védelmet a támadásforma ellen. Ennek keretén belül randomizálható a PHT, akár periodikusan is, ami némi teljesítményvesztést okozhat. Megoldás lehet az is, ha az érzékeny elágazásoknál egyszerűen elvetik az elágazás-becslés használatát, így nem szivároghat ki érzékeny adat. Ez szintén okoz némi teljesítménycsökkenést, ugyanakkor a szoftveres megoldáshoz hasonlóan nem biztosít védelmet a burkolt oldalcsatorna támadások ellen (Covert Side-Channel Attacks).
A legjobb megoldásnak a BPU particionálása jelentheti, így a támadó és az áldozat nem használhatják ugyanazokat a struktúrákat. Alternatív módon privát partíció létrehozását is kérhetik az egyes kódok, ami szintén megoldás lehet. Ezzel a megoldással a támadó nem tud összeütközéseket generálni a saját és az áldozat folyamatai között, így efféle támadásra sincs módja – kihúzható a sérülékenység méregfoga.
Alternatívaként a támadó időzítési képességét is lehet gátolni: zajt lehet adni a teljesítmény számlálókhoz vagy az időzítő mérésekhez. Akár a támadó folyamatát is felismerhetné a rendszer, majd lefagyaszthatná vagy megbéníthatná. Ezt SGX kontextusban az operációs rendszer megtámadásakor persze nehéz lenne kivitelezni, de azt el lehetne érni, hogy az SGX kód úgy dönthessen, hogy támadás esetén újra-térképezi magát vagy befejezi a végrehajtást.
A kutatók szerint a sebezhetőség sikeresen kiaknázható a Sandy Bridge, Haswell és Skylake processzorok esetében, ezekre ugyanis már vannak példakódok. Az újabb processzorokról egyelőre nincs hír, mint ahogy arról sem, hogy az AMD központi egységei érintettek-e. A jelek szerint még tesztelni kell őket.
A processzorgyártók hírünk írásakor még nem adtak ki hivatalos közleményt azzal kapcsolatban, hogyan és mikor foltozzák be az újabb sérülékenységet, de ha bármiféle változás történik, azonnal beszámolunk róla.