Studiues nga Instituti i Teknologjisë i Massachusetts kanë identifikuar teknikën e sulmit TONTOU (Time-of-Neutralization to Time-of-Use), e cila ofron një mënyrë të re për të shfrytëzuar cenueshmëritë mikroarkitekturore të klasës Spectre v2. Cenueshmëria bën të mundur përcaktimin e përmbajtjes së memories së kernel-it gjatë ekzekutimit të eksploitit në hapësirën e përdoruesit. Kodi për bllokimin e shfrytëzimit të kësaj cenueshmërie u pranua në kernel-in Linux më 5 gusht dhe u përfshi në versionet 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 dhe 5.10.263.
Studiuesit demonstruan mundësinë e kryerjes së sulmit nga një përdorues lokal pa privilegje për të përcaktuar hash-in e fjalëkalimit të përdoruesit root, i ruajtur në skedarin /etc/shadow dhe i ngarkuar në memorie gjatë autentifikimit në sistem. Studiuesit arritën të siguronin rrjedhje të të dhënave nga memoria e kernel-it me një shpejtësi prej 5.47 bajt në sekondë dhe me saktësi 91.97%. Nga 10 ekzekutime provë të eksploitit, që mesatarisht zgjatën 18 minuta, në gjysmën e rasteve u arrit të përcaktohej me sukses prania e skedarit /etc/shadow në memorie dhe të nxirrej përmbajtja e tij.
Eksploiti u demonstrua në sisteme me procesorë AMD dhe mund të përdoret me CPU AMD të familjeve Zen 1-4. Në sistemet Intel, sulmi është gjithashtu i mundur, por shfrytëzimi është më kompleks. Për mbrojtje nga tejmbushja e stekës së adresave të kthimit dhe për bllokimin e cenueshmërisë SRSO (Speculative Return Stack Overflow) në procesorët AMD, përdoret mekanizmi mbrojtës Safe-RET, i cili pastron buffer-in e parashikimit të degëzimeve pas çdo përdorimi dhe e ngushton dritaren e sulmit në 2 instruksione, të ekzekutuara brenda disa dhjetëra nanosekondash.
Për të anashkaluar këtë mbrojtje dhe për të zgjeruar dritaren e kryerjes së sulmit, është zbatuar një teknikë e ngadalësimit të CPU-së, e cila bëri të mundur zëvendësimin e ndërprerjes në momentin e duhur për të ridrejtuar rrjedhën e ekzekutimit në kernel dhe për të përdorur trajtuesin e ndërprerjes për të shtrembëruar shkrimin në buferin e parashikimit të degëzimeve. Për shfrytëzimin e cenueshmërisë SRSO, sulmuesi mund të krijojë kushte në të cilat blloku i parashikimit të degëzimeve do të ekzekutojë në mënyrë spekulative një numër të madh thirrjesh CALL të parashikuara gabim, të mjaftueshme për të tejmbushur stekun e adresave të kthimit dhe për të mbishkruar pikat e kthimit të parashikuara saktë, të vendosura në fillim të stekut. Si rezultat, elementet fillestare të stekut mund të mbishkruhen me vlera të zgjedhura nga sulmuesi, gjë që më pas do të çojë në përdorimin e këtyre vlerave të zëvendësuara gjatë ekzekutimit spekulativ të instruksionit RET në kontekstin e një procesi tjetër.
Procesori do të përcaktojë se parashikimi i degëzimit ka qenë i pasaktë dhe do ta kthejë operacionin në gjendjen fillestare, por të dhënat e përpunuara gjatë ekzekutimit spekulativ do të mbeten në cache dhe në buferët mikroarkitekturorë. Nëse blloku i ekzekutuar gabimisht kryen qasje në memorie, ekzekutimi i tij spekulativ do të bëjë që në cache-n e përbashkët të mbeten edhe të dhënat e lexuara nga memoria. Për nxjerrjen e informacionit nga cache mund të përdoret një nga metodat për përcaktimin e përmbajtjes së cache bazuar në analizën e ndryshimit të kohës së qasjes te të dhënat e ruajtura në cache dhe te ato që nuk janë në cache.
Burimi: opennet.ru
