Dobësi në procesorët Intel që çojnë në rrjedhje të të dhënave përmes kanaleve të palëve të treta

Një grup studiuesish nga universitetet kineze dhe amerikane ka identifikuar një dobësi të re në procesorët Intel që çon në rrjedhje të informacionit nga palët e treta në lidhje me rezultatin e operacioneve spekulative, të cilat mund të përdoren, për shembull, për të organizuar një kanal të fshehur komunikimi midis proceseve ose identifikoni rrjedhjet gjatë sulmeve të Meltdown.

Thelbi i cenueshmërisë është se një ndryshim në regjistrin e procesorit EFLAGS që ndodh si rezultat i ekzekutimit spekulativ të instruksioneve ndikon në kohën e mëvonshme të ekzekutimit të udhëzimeve të JCC (kërcim kur plotësohen kushtet e specifikuara). Operacionet spekulative nuk përfundojnë dhe rezultati hidhet poshtë, por ndryshimi i hedhur poshtë EFLAGS mund të përcaktohet duke analizuar kohën e ekzekutimit të udhëzimeve të JCC. Operacionet krahasuese të kryera në modalitetin spekulativ përpara tranzicionit, nëse janë të suksesshme, rezultojnë në një vonesë të vogël që mund të matet dhe të përdoret si shenjë për përzgjedhjen e përmbajtjes.

Dobësi në procesorët Intel që çojnë në rrjedhje të të dhënave përmes kanaleve të palëve të treta

Ndryshe nga sulmet e tjera të ngjashme të kanalit anësor, metoda e re nuk analizon ndryshimet në kohën e hyrjes në të dhënat e memorizuara dhe të pakapshme dhe nuk kërkon një fazë për të rivendosur regjistrin EFLAGS në gjendjen e tij fillestare, gjë që e bën të vështirë zbulimin dhe bllokimin e sulmit. Si demonstrim, studiuesit zbatuan një variant të sulmit Meltdown, duke përdorur një metodë të re për të marrë informacion në lidhje me rezultatin e një operacioni spekulativ. Funksionimi i metodës për organizimin e rrjedhjes së informacionit gjatë sulmit Meltdown u demonstrua me sukses në sistemet me një CPU Intel Core i7-6700 dhe i7-7700 në një mjedis me Ubuntu 22.04 dhe kernel Linux 5.15. Në një sistem me një CPU Intel i9-10980XE, sulmi u krye vetëm pjesërisht.

Dobësia e Meltdown bazohet në faktin se gjatë ekzekutimit spekulativ të instruksioneve, procesori mund të hyjë në një zonë të të dhënave private dhe më pas të heqë rezultatin sepse privilegjet e vendosura ndalojnë një akses të tillë nga procesi i përdoruesit. Në program, blloku i ekzekutuar në mënyrë spekulative ndahet nga kodi kryesor me një degë të kushtëzuar, e cila në kushte reale ndizet gjithmonë, por për faktin se deklarata e kushtëzuar përdor një vlerë të llogaritur që procesori nuk e njeh gjatë ekzekutimit paraprak të kodi, të gjitha opsionet e degës kryhen në mënyrë spekulative.

Në versionin klasik të Meltdown, meqenëse e njëjta cache përdoret për operacione të ekzekutuara në mënyrë spekulative si për instruksionet e ekzekutuara normalisht, është e mundur që gjatë ekzekutimit spekulativ të vendosen shënues në cache që pasqyrojnë përmbajtjen e biteve individuale në një zonë memorie të mbyllur, dhe më pas të përcaktojë në kodin e ekzekutuar normalisht kuptimin e tyre nëpërmjet analizës së kohës së aksesit në të dhënat e memorizuara dhe të pakapshme. Varianti i ri përdor një ndryshim në regjistrin EFLAGS si një shënues rrjedhjeje. Në demonstrimin e kanalit të fshehtë, një proces moduloi të dhënat e transmetuara për të krijuar kushte për ndryshimin e përmbajtjes së regjistrit EFLAGS dhe një proces tjetër analizoi ndryshimin në kohën e ekzekutimit të udhëzimit të JCC për të rikrijuar të dhënat e transmetuara nga procesi i parë.

Burimi: opennet.ru

Shto një koment