Neseniai a „Google“ saugumo tyrinėtojas atskleidė, per tinklaraščio įrašą, naujo pažeidžiamumo atradimas (CVE-2023-23583) „Intel“ procesoriuose, kodiniu pavadinimu Reptar, kuris veikia kelis „Intel“ stalinių kompiuterių, mobiliųjų ir serverių procesorius, bet ypač debesų sistemas, kuriose veikia skirtingų vartotojų virtualios mašinos.
Pažeidžiamumas „Reptar“ leidžia sistemai užstrigti arba sugesti atliekant tam tikras operacijas neprivilegijuotose svečių sistemose. Teoriškai pažeidžiamumas gali būti naudojamas privilegijoms iš trečiojo apsaugos žiedo padidinti iki nulio (CPL0) ir pabėgti iš izoliuotų aplinkų, tačiau šis scenarijus dar nebuvo patvirtintas praktikoje dėl derinimo sunkumų mikroarchitektūros lygmenyje.
„Google“ informacijos saugos inžinierių komanda apie pažeidžiamumą pranešė „Intel“, kuri šiandien ją atskleidė. Kruopščiai bendradarbiaujant „Google“, „Intel“ ir pramonės partneriams buvo įgyvendintos švelninimo priemonės, o „Google“ darbuotojai ir mūsų klientai yra apsaugoti.
Pasak tyrėjos, Pažeidžiamumas yra daugelyje „Intel“ procesorių šeimų ir pranešama, kad problema atsiranda XNUMX kartos Intel Core procesoriuose ir XNUMX kartos Xeon Scalable procesoriuose, taip pat Xeon E/D/W procesoriuose.
Apie Reptarą
Minima, kad pažeidžiamumas yra dėl to, kad vykdoma „REP MOVSB“ komanda, užkoduota „REX“ priešdėliu Perteklinis (vieno baito priešdėlis) lemia neapibrėžtą elgesį. REX priešdėlis gali suteikti papildomų bitų kitai instrukcijai, kurią galima naudoti kaip operandus, taip leidžiant užkoduoti visus 16 galimų bendrosios paskirties registrų, o šie pasirenkami bitai suteikia vietos užkoduoti daugiau bendrosios paskirties registrų kitoje instrukcijoje.
Rugpjūčio mėn. mūsų patvirtinimo procesas pateikė įdomų teiginį. Jis nustatė atvejį, kai perteklinių REX priešdėlių pridėjimas prie optimizuotos FSRM „rep movs“ operacijos davė nenuspėjamų rezultatų.
Testavimo metu pastebėjome labai keistą elgesį. Pavyzdžiui, šakos į netikėtas vietas, besąlyginės šakos, kurių nepaisoma, o procesorius nebe tiksliai įrašo instrukcijų rodyklės xsaveo iškvietimo instrukcijas.
Įdomu tai, kad bandydami suprasti, kas vyksta, matėme derintuvą, pranešantį apie neįmanomas būsenas.
Problema buvo aptikta perteklinio priešdėlio bandymo metu, kurios teoriškai turėtų būti ignoruojamos, tačiau praktiškai sukėlė keistus efektus, tokius kaip besąlyginių šakų ignoravimas ir rodyklės išsaugojimo xsave ir iškvietimo instrukcijose nutraukimas. Tolesnė analizė parodė, kad perteklinio priešdėlio pridėjimas prie „REP MOVSB“ instrukcijos sugadinamas ROB (ReOrder Buffer) buferio, naudojamo instrukcijoms užsakyti, turinys.
Įdomi x86 savybė yra ta, kad instrukcijų dekodavimas paprastai yra gana atsipalaidavęs. Jei naudosite priešdėlį, kuris neturi prasmės arba prieštarauja kitiems priešdėliams, nieko daug nenutiks, dažniausiai jis bus tiesiog ignoruojamas.
Šis faktas kartais yra naudingas; Kompiliatoriai gali naudoti perteklinius priešdėlius, kad papildytų vieną instrukciją iki pageidaujamos lygiavimo ribos.
Manoma, kad klaida atsirado dėl neteisingo „MOVSB“ instrukcijos dydžio skaičiavimo su per dideliu priešdėliu, dėl kurio pažeidžiamas instrukcijų, įrašytų į ROB buferį po MOVSB, adresavimo ir komandų rodyklės poslinkis.
Šis desinchronizavimas gali apsiriboti tarpinių skaičiavimų pertraukimu ir vėlesniu integralios būsenos atkūrimu. Bet jei vienu metu užblokuosite kelis branduolius arba SMT gijas, tai gali padaryti pakankamai žalos mikroarchitektūros būsenai, kad ji sugestų.
Vidinė „Intel“ apžvalga taip pat parodė, kad pažeidžiamumas gali būti išnaudotas siekiant padidinti privilegijas tam tikromis sąlygomis.
Galiausiai verta paminėti, kad norint patikrinti sistemų vientisumą, buvo paskelbta programa kuri sukuria sąlygas pažeidžiamumui pasireikšti, be to, kad aptariamas pažeidžiamumas buvo ištaisytas mikrokodo atnaujinime 20231114.
Kakleliai domina sužinoti daugiau apie tai, išsamią informaciją galite sužinoti šią nuorodą.