Forskare från Bitdefender
Sårbarheten tillhör klassen Spectre v1 och är baserad på idén om att återställa data från processorcachen som finns kvar efter spekulativ exekvering av instruktioner. För att förbättra prestandan använder grenprediktionsenheter för moderna CPU: er förebyggande exekvering av vissa instruktioner som med största sannolikhet kommer att exekveras, men utan att vänta på beräkningen av alla faktorer som bestämmer deras exekvering (till exempel när grenvillkor eller åtkomstparametrar inte har ännu beräknat). Om förutsägelsen inte bekräftas, kasserar processorn resultatet av den spekulativa exekveringen, men data som behandlas under den förblir i processorcachen och kan återställas med metoder för att bestämma innehållet i cachen genom sidokanaler, analysera förändringen i åtkomst tid till cachad och uncachad data.
Det speciella med den nya attacken är användningen av en läcka som uppstår under den spekulativa exekveringen av SWAPGS-instruktionen, som används i operativsystem för att ersätta värdet på GS-registret när kontrollen övergår från användarutrymmet till OS-kärnan (GS-kärnan) värdet som används i användarutrymmet ersätts med värdet som används under operationer i kärnan ). I Linux-kärnan lagrar GS en per_cpu-pekare som används för att komma åt kärndata, och användarutrymme lagrar pekare till TLS (Thread Local Storage).
För att undvika att anropa SWAPGS-instruktionen två gånger när du kommer åt kärnan igen från kärnutrymmet eller när kod körs som inte kräver en GS-registerändring, utförs en kontroll och en villkorlig gren före instruktionen. Den spekulativa exekveringsmotorn fortsätter proaktivt att exekvera kod med SWAPGS-instruktionen utan att vänta på resultatet av kontrollen, och om den valda grenen inte bekräftas, kasserar resultatet. Således kan en situation uppstå när en gren som inte involverar SWAPGS-exekvering väljs spekulativt, men under spekulativ exekvering kommer värdet på GS-registret att ändras av SWAPGS-instruktionen och användas i beroende minnesoperationer som hamnar i CPU-cachen.
Forskare har föreslagit två attackscenarier för vilka exploateringsprototyper har utarbetats. Det första scenariot är baserat på situationen där SWAPGS-instruktionen inte exekveras spekulativt, även om den faktiskt används i exekvering, och det andra är motsatsen, när SWAPGS-instruktionen exekveras spekulativt, även om den egentligen inte borde exekveras. För varje scenario finns det två alternativ för exploatering: angriparen kan bestämma värdet på en specifik adress i kärnområdet, och angriparen kan söka efter ett specifikt värde på slumpmässiga adresser i kärnan. Att utföra en attack tar lång tid och utnyttjandet kan ta flera timmar för att slutföra läckan.
Det finns ett problem i Linux-kärnan
Fixeringen kräver installation av en kärnuppdatering på både värdsystemet och gästmiljön, följt av en omstart av systemet. För att inaktivera skyddet på Linux kan alternativet "nospectre_v1" användas, vilket också inaktiverar åtgärder för att blockera SWAPGS-sårbarheten. Fixeringen är tillgänglig som
Enligt forskare från Bitdefender informerades Intel om problemet redan i augusti förra året. Det beslutades att åtgärda problemet programmatiskt, för vilket utvecklare från Microsoft, Google och Linux-kärnan var involverade i den samordnade utvecklingen av en fix. Äldre Intel-processorer, pre-Ivy Bridge, är mycket svårare att attackera på grund av bristen på stöd för WRGSBASE-instruktionen som används i exploateringen. ARM-, POWER-, SPARC-, MIPS- och RISC-V-system påverkas inte av problemet eftersom de inte stöder SWAPGS-instruktionen.
Problemet drabbar främst ägare av Intel-processorer -
På AMD-system kunde endast det andra attackscenariot reproduceras, vilket är begränsat till spekulativ bearbetning av basvärdet för GS-registret, som kan användas för att leta efter specifika värden i slumpmässiga minnesområden. För att blockera detta attackalternativ
Källa: opennet.ru