SLAM — атака на CPU Intel, AMD и ARM, която позволява да се определи съдържанието на паметта

Група изследователи от Свободния университет в Амстердам представи нова техника за атака SLAM (Spectre Linear Address Masking), предлагаща нов начин за експлоатация на микроархитектурни уязвимости от клас Spectre, при която изтичането на данни се извършва по време на транслацията на неканонични адреси, а за заобикаляне на проверките за каноничност се използват предлаганите в новите процесори разширения за маскиране на линейни адреси. Изследователите публикуваха инструментариум с реализация на метода и предложиха демонстрация, показваща как може да бъде извлечен от паметта на ядрото данни, отговарящи на определена маска (показано е как за няколко десетки секунди в Ubuntu да се извлече от паметта на ядрото низ с хеш на паролата на потребителя root).

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

Атаката може да бъде извършена на системи с процесори Intel, поддържащи разширението LAM (Linear Address Masking), процесори AMD с разширение UAI (Upper Address Ignore) и ARM процесори с разширение TBI (Top Byte Ignore). Указаните разширения позволяват да се използва част от битовете на 64-битови указатели за съхраняване на несвързани с адресацията метаданни (за обикновени програми не е необходима толкова памет, че да могат да адресират 64-битови указатели, затова горните битове могат да бъдат използвани, например, за проверки, свързани със сигурността). Интересно е, че процесорите Intel, AMD и ARM с поддръжка на LAM, UAI и TBI все още са само анонсирани, но не се произвеждат масово, което прави SLAM първата спекулативна атака върху бъдещите CPU. Атаката също така може да бъде извършена на по-стари CPU AMD Zen+ и Zen 2, подлежащи на уязвимостта CVE-2020-12965.

По аналогия с експлоатацията на уязвимости Spectre, за осъществяване на атаката SLAM е необходимо наличието в ядрото на определени последователности от инструкции (гаджети), водещи до спекулативно изпълнение на инструкциите. Подобни инструкции водят до спекулативно четене на данни от паметта в зависимост от външни условия, на които атакуващият може да влияе. След определяне на неправилен прогнозен резултат, резултатът от спекулативното изпълнение се отхвърля, но обработените данни остават в кеша и могат след това да бъдат извлечени чрез анализ по странични канали. За извличането на останалите в кеша данни, изследователите използват метода Evict+Reload, основан на създаването на условия за изтласкване на данните от кеша (например, създаване на активност, равномерно запълваща кеша с типично съдържание) и изпълнението на операции, времето за изпълнение на които позволява да се съди за наличието на данни в процесорния кеш.

За извършване на атака SLAM се използват гаджети на база на код, в който контролируемите от атакуващия данни (по-долу променливата „secret“) се използват като указател. Например: void unmasked_gadget(long **secret) { **secret; }

Отбелязва се, че подобни шаблони на код често се използват в програми, например, в ядрото на Linux са идентифицирани десетки хиляди такива гаджети, от които минимум няколко стотин са подходящи за употреба в експлоити. Изтичането може да бъде блокирано чрез добавяне на допълнителни инструкции в подобни гаджети, които блокират спекулативното изпълнение. Компанията Intel има намерение да предостави софтуерен метод за блокиране на изтичането преди започване на доставките на процесори с поддръжка на LAM. Компанията AMD препоръчва да се използват съществуващите методи за блокиране на атаки от клас Spectre v2. Разработчиците на ядрото на Linux решиха да деактивират по подразбиране поддръжката на LAM до публикуването на препоръки от Intel за блокиране на уязвимостта.

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

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