Ако бъдат използвани, тези пропуски могат да позволят на нападателите да получат неоторизиран достъп до чувствителна информация или като цяло да причинят проблеми
Преди няколко дни разкрива група изследователи чрез публикация в блог, информация за уязвимост които са открили (вече са каталогизирани под CVE-2023-20569) и засягат процесорите на AMD, базирани на микроархитектурите EPYC и Ryzen.
Споменава се, че уязвимостта, с ключова дума "Inception", позволява на непривилегирован локален потребител да определя съдържанието на паметта на процесите от други потребители при използване на системи за виртуализация, което основно позволява извличане на информация от други системи за гости.
Какво е Inception и как се използва?
За В началото се споменава, че тази уязвимост е комбинация от:
- Призрачни спекулации: можем да задействаме грешна прогноза без никакви разклонения в източника на грешната прогноза.
- Обучение за преходно изпълнение: Можем да манипулираме бъдещи грешни прогнози чрез предишна грешна прогноза, която сме задействали.
като с него е възможно да се генерира препълване на стека на адреси за връщане (RAS) в структура, която се актуализира в спекулативен режим на етап, в който процесорът само предвижда възможно извикване на инструкцията CALL.
RAS стекът има фиксиран размер и е кръгъл, т.е. зацикля и след последния елемент се променя към началото. Нападателят може да създаде условия, при които предикторът на разклонения спекулативно изпълнява голям брой неправилно предвидени CALLs, достатъчно, за да препълни RAS стека и да презапише правилно предвидените точки за връщане, поставени в горната част на стека.
В резултат на това, началните елементи на стека могат да бъдат презаписани с избрани стойности от нападателя, което след това ще доведе до използването на тези заменени стойности по време на спекулативното изпълнение на RET инструкцията в контекста на друг процес.
Споменава се, че след това процесорът ще определи, че прогнозата за разклоняване е неоправдана и ще върне операцията в първоначалното й състояние, но данните, обработени по време на спекулативното изпълнение, ще седят в кеша и буферите на микроархитектурата. Ако погрешно изпълнен блок извърши достъп до паметта, тогава спекулативното му изпълнение ще доведе до инсталиране в общия кеш и четене на данни от паметта.
Уязвимостта Phantom се използва за „отравяне“ на прогнозата за клона (CVE-2022-23825), идентифициран от същите изследователи, което позволява създаване на условия за предсказване на фиктивно разклоняване без инструкциите за разклоняване и повлияване на буфера за предсказване на разклоненията без инструкцията „ret“.
За иницииране на грешна прогноза и препълване на RAS стека се използва обичайната инструкция XOR, чийто ефект върху буфера за прогнозиране на разклонения по време на фантомна атака е подобен на рекурсивно извикване на инструкцията CALL. За контролирано заместване на необходимата стойност в началото на RAS стека се предлага методът TTE (Training in Transient Execution), който позволява да се повлияе на бъдещото прогнозиране на преходи от предишни грешни прогнози.
Струва си да се спомене това за демонстрацията изследователите са подготвили експлойт който може да се използва от непривилегирован локален потребител за хеширане на паролата на root потребителя, съхранена във файла /etc/shadow и заредена в паметта при удостоверяване в системата.
Атаката беше демонстриран на напълно надстроена система Ubuntu 22.04 с ядро 5.19 на компютър с процесор от фамилията AMD Zen 4. Производителността на експлойта при изтичане на данни е 39 байта в секунда. Съдържанието на /etc/shadow беше успешно определено при 6 от 10 опита за използване на уязвимостта. Всеки опит отне около 40 минути.
Както вече беше споменато в началото, Inception засяга процесори, базирани на микроархитектурите EPYC и Ryzen, от които микроархитектурите Zen1 и Zen2, IBPB базирана на инструкции защита (използвана за защита срещу Spectre атаки), могат да се използват за блокиране на проявата на уязвимост . Докато за процесорите от семейството Zen3 и Zen4 няма корекции на защитата и е необходима актуализация на микрокод, за да се блокира уязвимостта в тях.
И накрая, споменава се, че Inception поправя и актуализация на фърмуера вече са включени в последните версии на ядрото на Linux, въпреки че след разпространението на корекциите беше предложена и по-ефективна преработена версия на корекциите, които досега не бяха приети в ядрото.
Ако се интересувате да научите повече за това, можете да се консултирате с подробности в следваща връзка.