Даследнікі з кампаніі Bitdefender
Уразлівасць ставіцца да класа Spectre v1 і засноўваецца на ідэі ўзнаўлення дадзеных з працэсарнага кэша, пакінутых пасля спекулятыўнага выканання інструкцый. Блокі прадказанні пераходаў сучасных CPU для павышэння прадукцыйнасці ўжываюць папераджальнае выкананне некаторых інструкцый, якія верагодней за ўсё будуць выкананы, але не чакаючы вылічэнні ўсіх фактараў, якія вызначаюць іх выкананне (напрыклад, калі яшчэ не вылічаны ўмовы пераходу або параметры доступу). Калі прагноз не пацвярджаецца, працэсар адкідае вынік спекулятыўнага выканання, але апрацаваныя падчас яго дадзеныя асядаюць у працэсарным кэшы і могуць быць адноўленыя пры дапамозе метадаў вызначэння змесціва кэша па іншых каналах, якія аналізуюць змену часу доступу да пракэшаваных і не пракэшаваных дадзеных.
Асаблівасць новага нападу ў выкарыстанні ўцечкі, якая ўзнікае падчас спекулятыўнага выканання інструкцыі SWAPGS, якая ўжываецца ў аперацыйных сістэмах для замены значэння рэгістра GS пры пераходзе кіравання з прасторы карыстача ў ядро АС (выкарыстоўванае ў прасторы карыстача значэнне GS замяняецца на значэнне, выкарыстоўванае пры аперацыях у ядры ). У ядры Linux у GS захоўваецца паказальнік per_cpu, выкарыстоўваны для доступу да дадзеных ядра, а ў прасторы карыстача паказальнікі на TLS (Thread Local Storage).
Для выключэння падвойнага выкліку інструкцыі SWAPGS пры паўторным звароце да ядра з прасторы ядра ці калі выконваецца код, не які патрабуе замены рэгістра GS, перад інструкцыяй ажыццяўляецца праверка і ўмоўны пераход. Механізм спекулятыўнага выканання загадзя пераходзіць да выканання кода з інструкцыяй SWAPGS, не чакаючы выніку праверкі, і калі абраная галінка не пацвердзілася, адкідае вынік. Такім чынам, можа паўстаць сітуацыя, калі спекулятыўна будзе абраная галінка не якая прадугледжвае выкананне SWAPGS, але падчас спекулятыўнага выканання значэнне рэгістра GS будзе зменена інструкцыяй SWAPGS і выкарыстана ў залежных аперацыях з памяццю, якія абсоўваюцца ў кэшы CPU.
Даследчыкамі прапанавана два сцэнары атакі, для якіх падрыхтаваны прататыпы эксплоітаў. Першы сцэнар засноўваецца на сітуацыі, калі інструкцыя SWAPGS не выконваецца спекулятыўна, хоць выкарыстоўваецца пры фактычным выкананні, а другі - наадварот, калі інструкцыя SWAPGS выконваецца спекулятыўна, хоць фактычна не павінна. Для кожнага сцэнара прадугледжана два варыянты эксплуатацыі: атакавалы можа вызначыць значэнне па вызначаным адрасе ў вобласці ядра і атакавалы можа выканаць пошук вызначанага значэння ў па выпадковых адрасах у ядры. Правядзенне нападу займае шмат часу і для арганізацыі ўцечкі можа запатрабавацца выкананне эксплоіта на працягу некалькіх гадзін.
У ядры Linux праблема
Выпраўленне патрабуе ўсталёўкі абнаўлення ядра як у асноўнай сістэме, так і ў гасцявых асяродках, з наступнай перазагрузкай сістэмы. Для адключэння абароны ў Linux можа быць скарыстана опцыя "nospectre_v1", якая таксама адключае меры для блакавання ўразлівасці SWAPGS. Выпраўленне даступна ў выглядзе
Па заяве даследнікаў з кампаніі Bitdefender, Intel быў інфармаваны аб праблеме яшчэ ў жніўні мінулага года. Праблему было вырашана ўхіліць праграмна, для чаго да скаардынаванай выпрацоўкі выпраўлення былі прыцягнутыя распрацоўнікі з Microsoft, Google і ядры Linux. Старыя працэсары Intel, да Ivy Bridge, атакаваць значна цяжэй з-за адсутнасці падтрымкі інструкцыі WRGSBASE, скарыстанай у эксплоіце. Сістэмы ARM, POWER, SPARC, MIPS і RISC-V не схільныя да праблемы, бо не падтрымліваюць інструкцыю SWAPGS.
Праблема пагражае галоўным чынам уладальнікам працэсараў Intel
на сістэмах AMD атрымалася прайграць толькі другі сцэнар нападу, які абмяжоўваецца спекулятыўнай апрацоўкай базавага значэння рэгістра GS, што можна выкарыстоўваць для пошуку вызначаных значэнняў у выпадковых абласцях памяці. Для блакавання дадзенага варыянту атакі
Крыніца: opennet.ru