Forskare frÄn Bitdefender en ny sÄrbarhet () i mekanismen för spekulativ utförande av instruktioner i moderna CPU:er, som har döpts till SWAPGS, efter namnet pÄ processorinstruktionen som orsakar problemet. SÄrbarheten möjliggör för en icke-privilegierad angripare att faststÀlla innehÄllet i kÀrnminnets omrÄden eller körda virtuella maskiner. Problemet finns i Intel-processorer (x86_64) och delvis i AMD-processorer, för vilka den huvudsakliga attackvektorn inte gÀller. Tidigare implementerade metoder för att motverka sÄrbarheterna Spectre och Meltdown skyddar inte mot SWAPGS-attacker pÄ Intel-processorer, men patchar har redan föreslagits för Linux, ChromeOS, Android och Windows.
SÄrbarheten hör till klase Spectre v1 och baseras pÄ idén att ÄterstÀlla data frÄn processorcacheminnet som finns kvar efter spekulativt utförande av instruktioner. Blokker för grenprediktering i moderna CPU:er tillÀmpar spekulativ utförande av vissa instruktioner, som sannolikt kommer att utföras, men gör detta utan att vÀnta pÄ att alla faktorer som bestÀmmer deras utförande (t.ex. nÀr villkoren för grenen eller Ätkomstparametrar Ànnu inte har berÀknats) har berÀknats. Om prognosen inte bekrÀftas, avvisar processorn resultatet av det spekulativa utförandet, men de data som hanterats under processen stannar kvar i processorcacheminnet och kan ÄterhÀmtas genom metoder som bestÀmmer cacheinnehÄll via sidokanaler som analyserar förÀndringar i Ätkomsttiden för cachade och icke-cachade data.
Funktionaliteten hos den nya attacken ligger i att utnyttja lÀckan som uppstÄr under det spekulativa utförandet av instruktionen SWAPGS, som anvÀnds i operativsystem för att byta vÀrdet av registret GS nÀr kontrollen gÄr frÄn anvÀndarutrymmet till OS-kÀrnan (det vÀrde pÄ GS som anvÀnds i anvÀndarutrymmet byts ut mot det vÀrde som anvÀnds vid operationer i kÀrnan). I Linux-kÀrnan lagras en pekare vid GS, som anvÀnds för att fÄ tillgÄng till kÀrndata, medan det i anvÀndarutrymmet finns pekare till TLS (Thread Local Storage).
För att förhindra dubbelanrop av SWAPGS-instruktionen vid Äterkommande anrop till kÀrnan frÄn kÀrnans omrÄde eller nÀr kod som inte krÀver ett registerbyte av GS körs, görs en kontroll och villkorlig övergÄng innan instruktionen. Den spekulativa exekveringsmekanismen gÄr förut till att köra koden med SWAPGS-instruktionen utan att vÀnta pÄ resultatet av kontrollen, och om den valda grenen inte bekrÀftas, kasseras resultatet. PÄ sÄ sÀtt kan en situation uppstÄ dÀr en spekulativt vald gren inte förutsÀtter exekveringen av SWAPGS, men under den spekulativa exekveringen Àndras vÀrdet av register GS av SWAPGS-instruktionen och anvÀnds i beroende operationer med minnet som lagras i CPU-cachen.
Forskare har föreslagit tvÄ attacker, för vilka prototyper av exploateringsverktyg har förberetts. Det första scenariot baseras pÄ situationen dÀr SWAPGS-instruktionen inte exekveras spekulativt, Àven om den anvÀnds vid faktisk exekvering, och det andra Àr motsatsen, dÀr SWAPGS-instruktionen exekveras spekulativt, Àven om den egentligen inte borde. För varje scenario finns det tvÄ exploateringsalternativ: angriparen kan definiera ett vÀrde pÄ en viss adress i kÀrnomrÄdet, och angriparen kan söka efter ett visst vÀrde pÄ slumpmÀssiga adresser i kÀrnan. Att genomföra attacken tar lÄng tid och för att organisera lÀckan kan det krÀvas att exploateringen körs i flera timmar.

I Linux-kÀrnan finns ett problem genom att Àndra logiken för anropet av SWAPGS-instruktionen (blockera spekulativ exekvering), i likhet med att ÄtgÀrda andra sÄrbarheter i Spectre v1-klassen. Det förvÀntas att det tillagda skyddet har minimal pÄverkan pÄ prestandan för typiska arbetsbelastningar. Fördröjningen uppstÄr i steget mellan vÀxling mellan anvÀndarutrymme och kÀrna, vilket kan leda till prestandanedsÀttning, till exempel vid intensiv utförande av systemanrop frÄn en applikation eller vid frekvent generering av NMI och avbrott.
Korrigeringen krÀver installation av kÀrnuppdatering bÄde i det primÀra systemet och i gÀstmiljöer, följt av en omstart av systemet. För att inaktivera skyddet i Linux kan alternativet «nospectre_v1» anvÀndas, vilket Àven inaktiverar ÄtgÀrder för att blockera sÄrbarheten SWAPGS. Korrigeringen finns tillgÀnglig som för Linux-kÀrnan, som redan ingÄr i versionerna , , 4.14.137, 4.9.188 och 4.4.188. Uppdateringar för Linux-distributioner har Ànnu inte slÀppts (, , , , , ). I Windows har problemet diskret ÄtgÀrdats i . Företaget Google har en korrigering för kÀrnan 4.19, som levereras i ChromeOS och .
Enligt forskare frĂ„n Bitdefender informerades Intel om problemet redan i augusti förra Ă„ret. Problemet beslutades att Ă„tgĂ€rdas programmĂ€ssigt, för vilket utvecklare frĂ„n Microsoft, Google och Linux-kĂ€rnan involverades i den samordnade utvecklingen av korrigeringen. Ăldre Intel-processorer, före Ivy Bridge, Ă€r betydligt svĂ„rare att attackera pĂ„ grund av avsaknaden av stöd för instruktionen WRGSBASE, som anvĂ€ndes i exploiten. ARM-, POWER-, SPARC-, MIPS- och RISC-V-system Ă€r inte drabbade av problemet, eftersom de inte stöder instruktionen SWAPGS.
Problemet hotar huvudsakligen Ă€gare av Intel-processorer â
pÄ AMD-system har endast det andra attackscenariot kunnat reproduceras, vilket begrÀnsas till spekulativ hantering av det grundlÀggande vÀrdet av registret GS, nÄgot som kan anvÀndas för att söka specifika vÀrden i slumpmÀssiga minnesomrÄden. För att blockera detta angreppsscenario finns det befintliga skyddsÄtgÀrder mot sÄrbarheterna Spectre v1.
KĂ€lla: opennet.ru
