Предложено два метода организации атаки. Первый способ основан на искажении содержимого буфера предсказания косвенных переходов IBP (Indirect Branch Predictor), используемого для предсказания косвенных переходов в условиях, когда адрес или смещение для перехода ещё не известны и вычисляются в инструкциях, предшествующих инструкции перехода. Второй метод затрагивает буфер предсказания переходов BTB (Branch Target Buffer), содержащий информацию о недавних переходах.
![](https://www.opennet.ru/opennews/pics_base/CFD0C5CECEC5D4_1720076669.png)
![](https://www.opennet.ru/opennews/pics_base/CFD0C5CECEC5D4_1720075555.png)
Выявленные уязвимости дают возможность атакующему определить содержимое записей в буферах IBP и BTB, содержащие адреса переходов, используемые в сторонних процессах, а также осуществить подстановку произвольного адреса перехода в таблицы данных буферов. В итоге атакующий может добиться перенаправления потока выполнения стороннего процесса на желаемый адрес в памяти в ходе спекулятивного выполнения инструкций. После определения ошибочного прогноза результат спекулятивного выполнения отбросится, но адреса и данные, считанные из памяти в процессе спекулятивного выполнения инструкций, осядут в кэше и их можно будет извлечь, воспользовавшись одним из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным. Определение точных адресов косвенных переходов на практике, например, можно использовать для обхода механизма защиты ASLR.
Источник: http://www.opennet.ru/opennews/art.shtml?num=61487