SpectreとMeltdownは、CPUの高速化機構とメモリ分離の関係を悪用する脆弱性です。細部は攻撃手法ごとに異なりますが、学習上は次の3つの概念を押さえると理解しやすくなります。
- 分岐予測と投機的実行(speculative execution):CPUが分岐の結果を予測し、確定前に処理を進める。
- キャッシュ:CPUが頻繁に使うデータを高速なメモリへ一時保存する。
- サイドチャネル攻撃(side-channel attack):処理結果そのものではなく、実行時間などの間接的な情報を測定する。
攻撃者は、投機的実行中に本来読めないデータへアクセスさせ、そのアクセスによってキャッシュの状態を変化させます。処理が後から取り消されても、キャッシュの状態変化は完全には消えないことがあります。攻撃者は、特定のアドレスへのアクセス時間を測定し、キャッシュに残っているかどうかを推測します。
秘密データへの投機的アクセス
↓
キャッシュ状態の変化
↓
アクセス時間を測定
↓
間接的にデータを推測
まとめ#
- キャッシュのアクセス時間には、ヒットとミスで差がある。
- 投機的実行は通常は性能向上に役立つが、状態変化がサイドチャネルになることがある。
- OS、コンパイラー、CPUマイクロコード、ブラウザーなどが、脆弱性ごとに緩和策を提供している。

