Retbleed — нова атака към механизма за спекулативно изпълнение на CPU Intel и AMD

Група изследователи от Швейцарския федерален институт по технологии Цюрих откри нов вариант на атака към механизма за спекулативно изпълнение на косвени преходи в CPU, който позволява извличането на информация от ядрото или организирането на атака срещу хост-системата от виртуални машини. Уязвимостите получиха кодовото име Retbleed (CVE-2022-29900, CVE-2022-29901) и са подобни по същество на атаките Spectre-v2. Разликата е в организирането на спекулативно изпълнение на произволен код при обработка на инструкцията „ret“ (return), която извлича адреса за преход от стека, вместо косвен преход с инструкцията „jmp“, при който адресът се зарежда от паметта или CPU регистра.

Атакуващият може да създаде условия за неправилно предсказване на прехода и да организира целенасочен спекулативен преход към блок код, който не е предвиден от логиката на изпълнение на програмата. В крайна сметка, процесорът ще определи, че предсказването на разклонението не е оправдано и ще върне операцията в първоначалното си състояние, но данните, обработени по време на спекулативното изпълнение, ще останат в кеша и микроархитектурните буфери. Ако неправилно изпълненият блок извършва достъп до памет, неговото спекулативно изпълнение ще доведе до оседналение в общия кеш и данни, прочетени от паметта.

За определяне на данните, останали в кеша след спекулативното изпълнение на операции, атакуващият може да използва методи за определяне на остатъчни данни по странични канали, например, да анализира промените в времето за достъп до кеширани и некеширани данни. За целенасочено извличане на информация от области на друг ниво привилегии (например, от ядрото на паметта) се използват „гаджети“ — налични в ядрото последователности от команди, подходящи за спекулативно четене на данни от паметта в зависимост от външни условия, на които атакуващият може да влияе.

За защита от класическите атаки от класа Spectre, в които се използват инструкции за условен и косвен преход, в повечето операционни системи се прилага техниката "retpoline", основана на замяната на операциите за косвен преход с инструкция "ret", за която в процесорите се използва отделен блок за предсказване на състоянието на стека, не използващ блока за предсказване на преходи. При внедряването на retpoline през 2018 г. се считаше, че манипулации, подобни на Spectre, с адреси не могат да се прилагат в практиката за спекулативен преход чрез инструкция "ret".

Изследователите, разработили метода на атаката Retbleed, демонстрираха възможността за създаване на микроархитектурни условия за иницииране на спекулативен преход чрез инструкция "ret" и публикуваха готов инструментариум за идентифициране в ядрото на Linux подходящи за експлоатация уязвимости (гаджети), в които се проявяват подобни условия.

По време на изследването е подготвен работещ експлоит, който позволява на системи с CPU Intel от непривилегирован процес в потребителското пространство да извлича произволни данни от паметта на ядрото със скорост 219 байта в секунда и точност 98%. На процесорите AMD ефективността на експлоита е много по-висока — скоростта на изтичане е 3.9 КБ в секунда. Като практически пример е показано как с предложеното експлоит може да се определи съдържанието на файла /etc/shadow. На системи с CPU Intel атаката за определяне на хеша на паролата на потребителя root е проведена за 28 минути, а на системи с CPU AMD — за 6 минути.

Възпроизведи видео

Възможността за извършване на атака е потвърдена за 6-8 поколение процесори Intel, произведени до третото тримесечие на 2019 година (включително Skylake), и процесори AMD на базата на микроархитектури Zen 1, Zen 1+ и Zen 2, произведени до второто тримесечие на 2021 година. В по-новите модели процесори, като AMD Zen3 и Intel Alder Lake, а също и в процесори ARM, проблемът е блокиран от наличните защитни механизми. Например, използването на инструкциите IBRS (Indirect Branch Restricted Speculation) помага за защита от атаката.

За ядрото Linux и хипервизора Xen е подготвен набор от промени, които при стари CPU блокират проблема софтуерно. Предложената пач за ядрото Linux променя 68 файла, добавя 1783 реда и премахва 387 реда. За съжаление, защитата води до значителни допълнителни разходи — проведените тестове на процесори AMD и Intel показват спад на производителността в диапазона от 14% до 39%. По-предпочитано е прилагането на защита, основана на инструкции IBRS, налични в новите поколения CPU Intel и поддържани от ядро Linux 4.19.

На процесорите Intel заместването на адреса за спекулативен косвен преход се реализира благодарение на особеност, която се проявява при преливане през долната граница (underflow) в буфера за предсказване на съдържанието на стека (Return Stack Buffer). При възникване на подобни условия логиката за избор на адрес за инструкциите ‘ret’ започва да се прилага, аналогично на това, което се използва при обикновените косвени преходи. В ядрото Linux са намерени над хиляда места, създаващи условия за инициране на подобно обратно преливане, достъпни чрез системни повици.

На процесорите AMD спекулативното изпълнение на инструкциите ‘ret’ се осъществява без привързване към специфичния за стека буфер (Return Address Stack) и блокът за предсказване на преходи разглежда инструкциите ‘ret’ не като връщане на управлението, а като косвен преход и, съответно, използва данни за косвените преходи при предсказването. При подобни условия фактически всяка операция ‘ret’, достижима чрез системен повик, може да се използва за експлоатация.

Допълнително, в CPU AMD е идентифициран още един проблем (CVE-2022-23825, Branch Type Confusion), свързан с извършването на фиктивни преходи — условията за предсказване на прехода могат да възникнат дори и без необходимите инструкции за клониране, което позволява да се влияе на буфера за предсказване на преходи без инструкция ‘ret’. Тази особеност значително усложнява реализирането на защита и изисква по-активно почистване на буфера за предсказване на преходи. Очаква се, че добавянето на пълна защита в ядрото ще доведе до увеличение на разходите с 209%.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster