Ubuntuにおける“⁠Spectre⁠”対策の現状

“⁠Spectre⁠”対策その後

Ubuntuにおける“⁠Spectre⁠”対策の現状が提供されています。

ポイントは次の点です。要約すると,「⁠今後リリースされるマイクロコードと併用することでひとまず攻撃を防ぐことはできるが,利用する環境によっては性能ダウンに繋がることがある」です。

1月22日から,“⁠Spectre⁠”対策のためのカーネルアップデートが,17.10,16.04 LTS,14.04 LTS用にUSN3540~3542として提供されています。12.04 ESM用は準備中です。また,17.04はすでにEOLしており,更新の予定はありません。
これらの修正が機能するためには,CPUマイクロコードの更新が必要です。 しかし,更新版のマイクロコードを提供するintel-microcodeパッケージはIntelのリクエストにより差し戻しが行われており,現時点では(マザーボード側で更新されているのでなければ)まだ機能しません(注1)⁠。
ワークロードに依存しますが,“⁠Spectre⁠”対策によって性能劣化が生じる可能性があります。
パフォーマンスに大きな影響を受けてしまった場合に備え,緩和策を必要に応じて無効にするためのMitigation Controlが準備されています。(⁠多くのUbuntuユーザーが利用しているであろう)x64環境では,nopti,noibpb,noibrsがパフォーマンスに影響すると考えられるため,対策を無効にする場合はこれらのオプションを用いることになるでしょう(注2,注3)⁠。
各種対策は現在進行形で更新されています。今後の動向に注意し,より適切な対策手法が提供された場合,そちらに乗り換える必要があります。

注1
CPUのマイクロコードの更新を行う方法は大きく分けて2種類あります。ひとつはマザーボード(やPC)のファームウェアを更新することで,もうひとつがintel-microcodeパッケージのような,オンザフライで更新するソフトウェアセット(+バイナリブロブ)をOS側で持つことです。いずれかの方法で対応するマイクロコードが提供されれば良いのですが,現時点ではIntelからリリース版のマイクロコードが提供されていないため,どちらのアプローチも利用できません。

注2
これらのオプションはあくまでも脆弱性対策を無効にするものです。目的としては,「⁠(今後登場する脆弱性への対応のために)カーネルを更新しつつ,しかしSpectre対策による性能劣化の影響を受けたくないので対策を無効にし,脆弱性の影響は他のレイヤで制御する」という場合に選択するものです。

注3
amd64環境ではnopcidも利用できますが,これは緩和実装に働く支援機能を無効にするもののため,むしろ性能を低下させる方向に働くと考えられます。


ソ-ス:2018年1月26日号 Ubuntu Product Month,“Spectre”対策その後:Ubuntu Weekly Topics|gihyo.jp … 技術評論社


投機的実行に関する脆弱性「Meltdown」と「Spectre」について解説 | トレンドマイクロ セキュリティブログ