SWAPGS - осебпазирии нав дар механизми иҷрои тахминии CPU

Муҳаққиқон аз Bitdefender ошкор кард осебпазирии нав (CVE-2019-1125) дар механизми иҷрои дастурҳои тахминии CPU-ҳои муосир, ки SWAPGS ном дорад, ки ба номи дастури протсессори боиси мушкилот мувофиқат мекунад. осебпазирӣ Ин имкон медиҳад, ба ҳамлагари беимтиёз имкон медиҳад, ки мундариҷаи минтақаҳои хотираи ядро ​​​​ё мошинҳои виртуалиро муайян кунад. Мушкилот тасдиқ карда шуд дар коркардкунандагони Intel (x86_64) ва қисман таъсир мерасонад Протсессорҳои AMD, ки барои онҳо вектори асосии ҳамла пайдо намешавад. Усулҳои қаблан татбиқшудаи муқовимат ба осебпазирии Spectre ва Meltdown аз ҳамлаи SWAPGS ҳангоми истифодаи протсессори Intel муҳофизат намекунанд, аммо ислоҳот барои Linux, ChromeOS, Android ва Windows аллакай пешниҳод шудааст.

Осебият ба синфи Spectre v1 тааллуқ дорад ва ба идеяи барқарор кардани маълумот аз кэши протсессор, ки пас аз иҷрои тахминии дастурҳо боқӣ мондааст, асос ёфтааст. Барои беҳтар кардани кор, воҳидҳои пешгӯии филиалҳои CPU-ҳои муосир иҷрои пешакии баъзе дастурҳоро истифода мебаранд, ки эҳтимолан иҷро мешаванд, аммо бидуни мунтазири ҳисоби ҳамаи омилҳое, ки иҷрои онҳоро муайян мекунанд (масалан, вақте ки шароити филиал ё параметрҳои дастрасӣ ҳанӯз ҳисоб карда нашудааст). Агар пешгӯӣ тасдиқ нашавад, протсессор натиҷаи иҷрои тахминиро рад мекунад, аммо маълумоти коркардшуда дар кэши протсессор боқӣ мемонад ва онҳоро бо истифода аз усулҳои муайян кардани мундариҷаи кэш тавассути каналҳои паҳлӯӣ, таҳлили тағирот дар дастрасӣ барқарор кардан мумкин аст. вақт ба маълумоти кэшшуда ва кэшнашуда.

Хусусияти ҳамлаи нав ин истифодаи ихроҷ аст, ки ҳангоми иҷрои тахминии дастури SWAPGS ба амал меояд, ки дар системаҳои оператсионӣ барои иваз кардани арзиши регистри GS ҳангоми аз фазои корбар ба ядрои ОС (GS) гузаштани назорат истифода мешавад. арзиши дар фазои корбар истифодашуда бо арзиши ҳангоми амалиёт дар ядро ​​истифодашуда иваз карда мешавад). Дар ядрои Linux, GS нишондиҳандаи per_cpu-ро, ки барои дастрасӣ ба маълумоти ядро ​​истифода мешавад, нигоҳ медорад ва фазои корбар нишондиҳандаҳоро ба TLS (Thread Local Storage) нигоҳ медорад.

Барои он ки ду маротиба ба дастури SWAPGS занг назанед, ҳангоми дастрасӣ ба ядро ​​аз фазои ядро ​​ё ҳангоми иҷро кардани код, ки тағир додани реестри GS-ро талаб намекунад, пеш аз дастур санҷиш ва шохаи шартӣ анҷом дода мешавад. Муҳаррики иҷрои тахминӣ бе интизории натиҷаи санҷиш ба иҷро кардани код бо дастури SWAPGS пеш меравад ва агар шохаи интихобшуда тасдиқ нашавад, натиҷаро рад мекунад. Ҳамин тариқ, вазъ метавонад ба миён ояд, ки филиале, ки иҷрои SWAPGS-ро дар бар намегирад, ба таври тахминӣ интихоб карда мешавад, аммо ҳангоми иҷрои тахминӣ арзиши реестри GS бо дастури SWAPGS тағир дода мешавад ва дар амалиёти хотираи вобаста, ки дар кэши CPU анҷом меёбад, истифода мешавад.

