Вкратце: Удаленная атака (чтение произвольной памяти), не требующая запуска локального кода, утаскивает 15/60 бит в час. Использует идею, что latency чтения из памяти влияет на latency любого сетевого запроса. Нужно только усреднять по большому числу запросов, чтобы определить разницу. Полный трындец безопасности
BACKGROUND
Последовательное и непоследовательное + спекулятивное исполнение. Прерывания в pipeline -> отбрасывание результатов.
Предсказание переходов - один из примеров использования Спекулятивного вычисления
Side channel атака - это атака, основанная на дополнительном знании о строении компьютерной системы, а не о самой программе. Время выполнения команд, строение кэш-системы, потребление энергии, электромагнитное излучение, звуки вентилятора, и пр.
Атаки на кэш используют разницу во времени холодного и горячего считывания кэша.
Spectre: это side channel атака, использующая спекулятивное исполнение и тайминги доступа к кэшу.
Spectre: Не будет работать, если перейти на последовательное исполнение.
Spectre1 не будет пофикшен в ближайших поколениях CPU (в отличие от meltdown и Spectre2)
ATTACK OVERVIEW
Два гаджета: Leak gadget и transmit gadget
Leak гаджет (утечка) читает битовый поток по индексу, который контролирует атакующий и меняет какое-то микроархитектурное состояние в зависимости от прочитанного бита.
Transmit gadget выполняет действия, зависящие от этого состояния (превращает микроархитектурное состояние в значение для атакующего)
transmit гаджет может просто возвращать сам флаг. Его значение - не важно, важно время, когда ответ был отдан.
leak/transmit гаджеты могут работать на разных интерфейсах (оба должны быть доступны для атакующего)
Гаджеты могут быть в UserSpace/KernelSpace, атаки будут отличаться
Большинство сетевых драйверов - работают в KernelSpace -> Если в драйвере есть NetSpectre Gadget -> можно утащить любой бит в памяти
Большинство пакетов в дальнейшем идет в приложение в UserSpace, огромное поле приложений (Web, FTP, SSH, …).
Могут быть атакованы и клиентские машины, когда вы подключаетесь к серверу!!!
REMOTE COVERT CHANNEL
Covert Channel attack (атака скрытого канала). Канал передачи информации, скрытый от всех, не предназначенный:
Timing Channels - передавать, используя временные задержки
Remote cache covert channel. Thrasр+Reload (атака) - удалить весь кэш последнего уровня. Скачивание 590kb file -> 99% вероятность удалить переменную из кэша.
Remote AVX-based covert channel. AVX2 требует прогрева, добавляет 0.5ms
ATTACK VARIANTS
Вытаскивание данных из памяти:
натренировать предсказатель переходов
занулить состояние микроархитектурного компонента
вытащить бит в микроархитектурный компонент
вытащить бит из микроархитектурного компонента в сеть
Сломать ASLR (address space layout randomization), что в дальнейшем может использоваться для других атак
меньшие требования к leak gadget => больше вариантов гаджетов