Sårbarhet i Intel-processorer som leder till dataläckage via tredjepartskanaler

En grupp forskare från kinesiska och amerikanska universitet har identifierat en ny sårbarhet i Intel-processorer som leder till tredjepartsläckage av information om resultatet av spekulativa operationer, som till exempel kan användas för att organisera en dold kommunikationskanal mellan processer eller identifiera läckor under Meltdown-attacker.

Kärnan i sårbarheten är att en förändring i EFLAGS-processorregistret som sker till följd av spekulativ exekvering av instruktioner påverkar den efterföljande exekveringstiden för JCC-instruktioner (hopp när specificerade villkor är uppfyllda). Spekulativa operationer slutförs inte och resultatet förkastas, men den kasserade EFLAGS-ändringen kan bestämmas genom att analysera exekveringstiden för JCC-instruktioner. Jämförelseoperationer som utförs i spekulativt läge före övergången, om den lyckas, resulterar i en liten fördröjning som kan mätas och användas som ett tecken för innehållsval.

Sårbarhet i Intel-processorer som leder till dataläckage via tredjepartskanaler

Till skillnad från andra liknande sidokanalsattacker analyserar den nya metoden inte ändringar i åtkomsttid till cachad och ocachad data och kräver inte ett steg för att återställa EFLAGS-registret till dess initiala tillstånd, vilket gör det svårt att upptäcka och blockera attacken. Som en demonstration genomförde forskarna en variant av Meltdown-attacken, med en ny metod för att få information om resultatet av en spekulativ operation. Funktionen av metoden för att organisera informationsläckage under Meltdown-attacken demonstrerades framgångsrikt på system med en Intel Core i7-6700 och i7-7700 CPU i en miljö med Ubuntu 22.04 och Linux-kärnan 5.15. På ett system med en Intel i9-10980XE CPU genomfördes attacken endast delvis.

Meltdown-sårbarheten är baserad på det faktum att under spekulativ exekvering av instruktioner kan processorn komma åt ett privat dataområde och sedan kassera resultatet eftersom de angivna privilegierna förbjuder sådan åtkomst från användarens process. I programmet separeras det spekulativt exekverade blocket från huvudkoden av en villkorlig gren, som i verkliga förhållanden alltid avfyras, men på grund av att den villkorliga satsen använder ett beräknat värde som processorn inte känner till under den förebyggande exekveringen av koden utförs alla filialoptioner spekulativt.

I den klassiska versionen av Meltdown, eftersom samma cache används för spekulativt exekverade operationer som för normalt exekverade instruktioner, är det möjligt att under spekulativ exekvering sätta markörer i cachen som reflekterar innehållet i enskilda bitar i ett slutet minnesområde, och sedan bestämma i normalt exekverad kod deras innebörd genom analys av åtkomsttiden till cachade och uncachade data. Den nya varianten använder en ändring i EFLAGS-registret som läckagemarkör. I den hemliga kanaldemonstrationen modulerade en process de överförda data för att skapa förutsättningar för att ändra innehållet i EFLAGS-registret, och en annan process analyserade förändringen i exekveringstiden för JCC-instruktionen för att återskapa data som överfördes av den första processen.

Källa: opennet.ru

Lägg en kommentar