Një grup hulumtuesish nga Politeknika e Cyrihut identifikoi një variant të ri sulmi mbi mekanizmin e ekzekutimit spekulativ të kalimeve indirecte në CPU, i cili lejon nxjerrjen e informacionit nga memorie e bërthamës ose organizimin e një sulmi mbi sistemin e hostit nga makina virtuale. Ky vulnerabilitet mori emrin kodues Retbleed (CVE-2022-29900, CVE-2022-29901) dhe është i ngjashëm në natyrë me sulmet Spectre-v2. Dallimi qëndron në organizimin e ekzekutimit spekulativ të kodit të rastësishëm gjatë përpunimit të instruksionit "ret" (kthim), që nxjerr adresën për kalimin nga steka, në vend të kalimit indirekt duke përdorur instruksionin "jmp" me ngarkimin e adresës nga memoria ose regjistri i CPU.
Sulmuesi mund të krijojë kushte për parashikimin e gabuar të kalimit dhe të organizojë një kalim spekulativ të targetuar në një bllok kodi, që nuk parashihet nga logjika e ekzekutimit të programit. Në fund, procesori do të përcaktojë se parashikimi i degës nuk ka qenë i saktë dhe do të tërheqë operacionin në gjendjen fillestare, por të dhënat e përpunuara gjatë procesit të ekzekutimit spekulativ do të mbesin në memorie dhe buffers mikroarkitektonike. Nëse blloku që është ekzekutuar gabimisht bën akses në memorie, atëherë ekzekutimi i tij spekulativ do të sjellë vendosjen e të dhënave në memorien e përbashkët.
Për të përcaktuar të dhënat që kanë mbetur në memorie pas ekzekutimit spekulativ të operacioneve, sulmuesi mund të përdorë metoda për identifikimin e të dhënave mbetëse përmes kanaleve anësore, për shembull, duke analizuar ndryshimet në kohën e aksesit në të dhëna të ruajtura dhe të pa ruajtura. Për të nxjerrë informacion të targetuar nga zona në një nivel tjetër privilegjesh (për shembull, nga memoria e bërthamës), përdoren "gadgets" — sekuenca instrukcionesh të pranishme në bërthamë, të përshtatshme për leximin spekulativ të të dhënave nga memoria në varësi të kushteve të jashtme, mbi të cilat sulmuesi mund të ndikojë.
Për të mbrojtur nga sulmet klasike të klasës Spectre, të cilat përdorin instruksione të kalimeve të kushtëzuara dhe të tërthorta, shumica e sistemeve operative aplikojnë teknikën "retpoline", e cila bazohet në zëvendësimin e operacioneve të tërthorta me instrukcionin "ret", për të cilin në procesorë përdoret një bllok i veçantë për parashikimin e gjendjes së stack-ut, i cili nuk përdor bllokun e parashikimit të kalimeve. Kur u shpik retpoline në vitin 2018, u konsiderua se manipulimet e ngjashme me Spectre me adresat nuk ishin të aplikueshme në praktikë për kalim spekullativ përmes instruksionit "ret".
Kërkuesit që zhvilluan metodën e sulmit Retbleed treguan mundësinë e krijimit të kushteve mikroarkitekturale për të iniciuar një kalim spekullativ përmes instruksionit "ret" dhe publikuan një vegël të gatshme për identifikimin në kernelin Linux të sekuencave të instrukcioneve të dobëta për shfrytëzim (gadgets), në të cilat shfaqen kushte të tilla.
Në kuadër të hulumtimit u përgatit një eksploit funksional që lejon në sistemet me CPU Intel nga një proces i papriviligjuar në hapësirën e përdoruesit të nxjerrë të dhëna të rastësishme nga memorja e kernelit me një shpejtësi prej 219 byte për sekondë dhe saktësi prej 98%. Në procesorët AMD efikasiteti i eksploitit është shumë më i lartë - shpejtësia e rrjedhjes arrin në 3.9 KB për sekondë. Si një shembull praktik, tregohet se si përmes eksploitit të propozuar mund të përcaktohet përmbajtja e skedarit /etc/shadow. Në sistemet me CPU Intel, sulmi për të përcaktuar hash-in e fjalëkalimit të përdoruesit root u krye për 28 minuta, ndërsa në sistemet me CPU AMD në 6 minuta.

