Új védelmet hoznak az Intel processzorok
Az Intel és a Microsoft együttműködésében új hardveres védelmi megoldás kerül a processzorokba. A CET megakadályozza, hogy a támadó felülírja a futó alkalmazás folyamatvezérlését.
A modern processzorok és operációs rendszerek már képesek megkülönböztetni a memória futtatható és adat területeit, az NX-bit jelöli, hogy mely területeket tilos futtatni. Ez megakadályozza, hogy a támadó kódot adatként betöltve le lehessen futtatni, és további akrobatikára kényszeríti a támadót.
Az egyik ilyen akrobatamutatvány a futó alkalmazás kódjából dolgozik, az utasítások végrehajtási sorrendjét felülírva és újrarendezve áll össze a támadókód, amely például végrehajthatóvá tudja címkézni a memória bizonyos részeit. Az ilyen támadást ROP/JOP néven ismerjük, a return oriented programming vagy jump oriented programming rövidítéseként, és roppant nehéz ellene védekezni és detektálni.
Verem az árnyékban
Az Intel és a Microsoft együttműködésében most egy új megoldás készült, CET (control-flow enforcement technology) néven. Ez egy hardveres megoldás a fenti problémára és azt ígéri, hogy megnehezíti a futó programok feletti ROP/JOP hatalomátvételt a támadók számára. Ehhez két elemet használ, a Shadow Stacket és az indirekt ágazáskövetést (indirect branch tracking, IBT).
A shadow stack egy új, párhuzamosan létrehozott verem, amely kizárólag a program vezérlését tárolja és teljesen elszigetelt az adatveremtől, így puffertúlcsordulással nem manipulálható a tartalma. Ez az ellenőrzést szolgálja, a CPU minden CALL és RET utasításnál összehasonlítja a program vezérlését a shadow stack tartalmával, és amennyiben eltérést észlel, azonnal megszakítja a futást és (az operációs rendszeren keresztül) hibaüzenetben tájékoztatja a felhasználót.
Az x86-os stack - túl könnyű manipulálni
Maga a shadow stack koncepciója nem új, szoftveres implementációk már eddig is léteztek. Amiben az Intel-féle megoldás újat hoz, az a hardveres elem. Így ugyanis kikényszeríthető, hogy a shadow stack a normális memória-munkaterülettől teljes izolációban létezzen, annak tartalma pedig MOV, XSAVE és hasonló utasításokkal nem manipulálható.
A másik újdonság az IBT, ez a shadow stackkel ellentétben az x86-os utasításkészlethez vadonatúj utasítást is ad, az ENDBRANCH formájában. Ez arra szolgál, hogy az indirekt hívásokat validálja a hardver felé - csak az ilyen, megjelölt hívások számítanak érvényesnek. Az utasítás visszafelé kompatibilis az Intel szerint, az utasítást nem támogató processzorok ezt NOP (no operation) képében látják és egyszerűen átugorják.
Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.
A CET-et támogató processzoroknál azonban megjelenik egy state machine (automata), amely az indirekt JMP és CALL utasításokat figyeli: amikor ilyen utasítást lát a CPU, akkor következő utasításként az ENDBRANCH-et várja. Ha nem ez következik, akkor a program futása leáll.
Érdekes módon az IBT nem nyerte el a kritikusok tetszését, a PaX anonim fejlesztője szerint a jogosultságok kezelése túlságosan primitív. A szoftveres PaX ugyanezt finomabb szemcsézéssel, érdemi teljesítményvesztés nélkül képes megvalósítani - mondja a széles körben használt Linux-patch írója.
Évek múlva lesz érdekes
Az Intel bejelentése szerint a CET-et alkotó két újdonság az alkalmazások számára teljesen transzparens lesz, a támogatáshoz semmilyen, vagy csak minimális változtatásra van szükség. Az olyan programok amelyeknél szükség van ilyen módosításra, opt-out lehetőséget kapnak addig, amíg a fejlesztők elvégzik a megfelelő változtatásokat, így a kompatibilitást ez sem töri meg. Ez fordítva is igaz, a CET-et támogató alkalmazások minden gond nélkül futnak majd a CET-et nem implementáló processzorokon - igaz, ilyenkor a védelem értelemszerűen nem aktív.
Fontos megjegyezni, hogy a CET és az utasításkészlet-kiterjesztés még egyik ma megvásárolható CPU-ban sem található meg. A bejelentés nem mondja ki, hogy a piaci rajt mikorra várható, ebből sejtésünk szerint az következik, hogy a küszöbön álló Kaby Lake-ben a biztonsági funkció még nem lesz elérhető.
A CET részletes specifikációja és műszaki leírása az Intel oldalán érhető el.