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