
Linux & BSD 向け Reptar, Downfall, Zenbleed, ZombieLoad, RIDL, Fallout, Foreshadow, Spectre, Meltdown 脆弱性/軽減策チェッカー
システムの、2018年初頭以降に公開された複数のTransient Execution関連CVEに対する耐性を評価し、その軽減方法をガイダンスする、自己完結型のシェルスクリプトです。
| CVE | 名称 | 別名 |
|---|---|---|
| CVE-2017-5753 | 境界チェックバイパス | Spectre V1 |
| CVE-2017-5715 | ブランチターゲットインジェクション | Spectre V2 |
| CVE-2017-5754 | Rogue Data Cache Load | Meltdown |
| CVE-2018-3640 | Rogue System Register Read | Variant 3a |
| CVE-2018-3639 | Speculative Store Bypass | Variant 4, SSB |
| CVE-2018-3615 | L1 Terminal Fault | Foreshadow (SGX) |
| CVE-2018-3620 | L1 Terminal Fault | Foreshadow-NG (OS/SMM) |
| CVE-2018-3646 | L1 Terminal Fault | Foreshadow-NG (VMM) |
| CVE-2018-12126 | Microarchitectural Store Buffer Data Sampling | MSBDS, Fallout |
| CVE-2018-12127 | Microarchitectural Load Port Data Sampling | MLPDS, RIDL |
| CVE-2018-12130 | Microarchitectural Fill Buffer Data Sampling | MFBDS, ZombieLoad |
| CVE-2018-12207 | Machine Check Exception on Page Size Changes | iTLB Multihit, No eXcuses |
| CVE-2019-11091 | Microarchitectural Data Sampling Uncacheable Memory |
以下のエントリは、カーネルが積極的に回避措置を講じているARM64シリコンのエラータです。これらにはCVEは割り当てられておらず、ARMのエラータ番号のみで追跡されています。--errata <番号> または対応する --variant ニーモニックで選択します。
| ID | 名称 | 影響を受けるコア |
|---|---|---|
| CVE-0001-0001 | Speculative AT TLB corruption (errata 1165522, 1319367, 1319537, 1530923) | Cortex-A55/A57/A72/A76 |
状況に応じて、以下の表は、特定の位置にいる攻撃者が特定のターゲットからデータを抽出できるかどうかを示しています。 「Userland → Kernel」の列は、VM内部(VMユーザーランドとVMカーネル間)にも適用されます。仮想化の有無にかかわらず、同じCPUメカニズムが働くためです。
💥 この境界を越えてデータが漏洩する可能性があります。
✅ このシナリオでは影響を受けません。
☠️ サービス拒否(システムクラッシュまたは予期しない動作)、データ漏洩はありません。
(1) プロセス間漏洩にはSMT(ハイパースレッディング)が有効である必要があります ― 攻撃者と標的は物理コアを共有していなければなりません。
(2) RDRAND/RDSEEDの出力のみが漏洩し、任意のメモリは漏洩しません。それでも、任意の標的から暗号素材を回復することが可能です。
(3) CVE-2018-3615(Foreshadow SGX)は通常の信頼モデルを逆転させます。OSがSGXエンクレーブデータを読み取ります。SGXエンクレーブを実行しているシステムでのみ問題となり、攻撃者はすでにOSレベルのアクセス権を持っている必要があります。
(4) VM→Hostの漏洩は、特定の影響を受けるCPUモデル(Skylake-X、Kaby Lake、Comet Lake)にのみ適用されます。Ice Lake、Tiger Lake、Rocket Lakeは、ネイティブ(ユーザーからカーネルへの)攻撃では影響を受けますが、ゲストからホストへの攻撃では影響を受けません。
CVE-2017-5753 — 境界チェックバイパス(Spectre Variant 1)
攻撃者はブランチ予測器を訓練して境界チェックを誤予測させ、CPUが投機的に範囲外のメモリにアクセスするように仕向けます。これはカーネルを含むすべてのソフトウェアに影響します。なぜなら、あらゆる条件付き境界チェックが悪用される可能性があるからです。軽減策は、ソフトウェアとカーネルを、適切な位置にLFENCE命令(または array_index_nospec のような同等の投機バリア)を挿入するコンパイラで再コンパイルする必要があります。パフォーマンスへの影響は無視できる程度です。なぜなら、バリアは特定の対象となるコードパターンにのみ適用されるからです。
CVE-2017-5715 — ブランチターゲットインジェクション(Spectre Variant 2)
攻撃者はBranch Target Buffer (BTB) を汚染し、カーネル内の間接分岐の投機的実行をリダイレクトして、カーネルメモリを漏洩させることができます。2つの軽減戦略があります:(1) IBRS (Indirect Branch Restricted Speculation) を提供するマイクロコード更新。これは特権遷移時にブランチ予測状態をフラッシュします。古いハードウェアでは中〜高のパフォーマンスコストがかかります。または (2) retpoline というコンパイラ手法で、間接分岐を投機的に悪用できない構造に置き換えます。こちらはパフォーマンスコストが低いですが、カーネルと影響を受けるソフトウェアの再コンパイルが必要です。
CVE-2017-5754 — Rogue Data Cache Load (Meltdown)
影響を受けるIntelプロセッサでは、ユーザープロセスが許可がないにもかかわらず投機的にカーネルメモリを読み取ることができます。CPUは最終的にフォールトを発生させますが、データはキャッシュに痕跡を残します。軽減策は完全にカーネル側にあります。Page Table Isolation (PTI/KPTI) は、ユーザー空間のページテーブルからほとんどのカーネルメモリをマッピング解除するため、投機的に読み取るべきものがなくなります。パフォーマンスへの影響は低〜中程度で、主にカーネルエントリ/終了のたびにページテーブルを切り替えることによるTLBプレッシャーの増加によるものです。
CVE-2018-3640 — Rogue System Register Read (Variant 3a)
Meltdownと似ていますが、システムレジスタを対象としています。権限のないプロセスが投機的に特権システムレジスタ値(モデル固有レジスタなど)を読み取り、サイドチャネル経由で漏洩させることができます。軽減策はマイクロコード更新のみで、カーネルの変更は不要です。パフォーマンスへの影響は無視できます。
CVE-2018-3639 — Speculative Store Bypass (Variant 4)
CPUは、同じアドレスへの先行ストアが完了する前に投機的にメモリから値をロードし、古いデータを読み取る可能性があります。これは主にJITコンパイルを使用するソフトウェア(JavaScriptエンジン、eBPFなど)に影響し、攻撃者はストアからロードへの依存関係を悪用するコードを作成できます。カーネル自体に対する既知の悪用は実証されていません。軽減策には、SSBDメカニズムを提供するマイクロコード更新と、影響を受けるソフトウェアがprctl()を介して保護をオプトインできるようにするカーネル更新が必要です。パフォーマンスへの影響は低〜中程度で、軽減策がアクティブになる頻度に依存します。
CVE-2018-3615 — L1 Terminal Fault(Foreshadow, SGX)
元のForeshadow攻撃はIntel SGXエンクレーブを標的とします。ページテーブルエントリのPresentビットがクリアされている場合でも、CPUはそのエントリの物理アドレスを使用してL1キャッシュからデータを投機的にフェッチし、SGX保護をバイパスする可能性があります。攻撃者はSGXエンクレーブから秘密(アテステーションキー、シールドデータ)を抽出できます。軽減策には、SGX動作の変更を含むマイクロコード更新が必要です。パフォーマンスへの影響は無視できます。
CVE-2018-3620 — L1 Terminal Fault(Foreshadow-NG, OS/SMM)
ForeshadowをSGXを超えて一般化したものです。特権のないユーザー空間コードが同じL1TFメカニズムを悪用して、カーネルメモリまたはSystem Management Mode (SMM) メモリを読み取ることができます。軽減策には、PTEインバージョンを実装するカーネル更新が必要です。非存在のページテーブルエントリに無効な物理アドレスをマークし、L1キャッシュに有用なデータが含まれないようにします。PTEインバージョンはページテーブル管理ロジックへの1回限りの変更であり、実行時のオーバーヘッドがないため、パフォーマンスへの影響は無視できます。
CVE-2018-3646 — L1 Terminal Fault(Foreshadow-NG, VMM)
ゲストVMはL1TFを悪用して、ホストまたは他のゲストに属するメモリを読み取ることができます。ハイパーバイザーのページテーブルに、L1にまだ存在する有効なホスト物理アドレスを指す非存在エントリが含まれている可能性があるためです。軽減策には、VMエントリごとにL1データキャッシュをフラッシュする(L1dフラッシュサポートを提供するカーネル更新による)、Extended Page Tables (EPT) を無効にする、またはハイパースレッディング (SMT) を無効にして投機中に兄弟スレッドがL1キャッシュを再充填するのを防ぐことが含まれます。パフォーマンスへの影響は、選択した軽減策によって低から顕著まであります。VMエントリ時のL1dフラッシュが最も実用的ですが、VMを多用するワークロードでは測定可能です。
いくつかの一時実行 CVE は、さまざまな理由(重複、サポートされていないハードウェアまたは OS のみに影響、既知の悪用がない理論上のものなど)により、このツールではカバーされていません。 完全なリストと各除外の理由は、 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 ハードウェア、またはそれらの組み合わせのいずれを検査するかに応じて、4 つの動作モードをサポートしています。
ライブモード(デフォルト)では、スクリプトは CPU と実行中のカーネルの両方を検査します。
オプションで --kernel、--config、または --map を渡して、自動検出できないファイルをスクリプトに指定できます。
No-runtimeモードでは、スクリプトはローカル CPU(CPUID、MSR、マイクロコード)を読み取りますが、実行中のカーネルアーティファクト(/sys、/proc、dmesg)はすべてスキップします。
これは、別のシステムからのカーネルイメージがあるが、それを現在の CPU に対して評価したい場合に使用します。
No-hardwareモードでは、CPU 検査と実行中のカーネルアーティファクトの両方を完全にスキップします。 これは、クロスアーキテクチャ解析、たとえば x86 ワークステーション上で ARM カーネルイメージを検査する場合に役立ちます。
Hardware-onlyモードでは、スクリプトはカーネルを検査せずに、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` の2箇所を `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

