Проектът наскоро Grsecurity стана известен чрез публикация подробности и демо метод за атака за нова уязвимост (вече е посочено като CVE-2021 26341-) на процесори AMD, свързани с изпълнението на спекулативни инструкции след безусловни операции за прескачане напред.
Уязвимост позволява на процесора да обработва спекулативно инструкцията непосредствено след инструкцията за скок (SLS) в паметта по време на спекулативно изпълнение. В същото време такава оптимизация работи не само за оператори за условно прескачане, но и за инструкции, които включват директен безусловен скок, като JMP, RET и CALL.
Безусловните инструкции за разклоняване могат да бъдат последвани от произволни данни, които не са предназначени за изпълнение. След като определи, че клонът не включва изпълнение на следващото изявление, процесорът просто връща състоянието и игнорира спекулативното изпълнение, но проследяването на изпълнението на инструкциите остава в общия кеш и е достъпно за анализ, използвайки методи за извличане на страничния канал.
AMD предоставя актуализация за препоръчително смекчаване, G-5, в бялата книга „Софтуерни техники за управление на спекулации в процесори на AMD“. Смекчаването на G-5 помага за справяне с потенциалните уязвимости, свързани със спекулативното поведение на инструкциите за клонове.
Процесорите на AMD могат временно да изпълняват инструкции след безусловно пренасочване, което може да доведе до активност на кеша
Както при експлоатацията на Spectre-v1, атаката изисква наличието на определени последователности на инструкции (джаджи) в ядрото, което води до спекулативно изпълнение.
В този случай блокирането на уязвимост се свежда до идентифициране на такива устройства в кода и добавяне на допълнителни инструкции към тях, които блокират спекулативното изпълнение. Условия за спекулативно изпълнение могат също да бъдат създадени с помощта на непривилегировани програми, работещи на виртуалната машина eBPF.
Това разследване доведе до откриването на нова уязвимост, CVE-2021-26341 [1] , които ще обсъдим подробно в тази статия. Както обикновено, ще се съсредоточим върху техническите аспекти на уязвимостта, смекчаването, предложено от AMD, и аспектите на експлоатация.
За да блокирате възможността за изграждане на устройства с помощта на eBPF, препоръчително е да деактивирате непривилегирования достъп до eBPF в системата ("sysctl -w kernel.unprivileged_bpf_disabled=1").
Уязвимостта засяга процесори, базирани на микроархитектурата Zen1 и Zen2:
Бюро
- Процесор AMD Athlon™ X4
- Процесор AMD Ryzen™ Threadripper™ PRO
- XNUMX-ро поколение процесори AMD Ryzen™ Threadripper™
- Трето поколение процесори AMD Ryzen™ Threadripper™
- APU от XNUMX-мо поколение AMD от серия A
- Процесори за настолни компютри AMD Ryzen™ 2000 серия
- Процесори за настолни компютри AMD Ryzen™ 3000 серия
- Процесори за настолни компютри AMD Ryzen™ 4000 серия с Radeon™ Graphics
Подвижен
- Мобилен процесор AMD Ryzen™ 2000 Series
- Мобилни процесори от серия AMD Athlon™ 3000 с графика Radeon™
- Мобилни процесори от серия AMD Ryzen™ 3000 или XNUMX-ро поколение мобилни процесори AMD Ryzen™ с графика Radeon™
- Мобилни процесори от серия AMD Ryzen™ 4000 с графика Radeon™
- Мобилни процесори от серия AMD Ryzen™ 5000 с графика Radeon™
Chromebook
- Мобилни процесори AMD Athlon™ с графика Radeon™
сървър
- Първо поколение процесори AMD EPYC™
- XNUMX-ро поколение процесори AMD EPYC™
Споменава се, че ако атаката е успешна, уязвимостта позволява да се определи съдържанието на произволни области на паметта.
Поради тази уязвимост може да е възможно да се идентифицират доброкачествени кодови конструкции, които образуват ограничени, но потенциално експлоатируеми SLS устройства на засегнатите процесори. Както е показано с примера на eBPF, също така е възможно да се използва уязвимостта с ръчно изградени, самостоятелно инжектирани устройства. Представеният метод може да се използва например за нарушаване на KASLR смекчаването на ядрото на Linux.
Например, изследователите са подготвили експлойт, който ви позволява да определите оформлението на адреса и да заобиколите механизма за защита на KASLR (рандомизиране на паметта на ядрото), като изпълните код без привилегии в подсистемата на ядрото eBPF, в допълнение към други сценарии за атака, които биха могли да изтекат не е изключено съдържанието на паметта на ядрото.
Накрая ако се интересувате да научите малко повече за това, можете да проверите подробностите В следващия линк.