Муҳаққиқон ду сенарияи ҳамларо пешниҳод карданд, ки барои онҳо прототипҳои истисмор омода шудаанд. Сенарияи аввал ба вазъияте асос ёфтааст, ки дастури SWAPGS ба таври тахминӣ иҷро намешавад, гарчанде ки он воқеан дар иҷроиш истифода мешавад ва дуввумӣ баръакс аст, вақте ки дастури SWAPGS ба таври тахминӣ иҷро мешавад, гарчанде ки он набояд воқеан иҷро карда шавад. Барои ҳар як сенария ду варианти истисмор вуҷуд дорад: ҳамлакунанда метавонад арзишро дар суроғаи мушаххас дар минтақаи ядро ​​муайян кунад ва ҳамлакунанда метавонад арзиши мушаххасро дар суроғаҳои тасодуфӣ дар ядро ​​ҷустуҷӯ кунад. Гузаронидани ҳамла вақти тӯлонӣ мегирад ва истисмор метавонад барои анҷом додани ихроҷ чанд соат лозим шавад.

Дар ядрои Linux мушкилот вуҷуд дорад бартараф карда шуд бо тағир додани мантиқи даъвати дастури SWAPGS (банд кардани иҷрои тахминӣ), ба монанди ислоҳи осебпазирии синфи Spectre v1. Интизор меравад, ки муҳофизати иловагӣ ба иҷрои сарбории маъмулӣ таъсири ҳадди ақал расонад. Дар давоми марҳилаи гузариш байни корбар ва фазои ядроӣ таъхир ба амал меояд, ки ин метавонад ба кори суст оварда расонад, вақте ки масалан, занги системаи вазнин аз барнома ё тавлиди зуд-зуд NMIs ва халалҳо вуҷуд дорад.

Ислоҳ насб кардани навсозии ядроро ҳам дар системаи мизбон ва ҳам дар муҳити меҳмонон ва пас аз бозоғозкунии система талаб мекунад. Барои хомӯш кардани муҳофизат дар Linux, опсияи "nospectre_v1" -ро истифода бурдан мумкин аст, ки он инчунин чораҳоро барои бастани осебпазирии SWAPGS ғайрифаъол мекунад. Ислоҳ ҳамчун дастрас аст ямоқи барои ядрои Linux, ки аллакай ба релизҳо дохил карда шудааст 4.19.65, 5.2.7, 4.14.137, 4.9.188 ва 4.4.188. Навсозиҳои тақсимоти Linux ҳанӯз нашр нашудаанд (Debian, RHEL, Федора, Коғази Linux, SUSE/openSUSE, Ubuntu). Дар Windows, мушкилот оромона ҳал карда шуд Навсозии июл. Ширкати Google омода кардааст ислоҳи ядрои 4.19, ки бо ChromeOS фиристода мешавад ва андроид.

Ба гуфтаи муҳаққиқони Bitdefender, Intel аз ин мушкилот ҳанӯз моҳи августи соли гузашта огоҳ шуда буд. Қарор дода шуд, ки мушкилот ба таври барномавӣ ислоҳ карда шавад, ки барои он таҳиягарон аз Microsoft, Google ва ядрои Linux дар таҳияи ҳамоҳангшудаи ислоҳ ҷалб карда шуданд. Протсессори кӯҳнаи Intel, пеш аз Ivy Bridge, ҳамла кардан аз сабаби набудани дастгирӣ барои дастури WRGSBASE, ки дар истисмор истифода мешавад, хеле мушкилтар аст. Системаҳои ARM, POWER, SPARC, MIPS ва RISC-V аз мушкилот осеб намебинанд, зеро онҳо дастури SWAPGS-ро дастгирӣ намекунанд.

Мушкилот асосан ба соҳибони протсессори Intel дахл дорад -
Дар системаҳои AMD, танҳо сенарияи дуюми ҳамларо дубора тавлид кардан мумкин буд, ки он бо коркарди тахминии арзиши асосии реестри GS маҳдуд аст, ки метавонад барои ҷустуҷӯи арзишҳои мушаххас дар минтақаҳои хотираи тасодуфӣ истифода шавад. Барои бастани ин варианти ҳамла кофӣ аст усулҳои мавҷудаи муҳофизат аз Spectre v1.

Манбаъ: opennet.ru

Илова Эзоҳ