| MDSUM, RIDL |
| CVE-2019-11135 | TSX Asynchronous Abort | TAA, ZombieLoad V2 |
| CVE-2020-0543 | Special Register Buffer Data Sampling | SRBDS, CROSSTalk |
| CVE-2022-21123 | Shared Buffers Data Read | SBDR, MMIO Stale Data |
| CVE-2022-21125 | Shared Buffers Data Sampling | SBDS, MMIO Stale Data |
| CVE-2022-21166 | Device Register Partial Write | DRPW, MMIO Stale Data |
| CVE-2022-29900 | Return命令による任意投機的コード実行 | Retbleed (AMD) |
| CVE-2022-29901 | Return命令による任意投機的コード実行 | Retbleed (Intel), RSBA |
| CVE-2022-40982 | Gather Data Sampling | Downfall, GDS |
| CVE-2023-20569 | Return Address Security | Inception, SRSO |
| CVE-2023-20588 | AMD Division by Zero Speculative Data Leak | DIV0 |
| CVE-2023-20593 | Cross-Process Information Leak | Zenbleed |
| CVE-2023-23583 | Redundant Prefix Issue | Reptar |
| CVE-2023-28746 | Register File Data Sampling | RFDS |
| CVE-2024-28956 | Indirect Target Selection | ITS |
| CVE-2024-36350 | Transient Scheduler Attack, Store Queue | TSA-SQ |
| CVE-2024-36357 | Transient Scheduler Attack, L1 | TSA-L1 |
| CVE-2025-40300 | VM-Exit Stale Branch Prediction | VMScape |
| CVE-2024-45332 | Branch Privilege Injection | BPI |
| CVE-2025-54505 | AMD Zen1 Floating-Point Divider Stale Data Leak | FPDSS |
| CVE-0001-0002 |
| Speculative unprivileged load (errata 2966298, 3117295) |
| Cortex-A510/A520 |
| CVE-0001-0003 | MSR SSBS not self-synchronizing (erratum 3194386 + siblings) | Cortex-A76/A77/A78/A78C/A710/A715/A720/A720AE/A725, X1/X1C/X2/X3/X4/X925, Neoverse-N1/N2/N3/V1/V2/V3/V3AE |
| 脆弱性 | Userland → Kernel | Userland → Userland | VM → Host | VM → VM | 軽減策 |
|---|
| 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) | ✅ | ✅ | ☠️ | ✅ | ハイパーバイザー更新(またはhugepage無効化) |
| 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) | ✅ | ✅ | 💥 | ✅ | カーネル更新(VM終了時IBPB) |
| CVE-2024-45332 (BPI) | 💥 | ✅ | 💥 | ✅ | マイクロコード更新 |
| CVE-2025-54505 (FPDSS) | 💥 | 💥 | 💥 | 💥 | カーネル更新 |
CVE-2018-12126 — Microarchitectural Store Buffer Data Sampling (MSBDS, Fallout)
CVE-2018-12127 — Microarchitectural Load Port Data Sampling (MLPDS, RIDL)
CVE-2018-12130 — Microarchitectural Fill Buffer Data Sampling (MFBDS, ZombieLoad)
CVE-2019-11091 — Microarchitectural Data Sampling Uncacheable Memory (MDSUM, RIDL)
これら4つのCVEはまとめて「MDS」(Microarchitectural Data Sampling)脆弱性として知られています。これらは、投機的実行中に特権境界を越えて最近アクセスされたデータを漏洩させることができる、異なるCPU内部バッファ(ストアバッファ、フィルバッファ、ロードポート、キャッシュ不能メモリパス)を悪用します。権限のない攻撃者は、カーネルや他のプロセスが最近処理したデータを観察できます。軽減策には、MD_CLEARメカニズムを提供するマイクロコード更新と、特権遷移時にVERWを使用して影響を受けるバッファをクリアするカーネル更新が必要です。ハイパースレッディング (SMT) を無効にすると、兄弟スレッドがこれらのバッファを共有するため、追加の保護が得られます。パフォーマンスへの影響は低〜顕著で、カーネル遷移の頻度とSMTが無効かどうかに依存します。
CVE-2018-12207 — Machine Check Exception on Page Size Changes (iTLB Multihit, No eXcuses)
悪意のあるゲストVMは、ページサイズ変更を含む特定の条件を命令TLB内に作成することで、マシンチェック例外 (MCE) を引き起こし(ホスト全体をクラッシュさせる)、サービス拒否を引き起こす可能性があります。これは、信頼できないゲストを実行するハイパーバイザーに影響するサービス拒否脆弱性です。軽減策には、ハイパーバイザーでのhugepageの使用を無効にするか、問題のあるiTLB設定を回避するようにハイパーバイザーを更新することが含まれます。パフォーマンスへの影響は、アプローチによって低から顕著まであります。hugepageを無効にすると、メモリを多用するワークロードにかなりの影響を与える可能性があります。
CVE-2019-11135 — TSX Asynchronous Abort (TAA, ZombieLoad V2)
Intel TSXを搭載したCPUでは、トランザクションアボートがラインフィルバッファ内のデータをサイドチャネルを通じて観察可能な状態に残す可能性があります。これはMDS脆弱性と似ていますが、TSXを介してトリガーされます。軽減策には、マイクロコード更新と、影響を受けるバッファをクリアするかTSXを完全に無効にする(TSX_CTRL MSR経由)カーネルサポートが必要です。パフォーマンスへの影響はMDSと同様に低〜顕著で、TSXを無効にすることで攻撃対象領域を完全になくすことができますが、トランザクションメモリサポートを失うコストがかかります。
CVE-2020-0543 — Special Register Buffer Data Sampling (SRBDS, CROSSTalk)
特定の特別なCPU命令(RDRAND、RDSEED、EGETKEY)は、投機的実行を介してすべてのコアからアクセス可能な共有ステージングバッファを介してデータを読み取ります。任意のコアでコードを実行している攻撃者は、別のコア上の被害者からのこれらの命令の出力を観察でき、SGXエンクレーブから暗号鍵を抽出することも含まれます(完全なECDSA鍵が実証されました)。これは、最初のクロスコア投機的実行攻撃の1つとして注目されています。軽減策には、ステージングバッファへのアクセスをシリアル化するマイクロコード更新と、軽減策を管理するカーネル更新が必要です。パフォーマンスへの影響は低く、主にRDRAND/RDSEEDを多用するワークロードに影響します。
CVE-2022-21123, CVE-2022-21125, CVE-2022-21166 — Processor MMIO Stale Data (SBDR, SBDS, DRPW)
MMIO(メモリマップドI/O)操作中に、CPU内部フィルバッファからの古いデータがサイドチャネル攻撃を通じて推測される可能性がある、MMIO脆弱性のクラスです。3つのサブ脆弱性がカバーされています: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 CPUには、HaswellからRocket Lakeまでのサーバーおよびクライアントプロセッサ、さらにTremont Atomコアが含まれます。軽減策には、FB_CLEAR機能(VERW命令がフィルバッファをクリア)を提供するマイクロコード更新と、カーネル/ユーザー遷移およびVMエントリ/終了時にVERWを呼び出すカーネル更新(Linux 5.19+)が必要です。SMTが有効な場合、軽減策がアクティブでも兄弟スレッドは脆弱性を悪用できます。パフォーマンスへの影響は低く、VERWメカニズムは既存のMDS軽減策と共有されているためです。
CVE-2022-29900 — Return命令による任意投機的コード実行(Retbleed AMD)
ファミリ0x15から0x17(BulldozerからZen 2)のAMDプロセッサとHygonファミリ0x18において、攻撃者はreturn命令を悪用して投機的実行をリダイレクトし、カーネルメモリを漏洩させることができます。これはSpectre V2に対して効果的だったretpoline軽減策をバイパスします。Spectre V2が間接ジャンプとコールを標的とするのに対し、Retbleedは特にreturn命令を標的とします。これらは以前は安全と見なされていました。軽減策には、未訓練のreturn thunk(安全なRET)またはIBPB-on-entryメカニズムを提供するカーネル更新と、Zen 1/2でIBPBサポートを提供するマイクロコード更新が必要です。Zen 1/2では、IBPBベースの軽減策を使用する場合、完全な保護のためにSMTを無効にする必要があります。パフォーマンスへの影響は中程度です。
CVE-2022-29901 — Return命令による任意投機的コード実行(Retbleed Intel, RSBA)
RSB Alternate Behavior (RSBA) を持つIntel SkylakeからRocket Lakeのプロセッサでは、Return Stack Bufferがアンダーフローすると、ブランチターゲットバッファを介してreturn命令が投機的にリダイレクトされ、retpoline軽減策をバイパスする可能性があります。軽減策には、Enhanced IBRS (eIBRS、マイクロコード更新経由) またはIBRS-on-entryサポートでコンパイルされたカーネル(Linux 5.19+)が必要です。コール深度追跡(stuffing)は、Linux 6.2+から利用可能な代替軽減策です。プレーンなretpolineは、RSBA対応CPUではこの脆弱性を軽減しません。パフォーマンスへの影響は中〜高程度です。
**CVE-2022-40982 — Gather Data Sampling (GDS, Downfall)**AVX GATHER 命令は、共有された gather データバッファを介して、権限境界を越えて以前に使用されたベクタレジスタからデータを漏洩させる可能性があります。これは、脆弱な Intel プロセッサ上で AVX2 または AVX-512 を使用するあらゆるソフトウェアに影響します。gather バッファをクリアするマイクロコード更新、または AVX 機能全体を無効にすることによって緩和されます。ほとんどのワークロードではパフォーマンスへの影響は無視できますが、HPC や AI 推論などの AVX 多用アプリケーションでは最大 50% まで顕著になる可能性があります。
CVE-2023-20569 — Return Address Security (Inception, SRSO)
AMD Zen 1 から Zen 4 プロセッサにおいて、攻撃者は return 命令の投機的実行をリダイレクトするために return アドレス予測子を操作し、カーネルメモリを漏洩させる可能性があります。緩和には、カーネル更新(SRSO セーフリターンシーケンスまたは IBPB-on-entry を提供)とマイクロコード更新(Zen 3/4 では SBPB、または Zen 1/2 では IBPB サポートを提供 - これにはさらに SMT を無効にする必要があります)の両方が必要です。パフォーマンスへの影響は、選択した緩和策と CPU 世代によって低から顕著な範囲になります。
CVE-2023-20588 — AMD Division by Zero Speculative Data Leak (DIV0)
AMD Zen 1 プロセッサにおいて、#DE(ゼロ除算例外)により、除算ユニットに以前の除算からの古い商データが残り、後続の除算によって投機的サイドチャネルを介して観察可能になる可能性があります。これにより、同じ物理コアを共有する SMT スレッド間を含む、あらゆる権限境界を越えてデータが漏洩する可能性があります。緩和には、ユーザースペースへのすべての exit 時および VMRUN の前にダミー除算(amd_clear_divider())を追加し、古いデータが存続するのを防ぐカーネル更新(Linux 6.5+)が必要です。マイクロコード更新は必要ありません。SMT を無効にすると、カーネルの緩和策が SMT スレッド間の漏洩をカバーしないため、追加の保護が提供されます。パフォーマンスへの影響は無視できます。
CVE-2023-20593 — Cross-Process Information Leak (Zenbleed)
AMD Zen 2 プロセッサのバグにより、投機的実行中に VZEROUPPER 命令がレジスタファイルを誤ってゼロクリアし、ベクタレジスタ内の他のプロセスからの古いデータが観察可能になる可能性があります。これにより、カーネルや他のプロセスから、コアあたり最大 30 KB/s の速度で、あらゆる権限境界を越えてデータが漏洩する可能性があります。緩和は、バグを修正するマイクロコード更新、または FP_BACKUP_FIX ビット(ビット 9)を DE_CFG MSR に設定し、誤った最適化を無効にするカーネルの回避策のいずれかによって利用可能です。どちらか一方のアプローチで十分です。パフォーマンスへの影響は無視できます。
CVE-2023-23583 — Redundant Prefix Issue (Reptar)
Intel プロセッサのバグにより、特定の冗長な REX プレフィックスを持つ命令の実行中に予期しない動作が発生します。状況によっては、システムクラッシュ(MCE)、予測不能な動作、または権限昇格の可能性があります。影響を受ける CPU 上で動作するあらゆるソフトウェアがバグをトリガーする可能性があります。緩和にはマイクロコード更新が必要です。パフォーマンスへの影響は低いです。
CVE-2023-28746 — Register File Data Sampling (RFDS)
特定の Intel Atom およびハイブリッドプロセッサ(Goldmont、Goldmont Plus、Tremont、Gracemont、および Alder Lake と Raptor Lake の Atom コア)において、投機的実行を介してアクセス可能な以前の操作からの古いデータがレジスタファイルに保持され、攻撃者が権限境界を越えてデータを推論できる可能性があります。緩和には、RFDS_CLEAR 機能を提供するマイクロコード更新と、VERW 命令を使用して権限遷移時にレジスタファイルをクリアするカーネル更新(CONFIG_MITIGATION_RFDS、Linux 6.9+)の両方が必要です。RFDS_NO 機能ビットを持つ CPU は影響を受けません。パフォーマンスへの影響は低いです。
CVE-2024-28956 — Indirect Target Selection (ITS)
特定の Intel プロセッサ(Skylake-X stepping 6+、Kaby Lake、Comet Lake、Ice Lake、Tiger Lake、Rocket Lake)において、攻撃者は間接分岐予測子を訓練して、カーネル内の標的化されたガジェットを投機的に実行させ、eIBRS 保護をバイパスする可能性があります。Branch Target Buffer(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 — Transient Scheduler Attack, Store Queue (TSA-SQ)
AMD Zen 3 および Zen 4 プロセッサにおいて、CPU の一時スケジューラが特定のタイミングウィンドウ中にストアキューから古いデータを投機的に取得し、攻撃者が権限境界を越えて以前のストア操作からのデータを推論できる可能性があります。この攻撃は、SMT スレッド間でもデータを漏洩させる可能性があります。緩和には、VERW_CLEAR 機能を公開するマイクロコード更新と、VERW 命令を使用してユーザー/カーネル遷移時および VMRUN の前に CPU バッファをクリアするカーネル更新(CONFIG_MITIGATION_TSA、Linux 6.16+)の両方が必要です。カーネルは、SMT がアクティブな場合、アイドル時にもバッファをクリアします。パフォーマンスへの影響は低から中程度です。
CVE-2024-36357 — Transient Scheduler Attack, L1 (TSA-L1)
AMD Zen 3 および Zen 4 プロセッサにおいて、CPU の一時スケジューラが特定のタイミングウィンドウ中に L1 データキャッシュから古いデータを投機的に取得し、攻撃者が L1D キャッシュ内のデータを権限境界を越えて推論できる可能性があります。緩和には、TSA-SQ と同じマイクロコードおよびカーネル更新が必要です。VERW_CLEAR を公開するマイクロコード更新と、権限遷移時に VERW を介して CPU バッファをクリアするカーネル更新(CONFIG_MITIGATION_TSA、Linux 6.16+)が必要です。パフォーマンスへの影響は低から中程度です。
CVE-2025-40300 — VM-Exit Stale Branch Prediction (VMScape)
ゲスト VM がホストに exit した後、ゲストからの古い分岐予測が、カーネルがユーザースペースに戻る前にホスト側の投機的実行に影響を与え、ローカル攻撃者がホストカーネルメモリを漏洩させる可能性があります。これは、Sandy Bridge から Arrow Lake/Lunar Lake までの Intel プロセッサ、AMD Zen 1 から Zen 5 ファミリ、および Hygon ファミリ 0x18 に影響します。信頼されていないゲストでハイパーバイザーを実行しているシステムのみがリスクにさらされます。緩和には、VM exit 後にユーザースペースに戻る前に IBPB を発行するカーネル更新(CONFIG_MITIGATION_VMSCAPE、Linux 6.18+)が必要です。既存の IBPB サポート以外に特定のマイクロコード更新は必要ありません。パフォーマンスへの影響は低いです。
CVE-2024-45332 — Branch Privilege Injection (BPI)
Intel プロセッサ(Coffee Lake から Raptor Lake、および一部のサーバーおよび Atom 部品)の分岐予測子更新メカニズムの競合状態により、ユーザースペースの分岐予測がカーネルスペースの投機的実行に一時的に影響を与え、eIBRS および IBPB 保護を弱体化させる可能性があります。これは、Spectre V2 緩和のために eIBRS のみに依存しているシステムが、マイクロコード修正なしでは完全に保護されない可能性があることを意味します。緩和には、非同期分岐予測子更新のタイミングを修正するマイクロコード更新(intel-microcode 20250512+)が必要であり、eIBRS と IBPB が本来意図されたとおりに機能するようにします。カーネルの変更は必要ありません。パフォーマンスへの影響は無視できます。
CVE-2025-54505 — AMD Zen1 Floating-Point Divider Stale Data Leak (FPDSS)
AMD Zen1 および Zen+ プロセッサ(EPYC 7001、EPYC Embedded 3000、Athlon 3000 with Radeon、Ryzen 3000 with Radeon、Ryzen PRO 3000 with Radeon Vega)において、ハードウェア浮動小数点除算器が以前の操作からの部分商データを保持する可能性があります。特定の状況下で、その結果は同じ除算器を共有する別のスレッドに漏洩し、あらゆる権限境界を越える可能性があります。これは CVE-2025-54505 として割り当てられ、AMD によって 2026-04-17 に AMD-SB-7053 として公開されました。緩和には、ブート時にすべての Zen1 CPU で MSR 0xc0011028(MSR_AMD64_FP_CFG)のビット 9(ZEN1_DENORM_FIX_BIT)を無条件に設定し、漏洩の原因となるハードウェア最適化を無効にするカーネル更新(mainline commit e55d98e77561、"x86/CPU: Fix FPDSS on Zen1"、Linux 7.1)が必要です。マイクロコード更新は必要ありません。チキンビットは Zen1 シリコンに工場出荷時から存在し、マイクロコードリビジョンに依存しません。パフォーマンスへの影響は、浮動小数点除算スループットのわずかな低下に限定されます。そのため、AMD はハードウェアでデフォルトでこのビットを有効にしていません。
| モード | フラグ | CPU ハードウェア | 実行中のカーネル | カーネルイメージ | 使用例 |
|---|
| ライブ (デフォルト) | (なし) | はい | はい | 自動検出 | 現在のシステムの日常的な監査 |
| No-runtime | --no-runtime | はい | いいえ | 必須 | この CPU に対して異なるカーネルをチェックする(例:展開前) |
| No-hardware | --no-hw | いいえ | いいえ | 必須 | 別のシステムまたはアーキテクチャのカーネルイメージの純粋な静的解析 |
| Hardware-only | --hw-only | はい | いいえ | いいえ | カーネルを検査せずに CPU の影響をすばやく確認する |