Spectre/Meltdown に代表されるCPUの脆弱性に関する対処方法です。
2019年12月現在 FreeBSD での対処方法はありません。
CPU feature のIBRS を有効にします。 またはカーネルを含む実行ファイルを retpoline を有効にしてコンパイルしなおします。 どちらもデフォルトでは無効です。
事前にマイクロコードアップデートが必要です。
sysctl で hw.ibrs_disable=0 を設定します。
または、clang に -mretpoline を渡してコンパイルしなおします。
sysctl で hw.ibrs_disable=1 を設定します。
または、clang に -mno-retpoline を渡してコンパイルしなおします。
カーネルに実装されている PTI (Page Table Isolation) を有効にします。 PTIはデフォルトで有効になっています。
11.2 以降の対応済のカーネルを用意します。
sysctl で vm.pmap.pti=1 を設定します。
sysctl で vm.pmap.pti=0 を設定します。
CPU Feature の SSBD を有効にします。 デフォルトでは無効です。
マイクロコードアップデートが必要です。
/boot/loader.conf に以下を指定します。
hw.spec_store_bypass_disable=2
値の意味は 0:off 1:on 2:auto です。
/boot/loader.conf に以下を指定します。
hw.spec_store_bypass_disable=0
2019年12月現在リリースされているカーネルは全て対策済です。
CPU Feature のL1DFLを使うか、ソフトウェアでL1Dキャッシュをクリアします。 デフォルトでは無効です。
マイクロコードアップデートを行います。 アップデートしなくてもソフトウェアの実装が使用されます。
/boot/loader.conf に以下を指定します。
machdep.syscall_ret_flush_l1d: 1
値の意味は次の通りです。
0:off 1:0n 2:hw 3:sw
/boot/loader.conf に以下を指定します。
machdep.syscall_ret_flush_l1d: 0
CPU feature の MD_LOAD を有効にします。 デフォルトは無効です。
マイクロコードアップデートが必要です。
/boot/loader.conf に以下を設定します。
machdep.hyperthreading_allowed=0
その上で sysctl で hw.mds_disable=3 を指定します。
数字の意味は次の通りです。
0 - mitigation disabled 1 - VERW instruction (microcode) mitigation enabled 2 - Software sequence mitigation enabled (not recommended) 3 - Automatic VERW or Software selection
sysctl で hw.mds_disable=0 を指定します。