Ny attack mot mikroarkitektoniska strukturer hos Intel- och AMD-processorer

En grupp forskare från University of Virginia och University of California presenterade en ny typ av attack mot de mikroarkitektoniska strukturerna hos Intel- och AMD-processorer, identifierade under omvänd konstruktion av odokumenterade CPU-kapaciteter. Den föreslagna attackmetoden innebär användning av en mellanliggande mikrooperationscache i processorer, som kan användas för att hämta information som samlats under spekulativ exekvering av instruktioner.

För optimeringsändamål börjar processorn att exekvera vissa instruktioner i spekulativt läge, utan att vänta på att tidigare beräkningar ska slutföras, och om den sedan bestämmer att förutsägelsen inte var motiverad, rullar den tillbaka operationen till sitt ursprungliga tillstånd, men de data som behandlades under spekulativ exekvering deponeras i en cache, vars innehåll kan bestämmas.

Det noteras att den nya metoden avsevärt överträffar Spectre v1-attacken, gör attacken svår att upptäcka och blockeras inte av befintliga metoder för skydd mot sidokanalsattacker utformade för att blockera sårbarheter orsakade av spekulativ exekvering av instruktioner (till exempel användningen av av LFENCE-instruktionen blockerar läckor i de sista stadierna av spekulativt utförande, men skyddar inte mot läckage genom mikroarkitektoniska strukturer).

Metoden påverkar Intel- och AMD-processormodeller som släppts sedan 2011, inklusive Intel Skylake- och AMD Zen-serien. Moderna processorer bryter komplexa processorinstruktioner i enklare RISC-liknande mikrooperationer, som cachelagras i en separat cache. Denna cache skiljer sig fundamentalt från cacher på högre nivå, är inte direkt tillgänglig och fungerar som en strömbuffert för snabb åtkomst till resultaten av avkodning av CISC-instruktioner till RISC-mikroinstruktioner. Forskare har dock hittat ett sätt att skapa förhållanden som uppstår när cacheåtkomst konflikter och låta en bedöma innehållet i mikrooperationscachen genom att analysera skillnader i exekveringstiden för vissa åtgärder.

Ny attack mot mikroarkitektoniska strukturer hos Intel- och AMD-processorer

Mikrooperationscachen i Intel-processorer är segmenterad i förhållande till CPU-trådar (Hyper-Threading), medan AMD Zen-processorer använder en delad cache, vilket skapar förutsättningar för dataläckage inte bara inom en exekveringstråd, utan även mellan olika trådar i SMT (möjligt dataläckage mellan kod som körs på olika logiska CPU-kärnor).

Forskare har föreslagit en grundläggande metod för att upptäcka förändringar i mikrooperationscachen och flera attackscenarier som gör det möjligt att skapa dolda dataöverföringskanaler och använda sårbar kod för att läcka konfidentiell data, både inom en enda process (till exempel för att läcka processdata vid exekvering tredjepartskod i motorer med JIT och i virtuella maskiner), och mellan kärnan och processer i användarutrymmet.

När man organiserade en variant av Spectre-attacken med hjälp av en mikrooperationscache kunde forskarna uppnå prestanda på 965.59 Kbps med en felfrekvens på 0.22 % och 785.56 Kbps vid användning av felkorrigering, i fallet med att organisera en läcka inom samma adress utrymme och privilegienivå. Med en läcka som spänner över olika behörighetsnivåer (mellan kärna och användarutrymme) var prestandan 85.2 Kbps med tillagd felkorrigering och 110.96 Kbps med en felfrekvens på 4%. När man attackerade AMD Zen-processorer och skapade en läcka mellan olika logiska CPU-kärnor, var prestandan 250 Kbps med en felfrekvens på 5.59 % och 168.58 Kbps med felkorrigering. Jämfört med den klassiska Spectre v1-metoden var den nya attacken 2.6 gånger snabbare.

Det förväntas att skydd mot en micro-op cache-attack kommer att kräva ändringar som kommer att minska prestandan mer än om du aktiverade Spectre-attackskydd. Som en optimal kompromiss föreslås det att blockera sådana attacker inte genom att inaktivera cachelagring, utan på nivån för att övervaka anomalier och identifiera cachetillstånd som är typiska för attacker.

Liksom i Spectre-attacker kräver organisering av en läcka från kärnan eller andra processer exekvering av en viss sekvens av kommandon (prylar) på sidan av offrets processer, vilket leder till spekulativ exekvering av instruktioner. Cirka 100 liknande prylar har hittats i Linux-kärnan, som kommer att tas bort, men lösningar för deras generation hittas med jämna mellanrum, till exempel relaterade till att köra specialdesignade BPF-program i kärnan.

Källa: opennet.ru

Lägg en kommentar