
Reptar, Downfall, Zenbleed, ZombieLoad, RIDL, Fallout, Foreshadow, Spectre, Meltdown — инструмент проверки уязвимостей/смягчений для Linux и BSD
A self-contained shell script to assess your system's resilience against the several transient execution CVEs that were published since early 2018, and give you guidance as to how to mitigate them.
| CVE | Имя | Псевдонимы |
|---|
| CVE-2017-5753 | Обход проверки границ | Spectre V1 |
| CVE-2017-5715 | Инъекция цели ветвления | Spectre V2 |
| CVE-2017-5754 | Несанкционированная загрузка кэша данных | Meltdown |
| CVE-2018-3640 | Несанкционированное чтение системных регистров | Variant 3a |
| CVE-2018-3639 | Спекулятивный обход записи | Variant 4, SSB |
| CVE-2018-3615 | Ошибка терминала L1 | Foreshadow (SGX) |
| CVE-2018-3620 | Ошибка терминала L1 | Foreshadow-NG (OS/SMM) |
| CVE-2018-3646 | Ошибка терминала L1 | Foreshadow-NG (VMM) |
| CVE-2018-12126 | Выборка данных из буфера записи микроархитектуры | MSBDS, Fallout |
| CVE-2018-12127 | Выборка данных из порта загрузки микроархитектуры | MLPDS, RIDL |
| CVE-2018-12130 | Выборка данных из буфера заполнения микроархитектуры | MFBDS, ZombieLoad |
| CVE-2018-12207 | Машинное исключение при изменении размера страницы | iTLB Multihit, No eXcuses |
| CVE-2019-11091 | Выборка данных микроархитектуры из некэшируемой памяти | MDSUM, RIDL |
| CVE-2019-11135 | Асинхронное прерывание TSX | TAA, ZombieLoad V2 |
| CVE-2020-0543 | Выборка данных из буфера специальных регистров | SRBDS, CROSSTalk |
| CVE-2022-21123 | Чтение данных из общих буферов | SBDR, MMIO Stale Data |
| CVE-2022-21125 | Выборка данных из общих буферов | SBDS, MMIO Stale Data |
| CVE-2022-21166 | Частичная запись в регистр устройства | DRPW, MMIO Stale Data |
| CVE-2022-29900 | Произвольное спекулятивное выполнение кода с использованием инструкций возврата | Retbleed (AMD) |
| CVE-2022-29901 | Произвольное спекулятивное выполнение кода с использованием инструкций возврата | Retbleed (Intel), RSBA |
| CVE-2022-40982 | Выборка данных Gather | Downfall, GDS |
| CVE-2023-20569 | Безопасность адреса возврата | Inception, SRSO |
| CVE-2023-20588 | Спекулятивная утечка данных при делении на ноль AMD | DIV0 |
| CVE-2023-20593 | Утечка информации между процессами | Zenbleed |
| CVE-2023-23583 | Проблема избыточного префикса | Reptar |
| CVE-2023-28746 | Выборка данных из регистрового файла | RFDS |
| CVE-2024-28956 | Выбор непрямой цели | ITS |
| CVE-2024-36350 | Атака на планировщик транзиентного исполнения, очередь записи | TSA-SQ |
| CVE-2024-36357 | Атака на планировщик транзиентного исполнения, L1 | TSA-L1 |
| CVE-2025-40300 | Устаревшее предсказание ветвления при выходе из VM | VMScape |
| CVE-2024-45332 | Инъекция привилегий ветвления | BPI |
| CVE-2025-54505 | Утечка устаревших данных из делителя с плавающей точкой AMD Zen1 | FPDSS |
The following entries are ARM64 silicon errata that the kernel actively works around. They have no assigned CVE; they are tracked only by ARM's erratum numbers. Select them with --errata <number> or the associated --variant mnemonic.
| ID | Название | Затронутые ядра |
|---|---|---|
| CVE-0001-0001 | Повреждение TLB при спекулятивном AT (ошибки 1165522, 1319367, 1319537, 1530923) | Cortex-A55/A57/A72/A76 |
| CVE-0001-0002 | Спекулятивная загрузка без привилегий (ошибки 2966298, 3117295) | Cortex-A510/A520 |
| CVE-0001-0003 | MSR SSBS не самосинхронизируется (ошибка 3194386 + другие) | Cortex-A76/A77/A78/A78C/A710/A715/A720/A720AE/A725, X1/X1C/X2/X3/X4/X925, Neoverse-N1/N2/N3/V1/V2/V3/V3AE |
В зависимости от вашей ситуации, таблица ниже отвечает, может ли атакующий в определенной позиции извлечь данные из определенной цели. Столбец «Пользовательское пространство → Ядро» также применяется внутри ВМ (пользовательское пространство ВМ против ядра ВМ), поскольку действуют одни и те же механизмы ЦП независимо от виртуализации.
| Уязвимость | Пользовательское пространство → Ядро | Пользовательское пространство → Пользовательское пространство | ВМ → Хост | ВМ → ВМ | Смягчение |
|---|---|---|---|---|---|
| CVE-2017-5753 (Spectre V1) | 💥 | 💥 | 💥 | 💥 | Перекомпилировать все с LFENCE |
| CVE-2017-5715 (Spectre V2) | 💥 | 💥 | 💥 | 💥 | Обновление микрокода + ядра (или retpoline) |
| CVE-2017-5754 (Meltdown) | 💥 | ✅ | ✅ | ✅ | Обновление ядра |
| CVE-2018-3640 (Variant 3a) | 💥 | ✅ | ✅ | ✅ | Обновление микрокода |
| CVE-2018-3639 (Variant 4, SSB) | ✅ | 💥 | ✅ | ✅ | Обновление микрокода + ядра |
| CVE-2018-3615 (Foreshadow, SGX) | ✅ (3) | ✅ (3) | ✅ (3) | ✅ (3) | Обновление микрокода |
| CVE-2018-3620 (Foreshadow-NG, OS/SMM) | 💥 | ✅ | ✅ | ✅ | Обновление ядра |
| CVE-2018-3646 (Foreshadow-NG, VMM) | ✅ | ✅ | 💥 | 💥 | Обновление ядра (или отключение EPT/SMT) |
| CVE-2018-12126 (MSBDS, Fallout) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2018-12127 (MLPDS, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2018-12130 (MFBDS, ZombieLoad) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2018-12207 (iTLB Multihit, No eXcuses) | ✅ |
💥 Через эту границу может произойти утечка данных.
✅ В этом сценарии не затрагивается.
☠️ Отказ в обслуживании (сбой системы или непредсказуемое поведение), утечки данных нет.
(1) Межпроцессная утечка требует активности SMT (Hyper-Threading) — атакующий и жертва должны делить физическое ядро.
(2) Утекает только вывод RDRAND/RDSEED, а не произвольная память; тем не менее, позволяет восстановить криптографические материалы от любой жертвы.
(3) CVE-2018-3615 (Foreshadow SGX) инвертирует обычную модель доверия: ОС читает данные анклава SGX. Это не имеет значения, если система не использует анклавы SGX, и атакующий уже должен иметь доступ на уровне ОС.
(4) Утечка ВМ→Хост применима только к определенным затронутым моделям ЦП (Skylake-X, Kaby Lake, Comet Lake). Ice Lake, Tiger Lake и Rocket Lake затронуты только для собственных (пользователь-ядро) атак, а не гость-хост.
CVE-2017-5753 — Обход проверки границ (Spectre вариант 1)
Атакующий может обучить предсказатель ветвлений неверно предсказывать проверку границ, заставляя ЦП спекулятивно обращаться к памяти за пределами границ. Это затрагивает все программное обеспечение, включая ядро, поскольку любая условная проверка границ потенциально может быть использована. Смягчение требует перекомпиляции программного обеспечения и ядра с компилятором, который вставляет инструкции LFENCE (или эквивалентные барьеры спекуляции, такие как array_index_nospec) в нужных местах. Влияние на производительность незначительно, поскольку барьеры применяются только к конкретным целевым шаблонам кода.
CVE-2017-5715 — Инъекция цели ветвления (Spectre вариант 2)
Атакующий может отравить буфер целей ветвления (BTB), чтобы перенаправить спекулятивное выполнение косвенных ветвлений в ядре, что приводит к утечке памяти ядра. Существуют две стратегии смягчения: (1) обновления микрокода, предоставляющие IBRS (Indirect Branch Restricted Speculation), который сбрасывает состояние предсказателя ветвлений при переходах привилегий — это имеет среднюю или высокую стоимость производительности, особенно на старом оборудовании; или (2) retpoline, техника компилятора, которая заменяет косвенные ветвления конструкцией, которую спекулятор не может использовать — это имеет более низкую стоимость производительности, но требует перекомпиляции ядра и чувствительного программного обеспечения.
CVE-2017-5754 — Несанкционированная загрузка кэша данных (Meltdown)
На затронутых процессорах Intel пользовательский процесс может спекулятивно читать память ядра, несмотря на отсутствие разрешения. ЦП в конечном итоге вызывает исключение, но данные оставляют наблюдаемые следы в кэше. Смягчение полностью на стороне ядра: изоляция таблиц страниц (PTI/KPTI) удаляет большую часть памяти ядра из таблиц страниц пользовательского пространства, так что нечего спекулятивно читать. Влияние на производительность от низкого до среднего, в основном из-за увеличенной нагрузки на TLB, вызванной переключением таблиц страниц при каждом входе и выходе из ядра.
CVE-2018-3640 — Несанкционированное чтение системных регистров (Вариант 3a)
Похоже на Meltdown, но нацелено на системные регистры: непривилегированный процесс может спекулятивно читать значения привилегированных системных регистров (таких как Model-Specific Registers) и извлекать их через побочный канал. Смягчение требует только обновления микрокода — изменения ядра не нужны. Влияние на производительность незначительно.
CVE-2018-3639 — Спекулятивный обход записи (Вариант 4, SSB)
ЦП может спекулятивно загрузить значение из памяти до завершения предыдущей записи по тому же адресу, читая устаревшие данные. Это в первую очередь затрагивает программное обеспечение, использующее JIT-компиляцию (например, движки JavaScript, eBPF), где атакующий может создать код, использующий зависимость запись-загрузка. Известных эксплуатаций против самого ядра не продемонстрировано. Смягчение требует обновления микрокода (предоставляющего механизм SSBD) плюс обновление ядра, которое позволяет затронутому программному обеспечению подписываться на защиту через prctl(). Влияние на производительность от низкого до среднего, в зависимости от того, как часто активируется смягчение.
CVE-2018-3615 — Ошибка терминала L1 (Foreshadow, SGX)
Оригинальная атака Foreshadow нацелена на анклавы Intel SGX. Когда бит присутствия записи таблицы страниц сброшен, ЦП все еще может спекулятивно использовать физический адрес в записи для извлечения данных из кэша L1, обходя защиту SGX. Атакующий может извлечь секреты (ключи аттестации, запечатанные данные) из анклавов SGX. Смягчение требует обновления микрокода, которое включает модификации поведения SGX. Влияние на производительность незначительно.
CVE-2018-3620 — Ошибка терминала L1 (Foreshadow-NG, OS/SMM)
Обобщение Foreshadow за пределами SGX: непривилегированный код пользовательского пространства может использовать тот же механизм L1TF для чтения памяти ядра или памяти режима системного управления (SMM). Смягчение требует обновления ядра, которое реализует инверсию PTE — пометку отсутствующих записей таблицы страниц недействительными физическими адресами, чтобы кэш L1 не мог содержать полезных данных по этим адресам. Влияние на производительность незначительно, поскольку инверсия PTE является одноразовым изменением логики управления таблицами страниц без накладных расходов во время выполнения.
CVE-2018-3646 — Ошибка терминала L1 (Foreshadow-NG, VMM)
Гостевая ВМ может использовать L1TF для чтения памяти, принадлежащей хосту или другим гостям, поскольку таблицы страниц гипервизора могут содержать отсутствующие записи, указывающие на действительные физические адреса хоста, все еще находящиеся в L1. Варианты смягчения включают: сброс кэша данных L1 при каждом входе в ВМ (через обновление ядра, предоставляющее поддержку сброса L1d), отключение расширенных таблиц страниц (EPT) или отключение Hyper-Threading (SMT), чтобы предотвратить повторное заполнение кэша L1 потоком-близнецом во время спекуляции. Влияние на производительность варьируется от низкого до значительного в зависимости от выбранного смягчения, при этом сброс L1d при входе в ВМ является наиболее практичным, но все еще измеримым на нагрузках с большим количеством ВМ.
CVE-2018-12126 — Выборка данных из буфера записи микроархитектуры (MSBDS, Fallout)
CVE-2018-12127 — Выборка данных из порта загрузки микроархитектуры (MLPDS, RIDL)
CVE-2018-12130 — Выборка данных из буфера заполнения микроархитектуры (MFBDS, ZombieLoad)
CVE-2019-11091 — Выборка данных микроархитектуры из некэшируемой памяти (MDSUM, RIDL)
Эти четыре CVE вместе известны как уязвимости MDS (Microarchitectural Data Sampling). Они эксплуатируют различные внутренние буферы ЦП — буфер записи, буфер заполнения, порты загрузки и пути к некэшируемой памяти — которые могут утекать недавно полученные данные через границы привилегий во время спекулятивного выполнения. Непривилегированный атакующий может наблюдать данные, недавно обработанные ядром или другими процессами. Смягчение требует обновления микрокода (предоставляющего механизм MD_CLEAR) плюс обновление ядра, которое использует VERW для очистки затронутых буферов при переходах привилегий. Отключение Hyper-Threading (SMT) обеспечивает дополнительную защиту, поскольку потоки-близнецы совместно используют эти буферы. Влияние на производительность от низкого до значительного, в зависимости от частоты переходов ядра и того, отключен ли SMT.
CVE-2018-12207 — Машинное исключение при изменении размера страницы (iTLB Multihit, No eXcuses)
Злонамеренная гостевая ВМ может вызвать машинное исключение (MCE), приводящее к сбою всего хоста, путем создания определенных условий в TLB инструкций, связанных с изменениями размера страницы. Это уязвимость отказа в обслуживании, затрагивающая гипервизоры, работающие с ненадежными гостями. Смягчение требует либо отключения использования больших страниц в гипервизоре, либо обновления гипервизора, чтобы избежать проблемных конфигураций iTLB. Влияние на производительность варьируется от низкого до значительного в зависимости от подхода: отключение больших страниц может существенно повлиять на нагрузки с интенсивным использованием памяти.
CVE-2019-11135 — Асинхронное прерывание TSX (TAA, ZombieLoad V2)
На ЦП с Intel TSX транзакционное прерывание может оставить данные из буферов заполнения строк в состоянии, наблюдаемом через побочные каналы, аналогично уязвимостям MDS, но запускаемым через TSX. Смягчение требует обновления микрокода плюс поддержки ядра для очистки затронутых буферов или полного отключения TSX (через MSR TSX_CTRL). Влияние на производительность от низкого до значительного, как и в случае с MDS, с возможностью полностью устранить поверхность атаки путем отключения TSX ценой потери поддержки транзакционной памяти.
CVE-2020-0543 — Выборка данных из буфера специальных регистров (SRBDS, CROSSTalk)
Некоторые специальные инструкции ЦП (RDRAND, RDSEED, EGETKEY) читают данные через общий промежуточный буфер, доступный всем ядрам через спекулятивное выполнение. Атакующий, выполняющий код на любом ядре, может наблюдать вывод этих инструкций от жертвы на другом ядре, включая извлечение криптографических ключей из анклавов SGX (был продемонстрирован полный ключ ECDSA). Это примечательно как одна из первых атак спекулятивного выполнения между ядрами. Смягчение требует обновления микрокода, которое сериализует доступ к промежуточному буферу, плюс обновление ядра для управления смягчением. Влияние на производительность низкое, в основном затрагивая нагрузки, интенсивно использующие RDRAND/RDSEED.
CVE-2022-21123, CVE-2022-21125, CVE-2022-21166 — Устаревшие данные MMIO процессора (SBDR, SBDS, DRPW)
Класс уязвимостей MMIO (Memory-Mapped I/O), при которых устаревшие данные из внутренних буферов заполнения ЦП могут быть получены через атаки по побочным каналам во время операций MMIO. Охвачены три подуязвимости: Shared Buffers Data Read (SBDR, CVE-2022-21123), Shared Buffers Data Sampling (SBDS, CVE-2022-21125) и Device Register Partial Write (DRPW, CVE-2022-21166). Затронутые ЦП Intel включают процессоры Haswell через Rocket Lake серверные и клиентские, а также ядра Tremont Atom. Смягчение требует обновления микрокода, предоставляющего возможность FB_CLEAR (инструкция VERW очищает буферы заполнения), плюс обновление ядра (Linux 5.19+), которое вызывает VERW на переходах ядро/пользователь и входе/выходе из ВМ. Когда SMT включен, потоки-близнецы все еще могут использовать уязвимость, даже при активных смягчениях. Влияние на производительность низкое, поскольку механизм VERW является общим с существующим смягчением MDS.
CVE-2022-29900 — Произвольное спекулятивное выполнение кода с использованием инструкций возврата (Retbleed AMD)
На процессорах AMD семейств 0x15–0x17 (Bulldozer до Zen 2) и Hygon семейства 0x18 атакующий может использовать инструкции возврата для перенаправления спекулятивного выполнения и утечки памяти ядра, обходя смягчения retpoline, которые были эффективны против Spectre V2. В отличие от Spectre V2, который нацелен на косвенные переходы и вызовы, Retbleed специально нацелен на инструкции возврата, которые ранее считались безопасными. Смягчение требует обновления ядра, предоставляющего либо ненастроенный thunk возврата (safe RET), либо механизм IBPB при входе, плюс обновление микрокода, предоставляющее поддержку IBPB на Zen 1/2. На Zen 1/2 SMT должен быть отключен для полной защиты при использовании смягчения на основе IBPB. Влияние на производительность среднее.
CVE-2022-29901 — Произвольное спекулятивное выполнение кода с использованием инструкций возврата (Retbleed Intel, RSBA)
На процессорах Intel Skylake через Rocket Lake с альтернативным поведением RSB (RSBA) инструкции возврата могут быть спекулятивно перенаправлены через буфер целей ветвления при переполнении стека возврата, обходя смягчения retpoline. Смягчение требует либо Enhanced IBRS (eIBRS, через обновление микрокода), либо ядра, скомпилированного с поддержкой IBRS при входе (Linux 5.19+). Отслеживание глубины вызовов (stuffing) является альтернативным смягчением, доступным с Linux 6.2+. Обычный retpoline НЕ смягчает эту уязвимость на ЦП с возможностью RSBA. Влияние на производительность от среднего до высокого.
**CVE-2022-40982 — Gather Data Sampling (Downfall, GDS)**Инструкции AVX GATHER могут утекать данные из ранее использованных векторных регистров через границы привилегий через общий буфер данных gather. Это затрагивает любое программное обеспечение, использующее AVX2 или AVX-512 на уязвимых процессорах Intel. Устранение обеспечивается обновлением микрокода, которое очищает буфер gather, или альтернативно полным отключением функции AVX. Влияние на производительность незначительно для большинства рабочих нагрузок, но может быть значительным (до 50%) для приложений с интенсивным использованием AVX, таких как HPC и выводы ИИ.
CVE-2023-20569 — Безопасность адреса возврата (Inception, SRSO)
На процессорах AMD Zen 1–Zen 4 злоумышленник может манипулировать предсказателем адреса возврата, чтобы перенаправить спекулятивное выполнение на инструкциях возврата, тем самым утекая память ядра. Устранение требует как обновления ядра (предоставляющего безопасные последовательности возврата SRSO или IBPB на входе), так и обновления микрокода (предоставляющего SBPB на Zen 3/4 или поддержку IBPB на Zen 1/2 — что дополнительно требует отключения SMT). Влияние на производительность варьируется от низкого до значительного в зависимости от выбранного устранения и поколения CPU.
CVE-2023-20588 — Спекулятивная утечка данных при делении на ноль в AMD (DIV0)
На процессорах AMD Zen 1 исключение #DE (деление на ноль) может оставить устаревшие данные частного от предыдущего деления в блоке делителя, которые могут быть прочитаны последующим делением через спекулятивные побочные каналы. Это может утекать данные через любую границу привилегий, включая между потоками SMT, разделяющими одно физическое ядро. Устранение требует обновления ядра (Linux 6.5+), которое добавляет фиктивное деление (amd_clear_divider()) на каждом выходе в пользовательское пространство и перед VMRUN, предотвращая сохранение устаревших данных. Обновление микрокода не требуется. Отключение SMT обеспечивает дополнительную защиту, поскольку устранение ядра не покрывает утечки между потоками SMT. Влияние на производительность незначительно.
CVE-2023-20593 — Утечка информации между процессами (Zenbleed)
Ошибка в процессорах AMD Zen 2 приводит к тому, что инструкция VZEROUPPER некорректно обнуляет файлы регистров во время спекулятивного выполнения, оставляя устаревшие данные от других процессов наблюдаемыми в векторных регистрах. Это может утекать данные через любую границу привилегий, включая от ядра и других процессов, со скоростью до 30 КБ/с на ядро. Устранение доступно либо через обновление микрокода, исправляющее ошибку, либо через обходной путь в ядре, который устанавливает бит FP_BACKUP_FIX (бит 9) в MSR DE_CFG, отключая ошибочную оптимизацию. Любого из этих подходов достаточно. Влияние на производительность незначительно.
CVE-2023-23583 — Проблема с избыточным префиксом (Reptar)
Ошибка в процессорах Intel вызывает неожиданное поведение при выполнении инструкций с определенными избыточными префиксами REX. В зависимости от обстоятельств это может привести к сбою системы (MCE), непредсказуемому поведению или потенциально к повышению привилегий. Любое программное обеспечение, работающее на уязвимом CPU, может вызвать эту ошибку. Устранение требует обновления микрокода. Влияние на производительность низкое.
CVE-2023-28746 — Выборка данных из файла регистров (RFDS)
На некоторых процессорах Intel Atom и гибридных процессорах (Goldmont, Goldmont Plus, Tremont, Gracemont, а также ядра Atom в Alder Lake и Raptor Lake) файл регистров может сохранять устаревшие данные от предыдущих операций, доступные через спекулятивное выполнение, что позволяет злоумышленнику выводить данные через границы привилегий. Устранение требует как обновления микрокода (предоставляющего возможность RFDS_CLEAR), так и обновления ядра (CONFIG_MITIGATION_RFDS, Linux 6.9+), которое использует инструкцию VERW для очистки файла регистров при переходах привилегий. CPU с установленным битом возможности RFDS_NO не уязвимы. Влияние на производительность низкое.
CVE-2024-28956 — Косвенный выбор цели (ITS)
На некоторых процессорах Intel (Skylake-X шаг 6+, Kaby Lake, Comet Lake, Ice Lake, Tiger Lake, Rocket Lake) злоумышленник может натренировать предсказатель косвенных ветвлений, чтобы спекулятивно выполнить целевую уязвимую конструкцию в ядре, обходя защиту eIBRS. Буфер целей ветвлений (BTB) использует только частичные биты адреса для индексации целей косвенных ветвлений, что позволяет коду пользовательского пространства влиять на спекулятивное выполнение в пространстве ядра. Некоторые уязвимые CPU (Ice Lake, Tiger Lake, Rocket Lake) уязвимы только к атакам из пользовательского пространства в ядро, а не из гостя в хост (VMX). Устранение требует как обновления микрокода (IPU 2025.1 / microcode-20250512+, которое исправляет IBPB для полной очистки предсказаний косвенных ветвлений), так и обновления ядра (CONFIG_MITIGATION_ITS, Linux 6.15+), которое выравнивает заглушки ветвлений/возвратов или использует заполнение RSB. Влияние на производительность низкое.
CVE-2024-36350 — Атака переходного планировщика, очередь сохранения (TSA-SQ)
На процессорах AMD Zen 3 и Zen 4 переходный планировщик CPU может спекулятивно извлекать устаревшие данные из очереди сохранения в определенных временных окнах, что позволяет злоумышленнику выводить данные из предыдущих операций сохранения через границы привилегий. Атака также может утекать данные между потоками SMT. Устранение требует как обновления микрокода (открывающего возможность VERW_CLEAR), так и обновления ядра (CONFIG_MITIGATION_TSA, Linux 6.16+), которое использует инструкцию VERW для очистки буферов CPU при переходах пользователь/ядро и перед VMRUN. Ядро также очищает буферы при бездействии, если SMT активен. Влияние на производительность от низкого до среднего.
CVE-2024-36357 — Атака переходного планировщика, L1 (TSA-L1)
На процессорах AMD Zen 3 и Zen 4 переходный планировщик CPU может спекулятивно извлекать устаревшие данные из кэша данных L1 в определенных временных окнах, что позволяет злоумышленнику выводить данные в кэше L1D через границы привилегий. Устранение требует тех же обновлений микрокода и ядра, что и для TSA-SQ: обновление микрокода, открывающего VERW_CLEAR, и обновление ядра (CONFIG_MITIGATION_TSA, Linux 6.16+), которое очищает буферы CPU через VERW при переходах привилегий. Влияние на производительность от низкого до среднего.
CVE-2025-40300 — Устаревшее предсказание ветвлений при выходе из VM (VMScape)
После выхода гостевой ВМ на хост устаревшие предсказания ветвлений от гостя могут влиять на спекулятивное выполнение на стороне хоста до того, как ядро вернется в пользовательское пространство, позволяя локальному злоумышленнику утекать память ядра хоста. Это затрагивает процессоры Intel от Sandy Bridge до Arrow Lake/Lunar Lake, семейства AMD Zen 1–Zen 5 и Hygon семейства 0x18. Риску подвержены только системы, работающие с гипервизором и недоверенными гостевыми системами. Устранение требует обновления ядра (CONFIG_MITIGATION_VMSCAPE, Linux 6.18+), которое отправляет IBPB перед возвратом в пользовательское пространство после выхода из VM. Специфического обновления микрокода не требуется, кроме существующей поддержки IBPB. Влияние на производительность низкое.
CVE-2024-45332 — Инжекция привилегий ветвления (BPI)
Состояние гонки в механизме обновления предсказателя ветвлений процессоров Intel (Coffee Lake – Raptor Lake, плюс некоторые серверные части и Atom) позволяет предполсказаниям ветвлений из пользовательского пространства кратковременно влиять на спекулятивное выполнение в пространстве ядра, подрывая защиты eIBRS и IBPB. Это означает, что системы, полагающиеся исключительно на eIBRS для устранения Spectre V2, могут быть не полностью защищены без исправления микрокода. Устранение требует обновления микрокода (intel-microcode 20250512+), которое исправляет тайминг асинхронного обновления предсказателя ветвлений, чтобы eIBRS и IBPB работали как задумано. Изменения ядра не требуются. Влияние на производительность незначительно.
CVE-2025-54505 — Утечка устаревших данных из делителя с плавающей запятой AMD Zen1 (FPDSS)
На процессорах AMD Zen1 и Zen+ (EPYC 7001, EPYC Embedded 3000, Athlon 3000 с Radeon, Ryzen 3000 с Radeon, Ryzen PRO 3000 с Radeon Vega) аппаратный делитель с плавающей запятой может сохранять частичные данные частного от предыдущих операций. При определенных обстоятельствах эти результаты могут быть утечены другому потоку, разделяющему тот же делитель, пересекая любую границу привилегий. Ему присвоен идентификатор CVE-2025-54505, и он был опубликован AMD как AMD-SB-7053 17 апреля 2026 года. Устранение требует обновления ядра (коммит основной ветки e55d98e77561, "x86/CPU: Fix FPDSS on Zen1", Linux 7.1), которое устанавливает бит 9 (ZEN1_DENORM_FIX_BIT) MSR 0xc0011028 (MSR_AMD64_FP_CFG) безусловно на каждом процессоре Zen1 при загрузке, отключая аппаратную оптимизацию, ответственную за утечку. Обновление микрокода не требуется: бит "курицы" присутствует в кремнии Zen1 с завода и не зависит от версии микрокода. Влияние на производительность ограничено небольшим снижением пропускной способности деления с плавающей запятой, поэтому AMD не включает этот бит по умолчанию в аппаратном обеспечении.
Некоторые CVE, связанные с переходным выполнением, не охвачены этим инструментом по разным причинам (дубликаты, затрагивающие только неподдерживаемое оборудование или ОС, теоретические без известной эксплуатации и т.д.). Полный список вместе с причиной исключения для каждого доступен в файле UNSUPPORTED_CVE_LIST.md.
Поддерживаемые операционные системы:
Для систем Linux инструмент обнаруживает меры устранения, включая нестандартные бэкпортированные патчи, независимо от заявленного номера версии ядра и дистрибутива (например, Debian, Ubuntu, CentOS, RHEL, Fedora, openSUSE, Arch и т.д.), а также работает, если вы скомпилировали собственное ядро. Больше информации здесь.
Другие операционные системы, такие как macOS, Windows, ESXi и т.д., никогда не будут поддерживаться.
Поддерживаемые архитектуры:
x86 (32 бита)amd64/x86_64 (64 бита)ARM и ARM64Какова цель этого инструмента? Зачем он был написан? Чем он может быть полезен мне? Как он работает? Что я могу от него ожидать?
На все эти вопросы (и не только) есть подробные ответы в FAQ, пожалуйста, ознакомьтесь!
Скрипт поддерживает четыре режима работы, в зависимости от того, хотите ли вы проверить работающее ядро, образ ядра, оборудование CPU или их комбинацию.
| Режим | Флаг | Аппаратное обеспечение CPU | Работающее ядро | Образ ядра | Сценарий использования |
|---|---|---|---|---|---|
| В реальном времени (по умолчанию) | (нет) | Да | Да | автоопределение | Ежедневный аудит текущей системы |
| Без выполнения | --no-runtime | Да | Нет | требуется | Проверка другого ядра на этом CPU (например, перед развёртыванием) |
| Без оборудования | --no-hw | Нет | Нет | требуется | Чисто статический анализ образа ядра для другой системы или архитектуры |
| Только оборудование | --hw-only | Да | Нет | Нет | Быстрая проверка уязвимости CPU без проверки ядра |
В режиме В реальном времени (по умолчанию) скрипт проверяет как CPU, так и работающее ядро. При необходимости можно передать --kernel, --config или --map, чтобы указать скрипту на файлы, которые он не смог автоопределить.
В режиме Без выполнения скрипт по-прежнему читает локальный CPU (CPUID, MSR, микрокод), но пропускает все артефакты работающего ядра (/sys, /proc, dmesg). Используйте этот режим, когда у вас есть образ ядра из другой системы, но вы хотите оценить его относительно текущего CPU.
В режиме Без оборудования полностью пропускаются как проверка CPU, так и артефакты работающего ядра. Это полезно для кросс-архитектурного анализа, например, для проверки образа ядра ARM на рабочей станции x86.
В режиме Только оборудование скрипт сообщает только информацию о CPU и уязвимость аппаратного обеспечения по каждому CVE, без проверки какого-либо ядра.
Получите последнюю версию скрипта с помощью curl или wget
curl -L https://meltdown.ovh -o spectre-meltdown-checker.sh
wget https://meltdown.ovh -O spectre-meltdown-checker.sh
Проверьте скрипт. Вы же никогда не запускаете вслепую скрипты, скачанные из Интернета, не так ли?
vim spectre-meltdown-checker.sh
Когда будете готовы, запустите скрипт от имени root
chmod +x spectre-meltdown-checker.sh
sudo ./spectre-meltdown-checker.sh
Использование docker compose:```shell
docker compose build
docker compose run --rm spectre-meltdown-checker
Обратите внимание, что в старых версиях docker, `docker-compose` является отдельной командой, поэтому вам может потребоваться заменить два упоминания `docker compose` выше на `docker-compose`.
Использование `docker build` напрямую:```shell
docker build -t spectre-meltdown-checker .
docker run --rm --privileged -v /boot:/boot:ro -v /dev/cpu:/dev/cpu:ro -v /lib/modules:/lib/modules:ro spectre-meltdown-checker

| ✅ |
| ☠️ |
| ✅ |
| Обновление гипервизора (или отключение больших страниц) |
| CVE-2019-11091 (MDSUM, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2019-11135 (TAA, ZombieLoad V2) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2020-0543 (SRBDS, CROSSTalk) | 💥 (2) | 💥 (2) | 💥 (2) | 💥 (2) | Обновление микрокода + ядра |
| CVE-2022-21123 (SBDR, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2022-21125 (SBDS, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2022-21166 (DRPW, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2022-29900 (Retbleed AMD) | 💥 | ✅ | 💥 | ✅ | Обновление ядра (+ микрокод для IBPB) |
| CVE-2022-29901 (Retbleed Intel, RSBA) | 💥 | ✅ | 💥 | ✅ | Обновление микрокода + ядра (eIBRS или IBRS) |
| CVE-2022-40982 (Downfall, GDS) | 💥 | 💥 | 💥 | 💥 | Обновление микрокода (или отключение AVX) |
| CVE-2023-20569 (Inception, SRSO) | 💥 | ✅ | 💥 | ✅ | Обновление микрокода + ядра |
| CVE-2023-20588 (DIV0) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление ядра (+ отключение SMT) |
| CVE-2023-20593 (Zenbleed) | 💥 | 💥 | 💥 | 💥 | Обновление микрокода (или обход ядра) |
| CVE-2023-23583 (Reptar) | ☠️ | ☠️ | ☠️ | ☠️ | Обновление микрокода |
| CVE-2023-28746 (RFDS) | 💥 | ✅ | 💥 | ✅ | Обновление микрокода + ядра |
| CVE-2024-28956 (ITS) | 💥 | ✅ | 💥 (4) | ✅ | Обновление микрокода + ядра |
| CVE-2024-36350 (TSA-SQ) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2024-36357 (TSA-L1) | 💥 | 💥 (1) | 💥 | 💥 (1) | Обновление микрокода + ядра |
| CVE-2025-40300 (VMScape) | ✅ | ✅ | 💥 | ✅ | Обновление ядра (IBPB при выходе из ВМ) |
| CVE-2024-45332 (BPI) | 💥 | ✅ | 💥 | ✅ | Обновление микрокода |
| CVE-2025-54505 (FPDSS) | 💥 | 💥 | 💥 | 💥 | Обновление ядра |