2018年にGoogleのProject ZeroがCPUの脆弱性SpectreとMeltdownを公開し話題になったことを今更ながら知った
googleprojectzero.blogspot.com
CPUデータキャッシュのタイミングを悪用して、誤って推測された実行から情報を効率的にリークし、さまざまなコンテキストでローカルセキュリティの境界を越えて任意の仮想メモリの読み取りが可能になるの脆弱性のこと
ハードウェアレベルの脆弱性なので幅広いコンピュータ機器に影響があるとのこと
内容が難しかったのでこちらを参考にさせてもらった www.fujitsu.com
Spectre(スペクター)
- あるプロセスの投機的実行で、読まれてはいけない情報をCPUのキャッシュメモリに読み込むように仕向ける
- 別プロセスでキャッシュの情報を参照することで、読まれてはいけない情報を読むことが可能となる
Meltdown(メルトダウン)
- ある程度時間がかかる繰り返し処理などで、一定時間後アクセスが禁止されている領域をアクセスするような処理を書いておく
- 例外が発生するであろう処理の後に、アクセス履歴をCPUのキャッシュ内に残すような処理を書いておく
- アクセスが禁止されている領域にアクセスすると、例外が発生して処理が中断される
- アウトオブオーダー実行により、例外発生前に2.の処理が実行される
- 4.のCPUのキャッシュを読み取ることにより、物理メモリのどの場所にアクセスが禁止されている情報があるかを判断して、参照することが可能となる
なんとなく、
スペクターはCPUの分岐先読み機能を利用して長期間学習させた後、学習したこととは違う別の分岐で実行すべきだったことをさせて、テンパってる間にキャッシュにあるパスワードなどの情報を抜き出す方法
メルトダウンはわざとアクセスエラーを起こして、CPUが順番どおりに命令が実行されていなかったことでテンパってる間にキャッシュにある情報を抜き出す方法
と理解した
IntelとAMDの両方がこの脆弱性に対するパッチをリリースしているが、それにより従来の高速性は低下しているとのこと
https://gigazine.net/news/20210107-meltdown-spectre-cpu-security/