Уязвимость процессора, связанная с временным исполнением
Уязвимость процессора, связанная с временным исполнением (англ. transient execution CPU vulnerability) — класс уязвимостей, при которых процессор временно исполняет инструкции, как правило, оптимизированные с помощью спекулятивного исполнения, но не завершает их из-за ошибки предсказания или иной ошибки. Это приводит к утечке секретных данных неавторизованным лицам. Архетипом подобных атак является уязвимость Spectre, а атаки временного исполнения относятся к категории атак на кэш, являющихся одной из разновидностей атак через побочные каналы (помимо кэша, побочными каналами также могут выступать планировщики, порты исполнения и управляющие регистры)[1][2]. С января 2018 года было выявлено множество различных уязвимостей, связанных с кэшем[3].
Обзор
Современные компьютеры являются высокопараллельными устройствами, состоящими из компонентов с разным быстродействием. Если какая-либо операция (например, ветвление) пока не может быть выполнена из-за незавершённости более медленной (например, чтения из памяти), процессор может попытаться предсказать результат медленной операции и исполнять последующие инструкции спекулятивно, действуя так, словно предсказание оказалось верным. Для предсказания могут использоваться данные о предыдущем поведении системы. После завершения медленной операции процессор определяет, было ли предсказание верным. В случае успеха исполнение продолжается без прерываний; в случае ошибочного предсказания процессор отменяет спекулятивно выполненные действия и повторяет исходную инструкцию с реальным результатом. Временной инструкцией называют инструкцию, ошибочно обработанную процессором (например, вследствие некорректной работы блока предсказания переходов, как в случае Spectre), которая может изменить микроархитектурное состояние процессора, не оставив следов в архитектурном состоянии[3].
Для непосредственно наблюдаемого поведения компьютера спекулятивно исполняемый код как бы «никогда не запускался». Тем не менее, такое исполнение может воздействовать на внутреннее состояние некоторых компонентов процессора, например, кэша, и эти изменения можно обнаружить, анализируя время выполнения последующих операций.
Если злоумышленник может организовать спекулятивное выполнение кода (напрямую написанного им или представляющего собой отделённый фрагмент целевой системы), который работает с секретными данными, и воздействует на кэш по-разному в зависимости от значения этих данных, возможно утечка этих данных через побочные эффекты.
Каналами утечки также могут служить механизмы пересылки данных и планировщики процессора, как в случае атак класса Transient Scheduler Attacks (TSA), позволяющие обходить защиту кэша. Подобные методы дают возможность извлекать конфиденциальные данные, эксплуатируя микроархитектурные уязвимости в логике планировщика и кэш-памяти первого уровня[4]. При этом классификация таких атак (как Spectre-подобных или Meltdown-подобных) остаётся дискуссионной[5].
Хронология
2018
В начале января 2018 года было сообщено, что практически все процессоры Intel начиная с 1995 года[6] (кроме Intel Itanium и Intel Atom, выпущенных до 2013 года) подвержены двум уязвимостям, получившим названия Meltdown и Spectre[7][8]. Влияние патчей на производительность оказалось «зависимым от нагрузки». Были опубликованы рекомендации по защите домашних компьютеров и других устройств от уязвимостей Spectre и Meltdown[9][10][11][12]. Отмечено существенное снижение производительности при установке патчей для Spectre, особенно на старых компьютерах: на новых платформах 8-го поколения Core зафиксировано падение производительности на 2-14 %[13]. Патчи для Meltdown также могут приводить к потере производительности[14][15]. По некоторым оценкам, «сотни миллионов» систем могут быть затронуты этими уязвимостями[16]. Дополнительные уязвимости были раскрыты 3 мая 2018 года[17], 14 августа 2018, 18 января 2019 года и 5 марта 2020 года.
На тот момент компания Intel воздерживалась от комментариев по этому поводу[18][19].
15 марта 2018 года Intel сообщила о планах переработать свою линейку процессоров (влияние на производительность ещё не определено), чтобы исключить уязвимость Spectre, и планирует выпустить новые процессоры до конца 2018 года[20][21].
3 мая 2018 года были раскрыты восемь дополнительных уязвимостей класса Spectre; Intel объявила, что готовит новые патчи для их устранения[22].
14 августа 2018 года Intel раскрыла три дополнительных уязвимости процессоров, получившие обозначение L1 Terminal Fault (L1TF). Было заявлено, что устранение возможно с помощью новых и уже выпущенных микрокодов[23].
2019
18 января 2019 года Intel раскрыла три новых уязвимости всех процессоров Intel под названиями Fallout, RIDL и ZombieLoad. В результате программа может читать недавно записанную информацию, данные из буферов и портов, а также утекать информация из других процессов и виртуальных машин[24][25][26]. 12 ноября 2019 года были раскрыты новые уязвимости процессоров Intel. Уязвимость TAA (TSX Asynchronous Abort) использует аппаратный механизм Intel TSX для доступа к данным в микроархитектурных буферах. Уязвимость MCEPSC (Intel Processor Machine Check Error) приводит к отказу в обслуживании из-за состояния гонки в буфере TLB. Также был раскрыт ряд уязвимостей графических процессоров Intel (i915), позволяющих вызвать отказ в обслуживании, раскрытие информации и повышение привилегий[27].
2020
27 января 2020 года были раскрыты уязвимости процессоров Intel: L1D Eviction Sampling (L1DES, CVE-2020-0549) и Vector Register Sampling (VRS, CVE-2020-0548). L1DES является новым вариантом атаки ZombieLoad/RIDL, позволяющим вызывать утечку данных, вытесняемых из кэша первого уровня (L1D). VRS представляет собой вариант атаки RIDL, который позволяет извлекать данные из векторных регистров, включая значения, которые никогда не сохранялись в памяти[28].[29] 5 марта 2020 года специалисты по компьютерной безопасности сообщили о ещё одной уязвимости в процессорах Intel — помимо Meltdown и Spectre — под именем («Intel CSME Bug»)[30]. Уязвимость не устраняется обновлением прошивки и затрагивает почти все чипы Intel последних пяти лет[31].
2021
В марте 2021 года специалисты AMD обнаружили, что алгоритм Predictive Store Forwarding в процессорах Zen 3 может быть использован злоумышленными приложениями для получения доступа к чужим данным[32]. По данным Phoronix, отключение этой функции почти не влияет на производительность[33].
В июне 2021 года были обнаружены две новые уязвимости, Speculative Code Store Bypass (SCSB, CVE-2021-0086) и Floating Point Value Injection (FPVI, CVE-2021-0089), затрагивающие все современные x86-64 процессоры Intel и AMD[34]. Для их устранения необходимо перекомпилировать программное обеспечение. Процессоры ARM не подвержены SCSB, но некоторые архитектуры ARM затрагивает FPVI.
Август 2021 года — была раскрыта уязвимость «Transient Execution of Non-canonical Accesses», затрагивающая некоторые процессоры AMD, требующая тех же мер, что и устранение MDS на Intel[35][36][37]. Присвоен идентификатор CVE-2020-12965.
В октябре 2021 года впервые была выявлена уязвимость, схожая с Meltdown, но затрагивающая все процессоры AMD, однако AMD считает, что существующие меры достаточны[38].
2022
10 июня 2022 года исследователи MIT сообщили об уязвимости PACMAN, использующей Pointer Authentication Codes (PAC) в ARM v8.3A[39][40].
2024
В сентябре 2024 года была раскрыта уязвимость BPRC (Branch Privilege Injection, CVE-2024-45332) в подсистеме предсказания ветвлений процессоров Intel. Уязвимость представляет собой состояние гонки, возникающее при переключении уровней привилегий, что позволяет непривилегированному злоумышленнику извлекать конфиденциальные данные из привилегированной памяти операционной системы. Проблеме подвержены процессоры Intel начиная с 9-го поколения, а также возможен обход защиты на более старых моделях вплоть до 7-го поколения. Для смягчения последствий уязвимости компания Intel выпустила обновления микрокода для всех затронутых моделей.
2025
В мае 2025 года исследователи из ETH Zurich обнаружили новую уязвимость класса Spectre, получившую название Branch Privilege Injection (BPI). Она затрагивает процессоры Intel, выпущенные с 2018 года (от 8-го до 14-го поколения, включая микроархитектуры Coffee Lake-R, Rocket Lake, Alder Lake и Raptor Lake)[41]. В июле 2025 года была раскрыта информация об атаке TSA (Transient Scheduler Attack) на процессоры AMD. Это класс спекулятивных атак по сторонним каналам, эксплуатирующих особенности временного исполнения и ложное завершение инструкций. Уязвимости подвержены процессоры на архитектуре Zen 3 и новее, включая серии EPYC (3-го и 4-го поколений), Ryzen (от 5000 до 8040 серии) и Ryzen Threadripper PRO 7000 WX. Для успешной эксплуатации злоумышленнику необходим локальный доступ к системе[42].[43] Выпуск программных исправлений для уязвимостей 2025 года приводит к снижению производительности процессоров. В частности, патчи, закрывающие уязвимости инъекции команд ветвления, снижают производительность Intel Rocket Lake примерно на 8,3 %, а Alder Lake — на 2,7 %. Исправления для других уязвимостей (например, VMSCAPE) могут приводить к падению производительности до 10 % при работе с виртуальными машинами[44].[45]
Перспективы
Принципиальная уязвимость техники спекулятивного исполнения делает невозможным её полное устранение без радикального снижения производительности. Вместе с тем, развиваются новые подходы к защите. В частности, достигнут прогресс в формальной верификации сложных конвейеров: разработан метод Unique Program Execution Checking (UPEC), ставший первой RTL-техникой для исчерпывающего покрытия побочных каналов временного исполнения, с помощью которого была создана формально доказанная модель безопасного спекулятивного процессора на базе BOOM. В 2026 году также был предложен фреймворк XcptProof для верификации безопасности при исключениях, выявляющий уязвимости типа Meltdown и Spectre-V4[46].[47] Кроме того, в 2026 году для защиты от уязвимостей временного исполнения была предложена микроархитектурная концепция LightSerial. Она позволяет отказаться от полного сброса конвейера в пользу точечной блокировки проверяемых инструкций, что даёт возможность продолжать безопасное внеочередное исполнение и существенно снижает накладные расходы при переключении между доменами безопасности[48].
Сводная таблица уязвимостей и средств устранения
| Тип средства устранения | Полнота | Эффективность | Влияние на производительность | Описание |
|---|---|---|---|---|
| Аппаратное обеспечение | Полная | Полная | Отсутствует или незначительное | Требует изменений на уровне архитектуры процессора и выпуска новых чипов (например, встроенная защита от Inception в AMD Zen 5)[49][50] |
| Микрокод | Частично или полностью | Частично или полностью | От отсутствия до значительного | Обновление микропрограммного обеспечения процессора с установкой патчей через BIOS или ОС |
| ОС/ВММ | Частичная | Частично или полностью | Незначительное или значительно | Реализуется на уровне операционной системы или виртуальной машины |
| Перекомпиляция ПО | Плохая | Снижающаяся | Значительное (до 152—165 %) | Требует пересборки ПО; программные методы (SLH, Retpoline) демонстрируют снижение эффективности и значительное падение производительности[51] |
| Микрокод (BPRC / Spectre 2025) | Полная | Полная | Снижение до 2,7—8,3 %[52][53] | Обновление микрокода Intel для защиты от инъекций команд ветвления (CVE-2024-45332)[54] |
| Прошивка и ОС (уязвимости AMD, 2025) | Полная (при совместной установке) | Высокая | Возможно снижение производительности | Обновления прошивки Platform Initialization и ОС для защиты от атак по времени[55] |
| Патч ядра (VMScape, 2025) | Полная | Полная | От 1 % до 51 %[56] | Программный патч ядра Linux (защита IBPB) для предотвращения обхода изоляции в облачных средах (CVE-2025-40300) |