Нова атака, наречена Inception, може да се използва за изтичане на чувствителни данни от всеки процесор на AMD.
Ключови изводи
- Изследователи от ETH Цюрих разработиха нова атака за преходно изпълнение, наречена Training in Transient Execution (TTE), който използва спекулативно изпълнение за изтичане на памет на ядрото и достъп до чувствителни файлове като /etc/shadow в Linux машини.
- Inception, експлойтът от край до край, изграден с помощта на TTE, може да изтече до 39 байта в секунда на AMD Zen 4 процесори и успешно извличане на хеширани пароли за потребителски акаунти, съхранени в /etc/shadow в рамките на 40 минути.
- Inception се различава от другите атаки за преходно изпълнение чрез вмъкване на нови прогнози в предиктора на разклонения по време на преходен прозорец, създавайки по-мощни преходни прозорци, които могат да се използват за препълване на буфера за връщане на стека и получаване на контрол над процесора. Смекчаването на въздействието на тази атака очевидно е предизвикателство.
След Zenbleed, изследователи от ETH Zurich са проектирали нов клас атаки с преходно изпълнение, наречени Training in Transient Execution (TTE). Използвайки TTE, изследователите изградиха експлойт от край до край, наречен Inception. Може да изтече памет на ядрото със скорост до 39 байта в секунда на AMD Zen 4 и изследователите успяха да изтекат /etc/shadow на Linux машина за 40 минути. Този файл съдържа хеширани пароли за потребителски акаунти и е защитен от системата, достъпен само от root потребител. С други думи, този експлойт е наистина лош.
Как работи Inception?
Както при Zenbleed, Начало (CVE-2023-20569, чрез Блеещ компютър) злоупотребява със спекулативното изпълнение в начина, по който работи. Предвиждането на клонове и спекулативното изпълнение в общи линии се отнасят до това, когато вашият компютър изпълнява операции, които все още не са необходими, но вероятно ще са необходими в следващите цикли. Често се прави в моменти, когато вашата система има свободни ресурси, тъй като ускорява цялостната обработка, когато инструкциите или данните иначе все още не биха били готови за процесора. Ако извършената работа не е необходима, тя обикновено се отхвърля и процесорът може да се върне там, където трябва, за да изпълни следващата правилна инструкция. Когато прави това, това се нарича погрешно предвиждане на клон.
Въпреки това има много проблеми, когато става въпрос за спекулативно изпълнение и уязвимости като Spectre и Zenbleed са резултат от това. Тези изследователи съчетаха по-стар експлойт, наречен "Phantom" (който засегна Zen 1 и Zen 2 архитектурите) с тяхната TTE атака, за да създадат Inception.
„Начало“ е препратка към едноименния филм, където предпоставката на филма разчита на засаждането на идея в нечия глава, когато сънува. В този случай изследователите заявяват, че влагат „идея“ в процесора, докато тя в известен смисъл е "сънуване". Това го кара да изпълнява неправилни инструкции, което позволява на Inception да отвлече контролния поток на процесора.
BTB е целевият буфер на клона, а RSB е буферът на връщащия стек. Взето от бялата книга на Inception:
„В първата стъпка на обучение T1 атакуващият изпълнява тренировъчен клон в TJ, който се сблъсква с BTB записа на източника PJ на PHANTOMJMP. Намиращ се в адресното пространство на ядрото, PJ е адресът, който инициира рекурсивния PHANTOMCALL. Върнатият VR се разпределя след PJ в контролния поток. Целта на PHANTOMJMP е настроена на PC, при което ще се задейства рекурсивният PHANTOMCALL. В стъпка на обучение T2, атакуващият изпълнява обучително повикване в TC, което се сблъсква с PC в BTB, което ще установи прогнозата за PHANTOMCALL. Целта на това обучително повикване е настроена на PC, установявайки рекурсивно предсказване на PHANTOMCALL. При изпълнение на PC, процесорът ще инжектира рекурсивно RSB прогнози към притурката за разкриване G, чието местоположение следва непосредствено PHANTOMCALL на PC. Тъй като компютърът се намира в пространството на ядрото, клоновете за обучение TJ и TC ще задействат грешки в страницата, от които ние се възстановяваме."
Там, където Inception се различава от повечето атаки за преходно изпълнение, е, че по време на преходния прозорец вместо това той вмъква нови прогнози в предиктора на разклонения. Всяко вмъкване създава допълнителни преходни прозорци, които могат да бъдат по-мощни от предишните. В случая с Phantom (CVE-2022-23825), може да се създаде преходен прозорец с произволни инструкции. Това означава, че инструкции (като изключително или или XOR) могат да се използват като инструкция за повикване и да създават допълнителни преходни прозорци. След това това се използва за препълване на буфера на стека за връщане.
Какво можеш да направиш?
В момента не можете да направите много неща и дори в случая на AMD е трудно да се каже какво всъщност могат да направят по въпроса. За да смекчи напълно въздействието си, AMD ще трябва да изчисти предиктора на марката, докато превключва между контексти, което може да бъде невероятно скъпо за производителността.
AMD предложи различно смекчаване и такова, което го прави така, че AMD е избрала всички непреки клонове принудително да погрешно предсказват до доброкачествено местоположение. Въпреки това, докато не се пуснат корекции, вашият хардуер ще бъде податлив.
А хартия относно Inception ще бъде представен на Сигурност на USENIX 2023 и а хартия относно спекулациите с Phantom ще бъдат представени на МИКРО 2023. Можете да прочетете тези документи, за да научите повече за експлойта.