メモ:Spectre Variant 2(CVE-2017-5715)とCPU側の対策(IBRS/eIBRS)とOS側の対策

随分前の話だけど、たまに関係性で混乱するのでメモ。

Spectre Variant 2の対策として、間接分岐の投機実行制限 (IBRS)がCPU側に実装された。

CPU側は、あくまで制限をかける手段を準備しただけなのでOS側の対応が必要。

最近のOSはintel社のCPU microcode updateを内包しているケースが多いので、BIOS更新をしなくてもOSを更新すれば緩和対策がほぼ実現できる。

CPU(intel社)の対策
  • IBRS: CPU microcodeで実装,model-specific register (MSR)にIA32_SPEC_CTRL.IBRSを設けた。
  • eIBRS: IBRSをハードウェアレベルで実装
CPU(CPU microcode)
  • INTEL-SA-00088が該当。BIOSのリリースメモにこれが記載されていればmicrocode updateが含まれる。
OS側の対策

常時IBRSは、基本的にはkernel(ring 0)でMSRのIA32_SPEC_CTRL.IBRSに1を設定(必要な条件(HLT実行時等)では無効化再有効化を実施)。
ただ、間接分岐の投機実行制限するとCPUの処理能力が落ちる問題がある。