Az utasítás-végrehajtási idő függése az ARM és Intel CPU-kon lévő adatoktól

Eric Biggers, az Adiantum titkosítás egyik fejlesztője és a Linux kernel fscrypt alrendszerének karbantartója egy sor javítást javasolt az Intel processzorok egy olyan tulajdonságából eredő biztonsági problémák blokkolására, amelyek nem garantálják a különböző feldolgozott adatok állandó végrehajtási idejét. A probléma az Intel processzoroknál jelentkezik, az Ice Lake családtól kezdve. Hasonló probléma figyelhető meg az ARM processzoroknál.

Az utasítások végrehajtási idejének az utasításokban feldolgozott adatoktól való függőségét a javítások készítője a processzorok sebezhetőségének tekinti, mivel ez a viselkedés nem garantálja a rendszerben végrehajtott kriptográfiai műveletek biztonságát. A kriptográfiai algoritmusok számos megvalósítása úgy van kialakítva, hogy az adatok ne befolyásolják az utasítások végrehajtási idejét, és ennek a viselkedésnek a megsértése oldalcsatornás támadásokhoz vezethet, amelyek a feldolgozási idő elemzése alapján állítják helyre az adatokat.

Lehetséges, hogy a futásidejű adatfüggőség támadások indítására is használható a kerneladatok felhasználói térből történő meghatározására. Eric Biggers szerint az összeadási és XOR műveleteket végrehajtó utasítások, valamint a speciális AES-NI utasítások esetében alapértelmezés szerint nem biztosított az állandó végrehajtási idő (a tesztekkel nem igazolt információ, más adatok szerint egy késés van ciklus vektorszorzás és bitszámlálás közben).

Ennek a viselkedésnek a letiltására az Intel és az ARM új jelzőket javasolt: PSTATE bit DIT (adatfüggetlen időzítés) az ARM CPU-khoz és MSR bit DOITM (adatoperandtól független időzítési mód) az Intel CPU-khoz, állandó végrehajtási idővel visszaállítva a régi viselkedést. Az Intel és az ARM azt javasolja, hogy a kritikus kódokhoz szükség szerint engedélyezzék a védelmet, de a valóságban a kritikus számítások bárhol megtörténhetnek a kernelben és a felhasználói térben, ezért fontolgatjuk a DOITM és DIT módok folyamatos engedélyezését a teljes kernel számára.

Az ARM processzorok esetében a Linux 6.2 rendszermag ága már elfogadott javításokat, amelyek megváltoztatják a kernel viselkedését, de ezek a javítások nem tekinthetők elegendőnek, mivel csak a kernel kódját fedik le, és nem változtatják meg a felhasználói terület viselkedését. Az Intel processzorok esetében a védelem bevonása még felülvizsgálati szakaszban van. A javítás teljesítményre gyakorolt ​​hatását még nem mérték, de az Intel dokumentációja szerint a DOITM mód engedélyezése csökkenti a teljesítményt (például bizonyos optimalizációk letiltásával, mint például az adatspecifikus előtöltés), és a jövőbeni processzormodellekben a teljesítménycsökkenés növekedhet. .

Forrás: opennet.ru

Hozzászólás