Уязвимости ЦП с временным выполнением — это уязвимости в компьютерной системе, в которых оптимизация спекулятивного выполнения, реализованная в микропроцессоре , используется для утечки секретных данных неавторизованной стороне. Классический пример — Spectre , давший название этому типу атак по сторонним каналам , но с января 2018 года было выявлено множество различных уязвимостей.
Современные компьютеры представляют собой высокопараллельные устройства, состоящие из компонентов с очень разными характеристиками производительности. Если операция (например, ветвь) еще не может быть выполнена, потому что какая-то более ранняя медленная операция (например, чтение памяти) еще не завершена, микропроцессор может попытаться предсказать результат более ранней операции и спекулятивно выполнить более позднюю операцию., действуя так, как если бы предсказание было верным. Прогноз может быть основан на недавнем поведении системы. Когда предыдущая, более медленная операция завершается, микропроцессор определяет, был ли прогноз правильным или неправильным. Если это было правильно, то выполнение продолжается непрерывно; если она была неверной, то микропроцессор откатывает спекулятивно выполненные операции и повторяет исходную инструкцию с реальным результатом медленной операции. В частности, переходная инструкция [1] относится к инструкции, обработанной процессором по ошибке (обличающей предсказатель ветвления в случае Spectre ), которая может повлиять на микроархитектурное состояние процессора, оставив архитектурное состояние без каких-либо следов его исполнение.
С точки зрения непосредственно видимого поведения компьютера это выглядит так, как будто спекулятивно выполненный код «никогда не случался». Однако это спекулятивное выполнение может повлиять на состояние определенных компонентов микропроцессора, таких как кэш -память , и этот эффект можно обнаружить путем тщательного отслеживания времени последующих операций.
Если злоумышленник может организовать так, чтобы спекулятивно исполняемый код (который может быть написан непосредственно злоумышленником или может быть подходящим гаджетом , который он нашел в целевой системе) работает с секретными данными, к которым у него нет несанкционированного доступа, и имеет другую воздействие на кеш для различных значений секретных данных, они могут быть в состоянии обнаружить значение секретных данных.
Начиная с 2017 года было выявлено несколько примеров таких уязвимостей, публикация которых началась в начале 2018 года.
В марте 2021 года исследователи безопасности AMD обнаружили, что алгоритм Predictive Store Forwarding в процессорах Zen 3 может использоваться вредоносными приложениями для доступа к данным, к которым им не следует обращаться. [2] Согласно Phoronix, отключение этой функции мало что дает. [3]
В июне 2021 года были обнаружены две новые уязвимости, Speculative Code Store Bypass (SCSB, CVE-2021-0086 ) и Injection Floating Point Value Injection (FPVI, CVE-2021-0089 ), затрагивающие все современные процессоры x86-64 как Intel, так и AMD . . [4] Чтобы уменьшить их, программное обеспечение должно быть переписано и перекомпилировано. SCSB не влияет на процессоры ARM, но на некоторые определенные архитектуры ARM влияет FPVI. [5]
В августе 2021 года не была раскрыта уязвимость под названием «Временное выполнение неканонических доступов», затрагивающая некоторые процессоры AMD. [6] [7] [8] Требуются те же меры по снижению риска, что и для уязвимости MDS, затрагивающей некоторые процессоры Intel. [9] Ему присвоен код CVE-2020-12965 . Поскольку большая часть программного обеспечения x86 уже защищена от MDS и для этой уязвимости предусмотрены точно такие же средства устранения, поставщикам программного обеспечения не нужно устранять эту уязвимость.
В октябре 2021 года впервые была обнаружена уязвимость, аналогичная Meltdown [10] [11] , затрагивающая все процессоры AMD, однако компания не считает, что необходимо применять какие-либо новые меры по снижению риска, а существующих уже достаточно. [12]
В марте 2022 года был раскрыт новый вариант уязвимости Spectre под названием Branch History Injection. [13] [14] Это затрагивает некоторые процессоры ARM64 [15] и следующие семейства процессоров Intel: Cascade Lake , Ice Lake , Tiger Lake и Alder Lake . По словам разработчиков ядра Linux, процессоры AMD также затронуты. [16]
В марте 2022 года под кодом CVE-2021-26341 была раскрыта уязвимость, затрагивающая широкий спектр процессоров AMD . [17] [18]
В июне 2022 года было объявлено о нескольких уязвимостях процессоров Intel MMIO , связанных с выполнением в виртуальных средах . [19] Были обозначены следующие CVE: CVE-2022-21123 , CVE-2022-21125 , CVE-2022-21166 .
В июле 2022 года была обнаружена уязвимость Retbleed, затрагивающая процессоры Intel Core 6–8-го поколения и процессоры AMD Zen 1, 1+ и 2 поколения. Новые микроархитектуры Intel, а также AMD, начиная с Zen 3, не затрагиваются. Устранение уязвимости снижает производительность уязвимых процессоров Intel до 39%, а процессоров AMD — до 14%.
Уязвимости класса Spectre останутся неисправленными, потому что в противном случае разработчикам ЦП придется отключать OoOE , что повлечет за собой массовую потерю производительности. [ нужна ссылка ]
Тип смягчения | Полнота | Эффективность | Влияние на производительность |
---|---|---|---|
Аппаратное обеспечение | Полный | Полный | Нет… Маленький |
Обновление микрокода прошивки | Частичный | Частичный… Полный | Нет… Большой |
ОС/ВММ | Частичный | Частичный… Полный | Маленький большой |
Перекомпиляция программного обеспечения | Бедный | Частичный… Полный | Средний… Большой |
Аппаратные меры по снижению риска требуют изменения конструкции ЦП и, следовательно, новой версии оборудования, но приводят к почти нулевой потере производительности. Обновления микрокода изменяют программное обеспечение, на котором работает ЦП, требуя выпуска и интеграции исправлений в каждую операционную систему и для каждого ЦП. Меры по снижению риска для ОС/VMM применяются на уровне операционной системы или виртуальной машины и (в зависимости от рабочей нагрузки) часто приводят к значительному снижению производительности. Перекомпиляция программного обеспечения требует перекомпиляции каждой части программного обеспечения и обычно приводит к серьезному снижению производительности.
Имя уязвимости (псевдонимы) | CVE | Затронутые архитектуры ЦП и способы устранения | ||||||
---|---|---|---|---|---|---|---|---|
Интел [20] | АМД [21] | |||||||
Ледяное озеро [22] | Каскадное озеро , Кометное озеро | Виски Лейк , Эмбер Лейк | Кофейное озеро (9-е поколение) [23] | Кофейное озеро (8-е поколение)* | Дзен 1 / Дзен 1+ | Дзен 2 [24] | ||
Обход проверки границ Spectre v1 | 2017-5753 | Перекомпиляция программного обеспечения | Перекомпиляция программного обеспечения [25] | |||||
Внедрение целевой ветви Spectre v2 | 2017-5715 | Аппаратное обеспечение + ОС | Микрокод + ОС | Микрокод + ОС | Микрокод + ОС/ВММ | Аппаратное обеспечение + ОС/VMM | ||
SpectreRSB [26] / ret2spec [27] Возвращает неверное предсказание | 2018-15572 | ОС [28] | ||||||
Загрузка мошеннического кэша данных Meltdown | 2017-5754 | Не затронут | Микрокод | Не затронут | ||||
Спектр-НГ v3a | 2018-3640 | Не влияет [29] | Микрокод | |||||
Обход спекулятивного магазина Spectre-NG v4 | 2018-3639 | Аппаратное обеспечение + ОС/VMM [29] | Микрокод + ОС | ОС/ВММ | Аппаратное обеспечение + ОС/VMM | |||
Ошибка терминала Foreshadow L1 , L1TF | 2018-3615 | Не затронут | Микрокод | Не затронут | ||||
Spectre-NG Ленивое восстановление состояния FP | 2018-3665 | ОС/ВММ [30] | ||||||
Spectre-NG v1.1 Проверка границ Обход магазина | 2018-3693 | ОС/ВММ [31] | ||||||
Spectre-NG v1.2 Обход защиты только для чтения (RPB) | — | Нет CVE и никогда не было подтверждено Intel | Не влияет [21] | |||||
Ошибка терминала Foreshadow-OS L1 (L1TF) | 2018-3620 | Не затронут | Микрокод + ОС | Не затронут | ||||
Ошибка терминала Foreshadow-VMM L1 (L1TF) | 2018-3646 | |||||||
Выборка данных буфера заполнения микроархитектуры RIDL/ZombieLoad (MFBDS) | 2018-12130 | |||||||
Выборка данных порта нагрузки микроархитектуры RIDL (MLPDS) | 2018-12127 | Не затронут | Не влияет [1] | Не затронут | Микрокод + ОС [32] | |||
Некэшируемая память выборки данных микроархитектуры RIDL (MDSUM) | 2019-11091 | Не затронут | Микрокод + ОС | |||||
Выборка данных буфера хранилища микроархитектуры Fallout (MSBDS) | 2018-12126 | Микрокод [33] [34] | Не влияет [2] | Не затронут | Микрокод + ОС | |||
ОБМЕН ПРИЗРАКАМИ [35] [36] [37] | 2019-1125 | То же, что и Спектр 1 | ||||||
RIDL/ZombieLoad v2 Асинхронное прерывание транзакций (TAA) [38] [39] [40] | 2019-11135 | Не затронуто [41] | Микрокод + ОС | |||||
RIDL/CacheOut L1D Выборка вытеснения (L1DES) [42] [43] [44] | 2020-0549 | Не затронут | ||||||
Выборка векторного регистра RIDL (VRS) [42] [43] | 2020-0548 | |||||||
Ввод значения нагрузки (LVI) [45] [46] [47] [48] | 2020-0551 | Перекомпиляция программного обеспечения | ||||||
Пройди путь [49] [50] | — | Не затронут | Еще не исправлено (оспаривается [51] ) [52] | |||||
Выборка данных буфера специального регистра CROSSTalk (SRBDS) [53] [54] [55] | 2020-0543 | Не затронут | Микрокод | Не затронут | ||||
Слепая сторона [56] | — | Нет CVE, полагается на неисправленные системы. [57] [ оспаривается | ]||||||
Внедрение истории ветвей (BHI) | 2022-0001 2022-0002 | Микрокод + перекомпиляция ПО | Не затронут | |||||
Кровотечение Герц [58] [59] [60] | 2022-24436 2022-23823 | Модификации программного обеспечения | ||||||
Повторное кровотечение [61] [62] [63] [64] [65] | 2022-29900 2022-29901 | Не затронут | Перекомпиляция программного обеспечения |
Архитектура Coffee Lake 8-го поколения в этой таблице также применима к широкому спектру ранее выпущенных процессоров Intel, не ограничиваясь архитектурами на базе Intel Core , Pentium 4 и Intel Atom , начиная с Silvermont . [66] [67] Различные микроархитектуры ЦП, не включенные выше, также затронуты, среди них IBM Power , ARM , MIPS и другие. [68] [69] [70] [71]
Процессоры Intel, выпущенные ранее Ice Lake, например Rocket Lake и Tiger Lake , не подвержены влиянию Fallout/MSBDS.
{{cite web}}
: CS1 maint: URL-статус ( ссылка ){{cite web}}
: CS1 maint: URL-статус ( ссылка ){{cite web}}
: CS1 maint: URL-статус ( ссылка ){{cite web}}
: CS1 maint: URL-статус ( ссылка ){{cite web}}
: CS1 maint: URL-статус ( ссылка )