Новы напад на мікраархітэктурныя структуры працэсараў Intel і AMD

Група даследнікаў з Віргінскага і Каліфранійскага ўніверсітэтаў прадставіла новы выгляд нападу на мікраархітэктурныя структуры працэсараў Intel і AMD, выяўлены падчас зваротнага інжынірынгу недакументаваных магчымасцяў CPU. Прапанаваны метад нападу звязаны з ужываннем у працэсарах прамежкавага кэша мікрааперацый (micro-op cache), які можа выкарыстоўвацца для вымання звестак, якія аселі падчас спекулятыўнага выканання інструкцый.

У мэтах аптымізацыі працэсар пачынае выконваць некаторыя інструкцыі ў спекулятыўным рэжыме, не чакаючы выкананні папярэдніх вылічэнняў, і калі потым вызначае, што прадказанне не апраўдалася, адкочвае аперацыю ў зыходны стан, але апрацаваныя падчас спекулятыўнага выканання дадзеныя абсоўваюцца ў кэшы, змесціва якога можна вызначыць.

Адзначаецца, што новы метад прыкметна апярэджвае па прадукцыйнасці напад Spectre v1, абцяжарвае выяўленне нападу і не блакуецца існуючымі метадамі абароны ад нападаў па іншых каналах, распрацаваным для блакавання ўразлівасцяў, выкліканых спекулятыўным выкананнем інструкцый (напрыклад, ужыванне інструкцыі LFENCE блакуе ўцечку на апошніх стадыях спе , але не абараняе ад уцечкі праз мікраархітэктарныя структуры).

Метад закранае мадэлі працэсараў Intel і AMD, якія выпускаюцца з 2011 года, у тым ліку серыі Intel Skylake і AMD Zen. Сучасныя CPU разбіваюць складаныя працэсарныя інструкцыі на прасцейшыя RISC-падобныя мікрааперацыі, якія кэшуюцца ў асобным кэшы. Дадзены кэш кардынальна адрозніваецца ад кэшаў больш высокага ўзроўня, недаступны напроста і выступае ў ролі струменевага буфера для хуткага доступу да вынікаў дэкадавання CISC-інструкцый у RISC-мікраінструкцыі. Тым не менш, даследнікі знайшлі спосаб для стварэння ўмоў, якія ўзнікаюць пры канфлікце доступу да кэша і дазваляюць судзіць пра змесціва кэша мікрааперацый шляхам аналізу адрозненняў у часе выканання тых ці іншых дзеянняў.

Новы напад на мікраархітэктурныя структуры працэсараў Intel і AMD

Кэш мікрааперацый у працэсарах Intel сегментаваны ў прывязцы да струменяў CPU (Hyper-Threading), у той час як у працэсарах AMD Zen ужываецца агульны кэш, што стварае ўмовы для ўцечкі дадзеных не толькі ў рамках аднаго струменя выканання, але і паміж рознымі струменямі ў SMT (магчымая ўцечка дадзеных паміж кодам, выкананым на розных лагічных ядрах CPU).

Даследнікамі прапанаваны базавы метад для вызначэння змен у кэшы мікрааперацый і некалькі сцэнараў нападаў, якія дазваляюць ствараць утоеныя каналы перадачы дадзеных і выкарыстоўваць уразлівы код для арганізацыі ўцечкі канфідэнцыйных дадзеных, як у рамках аднаго працэсу (напрыклад, для арганізацыі ўцечкі дадзеных працэсу пры выкананні іншага кода ў рухавічках з JIT і ў віртуальных машынах), так і паміж ядром і працэсамі ў прасторы карыстальніка.

Пры арганізацыі варыянту нападу Spectre з выкарыстаннем кэша мікрааперацый даследнікам атрымалася дамагчыся прадукцыйнасці ў 965.59 Kbps пры ўзроўні памылак 0.22% і 785.56 Kbps пры выкарыстанні карэкцыі памылак, у выпадку арганізацыі ўцечкі ў рамках адной адраснай прасторы і ўзроўня прывілеяў. Пры ўцечцы, якая ахоплівае розныя ўзроўні прывілеяў (паміж ядром і прасторай карыстальніка), прадукцыйнасць склала 85.2 Kbps пры даданні карэкцыі памылак і 110.96 Kbps пры ўзроўні памылак у 4%. Пры нападзе на працэсары AMD Zen, якая стварае ўцечку паміж рознымі лагічнымі ядрамі CPU, прадукцыйнасць склала 250 Kbps пры ўзроўні памылак 5.59% і 168.58 Kbps пры карэкцыі памылак. У параўнанні з класічным метадам Spectre v1 новы напад апынулася хутчэй у 2.6 разу.

Мяркуецца, што для абароны ад нападу на кэш мікрааперацый запатрабуецца занясенне змен, якія зніжаюць прадукцыйнасць мацней, чым пры ўключэнні абароны ад нападаў Spectre. У якасці аптымальнага кампрамісу прапануецца блакаваць падобныя напады не шляхам адключэння кэшавання, а на ўзроўні маніторынгу анамалій і азначэнні станаў кэша, тыповых для нападаў.

Як і ў нападах Spectre для арганізацыі ўцечкі з ядра ці іншых працэсаў патрабуецца выкананне на боку працэсаў-ахвяр вызначанай паслядоўнасці каманд (гаджэтаў), якая прыводзіць да спекулятыўнага выканання інструкцый. У ядры Linux знойдзена каля 100 падобных гаджэтаў, якія будуць выдаленыя, але перыядычна знаходзяць абыходныя метады для іх генерацыі, напрыклад, злучаныя з запускам у ядры адмыслова аформленых BPF-праграм.

Крыніца: opennet.ru

Дадаць каментар