ハードウェアセキュリティ
一部のCPUで問題になったMeltdownと呼ばれる脆弱性の原理として正しいものはどれか。
- ACPUが熱で溶けて、データが外に漏れる
- B権限のないカーネルのメモリを読む命令でも、権限の確認による例外が確定する前に投機的に値が読まれ、その値に依存した痕跡がキャッシュに残る
- Cカーネルのメモリが、すべてのプロセスに公開されている設定の誤り
答えと解説を見る
正解:B. 権限のないカーネルのメモリを読む命令でも、権限の確認による例外が確定する前に投機的に値が読まれ、その値に依存した痕跡がキャッシュに残る
ユーザのプログラムがカーネルのメモリを読もうとすると、本来は権限の違反で例外になり、値は得られません。しかし影響を受けたCPUでは、例外が確定するまでの短い間に、読んだ値を使う後ろの命令が投機的に実行され、その値に応じた場所がキャッシュに読み込まれました。例外で結果は捨てられても、キャッシュのサイドチャネルでカーネルのデータを推測できたのです。
- A. 物理的に溶けるわけではありません。
- B. 正しい。権限の確認と投機的な読み出しの順序が問題でした。
- C. 設定の誤りではなく、CPUの実装の問題です。