Mundësia për kryerjen e sulmit është konfirmuar për brezat 6-8 të procesorëve Intel, të cilët janë prodhuar deri në tremujorin e tretë të vitit 2019 (përfshirë Skylake), dhe për procesorët AMD të bazuar në mikroarkitekturën Zen 1, Zen 1+ dhe Zen 2, të cilët janë prodhuar deri në tremujorin e dytë të vitit 2021. Në modelet më të reja të procesorëve, si AMD Zen3 dhe Intel Alder Lake, si dhe në procesorët ARM, problemi bllokohet nga mekanizmat ekzistues të mbrojtjes. Për shembull, përdorimi i instrukcioneve IBRS (Parashikimi i Kalimeve të Tërthorta të Kufizuara) ndihmon për t'u mbrojtur nga sulmi.
Për bërthamën Linux dhe hypervizorin Xen është përgatitur një grup ndryshimesh për CPU të vjetra që parandalojnë problemin përmes një programi. Patch-i i propozuar për bërthamën Linux ndryshon 68 skedarë, shton 1783 rreshta dhe heq 387 rreshta. Fatkeqësisht, mbrojtja shkakton shpenzime të konsiderueshme — në testet e kryera në procesorët AMD dhe Intel, rënia e performancës vlerësohet nga 14% në 39%. Përdorimi i mbrojtjes në bazë të instrukcioneve IBRS është më i preferuar, të cilat janë të disponueshme në gjeneratat e reja të CPU Intel dhe mbështeten që nga bërthama Linux 4.19.
Në procesorët Intel, zëvendësimi i adresës për kalimin speculativ të të dhënave bëhet falë një veçorie që shfaqet gjatë mbushjes së poshtme (underflow) në tamponin e parashikimit të përmbajtjes së pritjes (Return Stack Buffer). Kur ndodhin kushte të tilla, për instrukcionin "ret" fillon të aplikohet logjika e zgjedhjes së adresës, e ngjashme me atë që përdoret për kalimet normale. Në bërthamën Linux janë gjetur më shumë se një mijë vende që krijojnë kushte për iniciimin e këtij lloj mbushjeje mbrapa dhe janë të aksesueshme përmes thirrjeve të sistemit.
Në procesorët AMD, ekzekutimi speculativ i instrukcionit "ret" bëhet pa u lidhur me tamponin specifik për pritjen (Return Address Stack) dhe blloku i parashikimit të kalimeve e sheh instrukcionin "ret" jo si një rikthim të kontrollit, por si një kalim të ndërsjellë, dhe për pasojë, përdor të dhënat për kalimet e ndërsjellta gjatë parashikimit. Në kushte të tilla, pothuajse çdo operacion "ret", i arritshëm përmes thirrjes së sistemit, mund të përdoret për shfrytëzim.
Për më tepër, në CPU-të AMD u identifikua një problem tjetër (CVE-2022-23825, Branch Type Confusion), i lidhur me kryerjen e kalimeve të rreme — kushtet për parashikimin e kalimit mund të lindin madje edhe pa instrukcione të nevojshme për degëzim, duke lejuar që të ndikoni në tamponin e parashikimit të kalimeve pa instrukcionin "ret". Kjo veçori komplikon ndjeshëm realizimin e mbrojtjes dhe kërkon një pastrim më aktiv të tamponit të parashikimit të kalimeve. Pritet që shtimi i mbrojtjes së plotë në bërthamë do të çojë në rritje të shpenzimeve me 209%.
Burimi: opennet.ru
