TONTOU — атака на CPU Intel и AMD, която преодолява защитата от уязвимостите Spectre v2

Изследователи от Масачузетския технологичен институт откриха нападателна техника TONTOU (Time-of-Neutralization to Time-of-Use), която предлага нов начин за експлоатация на микроархитектурни уязвимости от клас Spectre v2. Уязвимостта позволява да се определи съдържанието на паметта на ядрото при изпълнение на експлойт в пространството на потребителя. Кодът за блокиране на експлоатацията на уязвимостта беше приет в състава на ядрото Linux на 5 август и включен в версиите 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 и 5.10.263.

Изследователите демонстрираха възможността за извършване на нападение от локален непривилегиран потребител за определяне на хеша на паролата на потребителя root, съхраняван в файла /etc/shadow и зареден в паметта по време на аутентификация в системата. Успяха да постигнат изтичане на данни от паметта на ядрото със скорост от 5.47 байта в секунда и точност от 91.97%. При 10 тестови изпълнения на експлойта, които средно продължаваха 18 минути, в половината случаи успяха успешно да определят наличието на файла /etc/shadow в паметта и да извлекат съдържанието му.

Експлойтът беше демонстриран на системи с процесори AMD и може да се прилага с CPU AMD от семействата Zen 1-4. На системи с Intel атаката също е възможна, но експлоатацията е по-сложна. За защита от преливане на стека адреси за връщане и блокиране на уязвимостта SRSO (Speculative Return Stack Overflow) в процесорите AMD се използва механизъм за защита Safe-RET, който очиства буфера за предсказване на преходи след всяко използване и стеснява прозореца за нападение до 2 инструкции, изпълнявани за няколко десетки наносекунди.

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

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

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

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