Forskare frÄn Massachusetts Institute of Technology har identifierat en angreppsteknik kallad TONTOU (Time-of-Neutralization to Time-of-Use), som erbjuder ett nytt sÀtt att utnyttja mikroarkitekturens sÄrbarheter av typen Spectre v2. SÄrbarheten gör det möjligt att bestÀmma innehÄllet i kÀrnminnet under utförandet av en exploitering i anvÀndarutrymmet. Koden för att blockera utnyttjandet av sÄrbarheten togs in i Linux-kÀrnan den 5 augusti och inkluderades i versionerna 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 och 5.10.263.
Forskare har visat att en lokal, icke-privilegierad anvÀndare kan utföra ett angrepp för att bestÀmma hash-tangenten för anvÀndaren root, som lagras i filen /etc/shadow och laddas in i minnet vid autentisering i systemet. Forskarna lyckades Ästadkomma datalÀckage frÄn kÀrnminnet med en hastighet pÄ 5,47 byte per sekund och en noggrannhet pÄ 91,97%. Av 10 testkörningar av exploiten, som i genomsnitt pÄgick i 18 minuter, lyckades man i hÀlften av fallen identifiera nÀrvaron av filen /etc/shadow i minnet och extrahera dess innehÄll.
Exploiten demonstrerades pÄ system med AMD-processorer och kan anvÀndas med CPU:er av AMD-familjerna Zen 1-4. PÄ Intel-system Àr angreppet ocksÄ möjligt, men exploateringen Àr mer komplicerad. För att skydda mot överflöde av returar adresser och blockera sÄrbarheten SRSO (Speculative Return Stack Overflow) anvÀnds en skyddsmekanism kallad Safe-RET i AMD-processorer, som rensar bufferten för branch-prediktion efter varje anvÀndning och minskar fönstret för angreppet till 2 instruktioner, vilket tar nÄgra tiotals nanosekunder.
För att kringgÄ detta skydd och utöka fönstret för att genomföra en attack har tekniken för CPU-nedbromsning implementerats, vilket gör det möjligt att utföra insÀttningen av avbrottet vid rÀtt tillfÀlle för att omdirigera körflödet i kÀrnan och anvÀnda avbrottshanteraren för att förvrÀnga posten i bufferten för förutsÀgelser av övergÄngar. För att utnyttja sÄrbarheten SRSO kan angriparen skapa förhÄllanden dÀr blocket för förutsÀgelse av övergÄngar spekulativt utför ett stort antal felaktigt förutsagda anrop av CALL, tillrÀckligt för att fylla upp stacken av returadresser och skriva över korrekt förutsagda ÄtervÀndo punkter som ligger i början av stacken. Som ett resultat kan de initiala elementen i stacken skrivas över med vÀrden valda av angriparen, vilket senare leder till att dessa ersatta vÀrden anvÀnds vid spekulativt utförande av instruktionen RET i kontexten av en annan process.
Processorn kommer att faststÀlla att grentydning inte upprÀtthölls och rulla tillbaka operationen till sitt ursprungliga tillstÄnd, men de data som bearbetades under den spekulativa utförandet kommer att stanna i cachen och mikroarkitektoniska buffertar. Om det felaktigt utförda blocket gör en minnesreferens kommer dess spekulativa utförande att leda till att data stannar i den gemensamma cachen och data som lÀstes frÄn minnet. En av metoderna för att extrahera information frÄn cachen kan anvÀnda en analys av tillgÄngstiden till cachad och icke-cachad data.
KĂ€lla: opennet.ru
