Spectre/Meltdown: máris itt van az év biztonsági hibája?
Már az első héten megvan a 2018 év legnagyobb horderejű biztonsági problémája? Van esély rá, hogy igen: a spekulatív végrehajtás támadhatóságát mutatták be a Google biztonsági kutatói, kivédése komoly teljesítményveszteséget hozhat.
Végre nyilvános az elmúlt hetekben egyre komolyabb figyelmet kapó két mikroprocesszoros sebezhetőség, a Spectre és a Meltdown. A technikai leírások és a támadásminták (PoC - proof of concept) közzétételével egy időben megérkeztek a (szoftveres) javítások is, ezeket mindenkinek érdemes sürgősen telepítenie. A hibákat a Google Project Zero munkatársai és a grazi műszaki egyetem (TU Graz) kutatói egymástól függetlenül fedezték fel, a Meltdownt a Cyberus Technology szakemberei is feltérképezték.
Nekik jár a serleg.
Az alábbiakban összeszedjük, hogy mit lehet tudni jelenleg a kihasználható problémáról és milyen hatása lehet a javításoknak.
Spekulatív végrehajtás - lehet túl agresszív?
A szakemberek által demonstrált támadás a modern processzoroknál általános spekulatív végrehajtást aknázza ki - ehhez tegyünk egy gyors kört. A modern (értsd: az elmúlt bő húsz évben készült) processzorok esetében komoly kihívás a végrehajtóegységek folyamatos etetése adattal. A rendszermemória ugyanis egyszerűen túl lassú, az adatok bekérésétől számítva mintegy 100 órajelciklusra van szükség ahhoz, hogy azok meg is érkezzenek, vagyis a processzor szinte mindig üresben járna, ha erre várna.
Hogy ezt elkerüljék, a processzorgyártók komplex prediktív algoritmusokat fejlesztettek, amelyek igyekeznek a potenciálisan szükséges adatokat a gyorsítótárba tölteni. Azonban még ez sem eléggé hatékony ahhoz, hogy minden órajelciklusban hatékony munkát tudjon végezni a processzor, ezért a végrehajtók (jobb híján) előre is dolgoznak: míg várakozniuk kell, elindulnak egy feltételes elágazás egyik útján és elkezdik az utasítások végrehajtását. Ha az elágazásbecslő helyesen tippelte meg, hogy a programszál egy elágazás melyik ágán fut tovább, akkor az eredmények már készen is állnak, kiírhatóak a processzormag saját memóriájából a rendszermemóriába, ha téves volt a tipp, akkor a mag gyorsan visszaállítja az elágazás előtti állapotot és folytatja az immár helyes ágon a munkát.
Most kiderült, hogy ez a mechanizmus támadható lehet: a publikált mintatámadások szerint az, hogy a processzor nem a fejlesztő által tervezett utasításokat hajtja végre sorrendben, hanem azokat újrarendezi (az out-of-order megközelítésnek megfelelően), támadási felületet biztosíthat több ponton is.
Ugyan mind a Spectre, mind a Meltdown ezt a spekulatív végrehajtást támadja, a módszerek, az eredmények és az érintett processzorok is mások. Kezdjük a Meltdownnal: ez lehetővé teszi, hogy egy "user" jogosultságú kód ki tud olvasni a kernel memóriájából információt (vagy vendég operációs rendszer a hypervisoréból). Ez nagyon komoly problémának számít, nem véletlen, hogy a Linux közösség az elmúlt hetekben a legmagasabb prioritással kezelte a probléma szoftveres javítását. A Meltdown az Intel processzorait és bizonyos ARM magokat is érint, az AMD-t nem.
Módosítás: a Meltdown érint bizonyos ARM-magokat (forrás)
A Spectre egy általánosabb és hasonlóan veszélyes támadásokat tesz lehetővé, nem csak Intel, hanem AMD és ARM processzormagon is. A Project Zero két variánst mutatott, az elsőben a támadó a saját process adatait tud kiolvasni (hipotetikusan: JavaScript kód a Firefoxét), a másodikban pedig az KASLR-rel összekevert memóriafoglalás fejthető vissza. Ahogy a Meltdown, ez is felhasználható például virtualizált környezetben a vendég operációs rendszer oldaláról a hypervisor vagy a szomszédos virtuális gépek támadására. A probléma, hogy a Spectre tulajdonképp a spekulatív végrehajtás koncepcióját használja ki támadásra, emiatt nincs ellene triviális és globális védekezés sem, a megfelelő védelmet csak az aszinkron végrehajtás nagyon átgondolt átrendezése biztosít.
A javítás
Az AMD már közzétette saját válaszát, ennek alapján az első variáns (Spectre) jelent érdemi problémát, erre az operációs rendszer frissítése ad megfelelő választ. A cég szerint ennek hatása a teljesítményre "elhanyagolható" (igaz, ezt független mérés még nem támasztja alá). A második variáns (másik Spectre) kiaknázásának esélye "közel nulla", az AMD által használt eltérő architektúra nyomán, és a kutatás sem mutatott ki problémát (igaz, itt a kutatók elsősorban a Haswellre koncentráltak). A harmadik variánsra (Meltdown) teljesen immúnis az AMD architektúrája.
CI/CD-vel folytatódik az AWS hazai online meetup-sorozata! A sorozat december 12-i, ötödik állomásán bemutatjuk az AWS CodeCatalyst platformot, és a nyílt forráskódú Daggert is.
Az AMD és az Intel közötti különbség abból fakad, hogy a spekulatív végrehajtás különösen agresszív az Intel chipeken, emiatt ezek a lapkák sokkal több adatot is szivárogtatnak, illetve e viselkedés visszafogása is sokkal komolyabb teljesítményesést hoz. És ugyan az AMD-hez (illetve az ARM-hoz) is kell javítás a Spectre hatástalanításához, a teljesítményt ez várhatóan nem fogja érdemben befolyásolni.
A Meltdown-javítás lényege, hogy teljesen izolálja a kernel és az "user" jogosultsággal futó alkalmazások memóriatábláit, így a kettő teljesen átjárhatatlanná válik. Ennek viszont negatív hatása van a teljesítményre, ami nagyban függ attól, hogy milyen típusú a futtatott számítási feladat. Olyan kódnál, amely csak nagyon ritkán intéz hívásokat a kernelhez, a hatás elhanyagolható lehet, míg olyan esetben ha folyamatosan a kernelre támaszkodik, akár 50 százalékos (!) is lehet a lassulás. Épp emiatt tipikus mérőszámot nagyon nehéz mondani, a két véglet között bárhol lehet egy-egy alkalmazás sebességvesztése Intel környezetben.
A javítások horderejét mutatja, hogy azt a Microsoft már november óta teszteli, a Windows 10 Insider programban kiadott béta rendszerek már hónapok óta ezzel a védelemmel működnek - így a cég sok tapasztalatot gyűjtött azzal, hogy a javítás hogyan befolyásolja az egyes alkalmazások működését. A frissítés soron kívüli javításként érkezik ma a támogatott Windows 10 rendszerekre, de a Windows 7-es és 8-as számítógépek csak a következő heti szokásos patch kedden jutnak hozzá. Bizonyos antivírus-programok azonban nem működnek a javítással együtt, így csak azokra a rendszerekre települ fel a javítás, amelynél kompatibilis AV fut és ezt a kompatibilitást megfelelő rendszerleíró adatbázis bejegyzéssel jelzi - közölte külön bejegyzésben a Microsoft.
Linuxos környezetben ezek a javítások az elmúlt hónapokban már fokozatosan élesedtek, ott mára a legtöbb disztribúció a frissített szoftvert futtatja, most tennivaló ott nem lesz. Fontos megjegyezni, hogy a Project Zero a Haswell-sorozatú Xeonokat vizsgálta, egyelőre semmi nem utal arra, hogy az újabb, Skylake-alapú változatok mentesek lennének a Meltdown hatásától.
Felhőben a baj
A Meltdown-javítás első körben virtualizált, több-bérlős környezetben, vagyis leginkább publikus felhőszolgáltatásoknál kritikus, ahol létező veszély a vendég oldalról a hypervisor támadása és komoly kockázat a többi vendég operációs rendszer adatának kiolvasása. Emiatt leginkább itt égető a javítások telepítése, nem véletlen, hogy minden nagy szolgáltató időzített általános frissítés-újraindítás ciklust ezekre a napokra, amikor ezeket a javításokat az összes futtatott rendszer megkapja.
Ritkán fordul elő, hogy egy biztonsági hiba a processzorgyártók közötti erősorrendet rajzolja át, most mégis erről van szó: ugyan a probléma valamilyen formában minden vizsgált lapkát érint, az Intel esetében azt sikerült ki is aknázni igazán veszélyes formában. Ráadásul a vizsgált lapka, egy Haswell-alapú Xeon adatközponti környezetben elképesztően sikeres, mind a nagyvállalati, mind a nyilvános felhős infrastruktúrák alatt hatalmas számban dolgoznak ilyen chipek. Pontos szám erre nincs, de mivel a Haswellt váltó új mikroarchitektúra, a Skylake csak nemrég debütált a Xeonoknál, az érintett generációk jó eséllyel mindenhol megtalálhatóak, figyelembe véve, hogy szervereknél jóval 90 százalék fölötti az Intel részesedése.
Nem véletlen, hogy az Intel kommunikációs stábja teljes pánik módban üzemel, egyelőre a processzorgyártó csupán annyit tudott kinyögni, hogy a probléma nem használható adatok "megmásítására, módosítására vagy törlésére", illetve igyekszik hangsúlyozni, hogy más processzorgyártók is érintettek. A cég azt is hangsúlyozza, hogy a javítás okozta teljesítményvesztés számítási feladattól függ és "nem kellene jelentős legyen" és idővel csökken majd. A cég közleménye sok szót nem vesztegetett a felhasználók informálására, így nincs a vállalatnak hivatalos becslése a teljesítményvesztésre, és csak hallgatólagosan ismeri el azt is, hogy a hiba igenis lehetőséget ad az adatok kiolvasására.
A The Register vette észre, hogy Linus Torvalds, a Linux kernel atyja már reagált is a cég közleményére: "Valakinek az Intelnél alaposan rá kellene néznie a CPU-ikra és ténylegesen bevallani, hogy problémáik vannak, ahelyett, hogy PR-dumákat írnak, miszerint minden a tervezettnek megfelelően működik." Torvalds folytatja is: a teljesítményvesztés okozó patchek ennek megfelelően szem előtt tartják, hogy "nem minden CPU szar".
A Meltdown-javítás alapjaiban rajzolhatja át azonban az adatközponti verseny állását az AMD és az Intel között. Az AMD ugyanis már most is komoly kihívója az Intelnek, az Epyc processzorok jól sikerültek és kimondottan tempósak lettek. Ha az Intelnek le kell mondania az agresszív, jelentős sebességelőnyt hozó, de nem biztonságos spekulatív végrehajtásról, akkor az könnyen az AMD felé döntheti el a teljesítményversenyt - ennek hatása egyelőre beláthatatlan és egyelőre több a nyitott kérdés, mint a válasz.
Az azonban már most biztos, hogy sokakat fájdalmasan érint majd a javítás - függetlenül attól, hogy mekkora a teljesítményvesztés. IaaS-előfizetőknek azt jelenti, hogy például 10 százalékos sebességvesztés esetén több magra kell majd előfizetni, nagyvállalati megoldásoknál pedig több magra kell szoftverlicencet vásárolni. Otthoni felhasználóknál a legkevésbé releváns a változás, a meglévő rendszerek használható élettartamát azonban megrövidítheti egy-két évvel ez a probléma.
Kriptokrízis?
A szakértők már elkezdtek spekulálni arra vonatkozóan, hogy a Spectre/Meltdown támadások hol, milyen környezetben lehetnek kifizetődőek. Mivel a támadás viszonylag lassú kiolvasást tesz lehetővé, a legzsírosabb célpontok például a Bitcoin- és kriptopénzes szolgáltatások lehetnek. Ezek sokszor publikus felhős infrastruktúrán futnak költséghatékonyság miatt, a támadás pedig lehetővé teheti, hogy kritikus kulcsokat szerezzenek meg támadók - amellyel például pénztárcákat nyithatnak fel.
A spektrum másik vége a végfelhasználó: mivel a támadás (legalábbis jelen állás szerint) nem skálázódik jól, nem kifizetődő az egyes PC-ket vagy okostelefonokat egyenként támadni ezzel a módszerrel. Technikailag lenne erre elvben lehetőség, a gyakorlatban jó eséllyel nem ezek lesznek az elsődleges célpontok. Ettől függetlenül a javítások telepítése mindenki számára különösen ajánlott.
További olvasmány
Ahogy ilyenkor szokásos, szakembereknek hasznos olvasmány a Google Project Zero igen tartalmas blogbejegyzése, illetve a tulajdonképpeni támadást ihlető eredeti kutatás (Spectre, Meltdown). Ezek rengeteg további technikai részletet tartalmaznak, ami üzemeltetőknek segíthet megérteni a probléma súlyosságát és a javítás telepítésének sürgősségét.