CPUの脆弱性「Spectre」および「Meltdown」を巡って、プロセッサベンダーやオペレーティングシステムベンダー/プロジェクト、セキュリティファームが連日のように何らかの発表を行っている。IntelはすでにCPUのマイクロコードのアップデート版を公開しており、AMDも向こう数週間で同社のCPU向けマイクロコードの最新版を公開するとしている。

更新されたマイクロコードはオペレーティングシステムの起動時に読み込む形で利用されることが多い。FreeBSDではdevcpu-dataパッケージを用いることで、最新のマイクロコードを利用するように設定できる。devcpu-dataパッケージをインストールしたら、/etc/rc.confファイルに「microcode_update_enable="YES"」という設定を追加する。これでシステム起動時に最新のマイクロコードが読み込まれるようになる。

devcpu-dataパッケージをインストール

pkg install devcpu-data

/etc/rc.confに追加する設定

microcode_update_enable="YES"

マイクロコードのアップデートはcpucontrol(8)コマンドで実行される。devcpu-dataパッケージはcpucontrol(8)コマンドを実行するためのスクリプトと、各種プロセッサのマイクロコード(ファームウェア)をまとめたもの。システム起動時には次のようにスクリプトが実行され、最新のマイクロコードが読み込まれている。

手動でアップデートを実施した場合の実行例

# service microcode_update start
Updating cpucodes...
/usr/local/share/cpucontrol/m32306c3_00000023.fw: updating cpu /dev/cpuctl0 from rev 0x1c to rev 0x23... done.
/usr/local/share/cpucontrol/m32306c3_00000023.fw: updating cpu /dev/cpuctl1 from rev 0x1c to rev 0x23... done.
/usr/local/share/cpucontrol/m32306c3_00000023.fw: updating cpu /dev/cpuctl2 from rev 0x1c to rev 0x23... done.
/usr/local/share/cpucontrol/m32306c3_00000023.fw: updating cpu /dev/cpuctl3 from rev 0x1c to rev 0x23... done.
Done.
#
  • FreeBSDでCPUのマイクロコードをアップデートしたサンプル

    FreeBSDでCPUのマイクロコードをアップデートしたサンプル

Meltdownに関しては最終的にオペレーティングシステム側で対応が実施されることになるが、Spectreに関しては抜本的な解決は困難だと考えられている。マイクロコードではSpectreの影響を低減するための処理が取り込まれると見られており、今後もアップデートが行われる可能性がある。