Raziskovalci iz Bitdefenderja
Ranljivost spada v razred Spectre v1 in temelji na ideji obnovitve podatkov iz predpomnilnika procesorja, ki ostanejo po špekulativnem izvajanju navodil. Za izboljšanje zmogljivosti enote za napovedovanje razvejanja sodobnih CPE uporabljajo preventivno izvajanje nekaterih navodil, za katera je najverjetneje, da bodo izvedena, vendar brez čakanja na izračun vseh dejavnikov, ki določajo njihovo izvedbo (na primer, ko pogoji za razvejanje ali parametri dostopa niso še izračunana). Če napoved ni potrjena, procesor zavrže rezultat špekulativne izvedbe, vendar podatki, obdelani med njo, ostanejo v predpomnilniku procesorja in jih je mogoče obnoviti z metodami za določanje vsebine predpomnilnika prek stranskih kanalov, analizo spremembe dostopa čas do predpomnjenih in nepredpomnjenih podatkov.
Posebnost novega napada je uporaba puščanja, ki nastane med špekulativnim izvajanjem ukaza SWAPGS, ki se v operacijskih sistemih uporablja za zamenjavo vrednosti registra GS, ko nadzor preide iz uporabniškega prostora v jedro OS (GS vrednost, uporabljena v uporabniškem prostoru, se nadomesti z vrednostjo, uporabljeno med operacijami v jedru). V jedru Linuxa GS shrani kazalec per_cpu, ki se uporablja za dostop do podatkov jedra, uporabniški prostor pa shrani kazalce na TLS (Thread Local Storage).
Da bi se izognili dvakratnemu klicu ukaza SWAPGS pri ponovnem dostopu do jedra iz prostora jedra ali pri izvajanju kode, ki ne zahteva spremembe registra GS, se pred ukazom izvedeta preverjanje in pogojna veja. Špekulativni izvedbeni mehanizem proaktivno nadaljuje z izvajanjem kode z navodili SWAPGS, ne da bi čakal na rezultat preverjanja, in če izbrana veja ni potrjena, zavrže rezultat. Tako lahko pride do situacije, ko je špekulativno izbrana veja, ki ne vključuje izvajanja SWAPGS, vendar bo med špekulativnim izvajanjem vrednost registra GS spremenjena z ukazom SWAPGS in uporabljena v odvisnih pomnilniških operacijah, ki končajo v predpomnilniku CPU.
Raziskovalci so predlagali dva scenarija napada, za katera so bili pripravljeni prototipi izkoriščanja. Prvi scenarij temelji na situaciji, ko se navodilo SWAPGS ne izvaja špekulativno, čeprav se dejansko uporablja pri izvajanju, drugi pa je nasprotno, ko se navodilo SWAPGS izvaja špekulativno, čeprav dejansko ne bi smelo biti izvedeno. Za vsak scenarij obstajata dve možnosti za izkoriščanje: napadalec lahko določi vrednost na določenem naslovu v območju jedra in napadalec lahko poišče določeno vrednost na naključnih naslovih v jedru. Izvedba napada traja dolgo časa in izkoriščanje lahko zahteva več ur, da dokonča uhajanje.
V jedru Linuxa je težava
Popravek zahteva namestitev posodobitve jedra v gostiteljskem sistemu in gostujočem okolju, čemur sledi ponovni zagon sistema. Za onemogočanje zaščite v Linuxu lahko uporabite možnost "nospectre_v1", ki prav tako onemogoči ukrepe za blokiranje ranljivosti SWAPGS. Popravek je na voljo kot
Po mnenju raziskovalcev iz Bitdefenderja je bil Intel o težavi obveščen že avgusta lani. Odločeno je bilo, da se težava odpravi programsko, za kar so bili v usklajenem razvoju popravka vključeni razvijalci iz Microsofta, Googla in jedra Linuxa. Starejše Intelove procesorje, pred Ivy Bridge, je veliko težje napadati zaradi pomanjkanja podpore za navodilo WRGSBASE, uporabljeno v izkoriščanju. Težava ne vpliva na sisteme ARM, POWER, SPARC, MIPS in RISC-V, ker ne podpirajo navodil SWAPGS.
Težava prizadene predvsem lastnike procesorjev Intel -
Na sistemih AMD je bilo mogoče reproducirati samo drugi scenarij napada, ki je omejen na špekulativno obdelavo osnovne vrednosti registra GS, ki se lahko uporablja za iskanje določenih vrednosti v naključnih pomnilniških območjih. Za blokiranje te možnosti napada
Vir: opennet.ru