Tavis Ormandy, a Google biztonsági kutatója egy új, Reptar kódnevű sebezhetőséget (CVE-2023-23583) azonosított az Intel processzorokban, amely elsősorban a különböző felhasználókhoz tartozó virtuális gépeket futtató felhőrendszereket fenyegeti. A sebezhetőség rendszerlefagyást vagy összeomlást okozhat bizonyos műveletek végrehajtása során nem privilégiumozott vendégrendszerekben. Tesztelési célokra közzétettek egy segédprogramot, amely megteremti a kihasználás feltételeit.
Elméletileg a sebezhetőség kihasználható a jogosultságok eszkalálására a 3-as gyűrűről a 0-s gyűrűre (CPL0) és az izolált környezetekből való kilépésre, de ezt a forgatókönyvet a gyakorlatban még nem erősítették meg a mikroarchitektúra szintű hibakeresési nehézségek miatt. Az Intel belső tesztelése szintén kimutatta, hogy bizonyos feltételek mellett a sebezhetőség kihasználható a jogosultságok eszkalálására.
A kutató szerint a sebezhetőség az Intel processzorok Ice Lake, Rocket Lake, Tiger Lake, Raptor Lake, Alder Lake és Sapphire Rapids családjait érinti. Az Intel jelentése megjegyzi, hogy a probléma a 10. generációs (Ice Lake) Intel Core processzorokat és a harmadik generációs Xeon Scalable processzorokat, valamint a Xeon E/D/W processzorokat (Ice Lake, Skylake, Haswell, Broadwell, Skylake, Sapphire Rapids, Emerald Rapids, Cascade Lake, Cooper Lake, Comet Lake, Rocket Lake) és az Atom processzorokat (Apollo Lake, Jasper Lake, Arizona Beach, Alder Lake, Parker Ridge, Snow Ridge, Elkhart Lake és Denverton) érinti. A sebezhetőséget a tegnapi 20231114-es mikrokód-frissítésben javították ki.
A sebezhetőséget egy bizonyos mikroarchitektúrai feltétel okozza, ahol a "REP MOVSB" utasítás végrehajtása redundáns "REX" előtaggal van kódolva, ami meghatározatlan viselkedést eredményez. A problémát redundáns előtagok tesztelése során fedezték fel, amelyeket elméletileg figyelmen kívül kellene hagyni, de a gyakorlatban furcsa hatásokhoz vezettek, például a feltétel nélküli ugrások figyelmen kívül hagyásához és a mutatók mentésének megzavarásához az xsave és call utasításokban. További elemzések kimutatták, hogy egy redundáns előtag hozzáadása a "REP MOVSB" utasításhoz sérti a ROB (ReOrder Buffer) tartalmát, amelyet az utasítások rendezésére használnak.
A hibát feltehetően a MOVSB utasításméret helytelen kiszámítása okozza, ami a MOVSB után a ROB pufferbe írt utasítások címzésének zavarához vezet túlzott előtaggal, valamint az utasításmutató eltolódásához. Ez a deszinkronizáció a közbenső számítások megzavarására korlátozódhat, majd ezt követően visszaállítja a konzisztens állapotot. Ha azonban az összeomlás egyszerre több magon vagy SMT szálon is bekövetkezik, az elegendő mikroarchitektúra-sérülést okozhat ahhoz, hogy összeomlást okozzon.
Forrás: opennet.ru
