Branch History Injection(BHI)とUbuntuの対応方針
2022年3月8日、「Alder Lake」など一部の「Intel CPU」及び「ARM CPU」で見つかった機密情報漏洩の脆弱性が公開されました。機密情報を取得できる
この脆弱性はカーネルスペース内で間接呼び出しを行うような非特権のユーザープロセスから投機的な実行を行うことで機密情報を取得できる脆弱性です。最新情報を入手するには
「BHI」と「Ubuntu」の対応方針に関する最新情報を入手するには、以下を参照してください。BHIに関する資料やアナウンス
「BHI」に関する資料は、以下を参照してください。「Intel」からのアナウンスは、以下を参照してください。
- Intel® Processor Advisory
- Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598
- Chips & Salsa Episode 12 - March 2022 Security Advisories
「ARM」からのアナウンスは、以下を参照してください。
- Spectre-BHB Updated on 08/March/2022
- Spectre-BHB White Paper v1.6
- Spectre-BHB Security response updates
「Linux kernel」の「BHI」に関連する情報は、以下を参照してください。
- Documentation for /proc/sys/kernel/ - unprivileged_bpf_disabled
- The kernel’s command-line parameters - spectre_v2
影響を受けるCPU
本件に影響を受ける「Intel CPU」の一覧は、以下を参照してください。本件に影響を受ける「ARM CPU」の一覧は、以下を参照してください。
CVE
脆弱性には各脆弱性を一意に識別する「CVE」が割り当てられています。「BHI」には以下の「CVE」が割り当てられています。
BHIとeBPF
現状では「eBPF」で本脆弱性が利用可能であると実証されています。そのため「Intel」では非特権の「eBPF」を無効化することと、「eIBRS」でコードを実行することを推奨しています。
「eBPF」を無効化するためにマシンを再起動する必要はありませんが、「Linux kernel 5.11」以前で再度有効化する時は再起動が必要になります。
ただし「Ubuntu」では「Linux kernel 5.4」「Linux kernel 4.15」「Linux kernel 4.4」でも再起動なしに再度有効化する機能をバックポートしています。
潜在的な攻撃とRetpoline
今のところ「eIBRS」をサポートしておらずデフォルトで「Retpoline」を利用しているCPUは、本脆弱性に影響を受けないと考えられています。また「Retpoline」は将来的に潜在的な攻撃手段が顕になっても、その脆弱性の緩和策の1つになり得ます。
そのため潜在的な攻撃に懸念を持つユーザーは、「eIBRS」をサポートしているCPUでも潜在的な攻撃に備え「Retpoline」の利用も推奨されています。
しかし「Retpoline」はパフォーマンスに影響を与えるため、デフォルトでは有効になっていません。
潜在的な攻撃に懸念を持つユーザーは、起動オプションに「spectre_v2=eibrs+retpoline」を指定することでこれらを同時に有効化できます。
Ubuntuの対応方針
「Ubuntu」では非特権の「eBPF」を無効化する「Linux kernel」をリリースしています。「Linux kernel」のバージョンは以下の通りです。
OS | GAカーネル | HWEカーネル |
---|---|---|
Ubuntu 21.10 | linux-image-5.13.0-35-generic 5.13.0-35.40 | 存在しない |
Ubuntu 20.04 LTS | linux-image-5.4.0-104-generic 5.4.0-104.118 | linux-image-5.13.0-35-generic 5.13.0-35.40~20.04.1 |
Ubuntu 18.04 LTS | linux-image-4.15.0-171-generic 4.15.0-171.180 | linux-image-5.4.0-104-generic 5.4.0-104.118~18.04.1 |
Ubuntu 16.04 ESM | linux-image-4.4.0-221-generic 4.4.0-221.254 | linux-image-4.15.0-171-generic 4.15.0-171.180~16.04.1 |
Ubuntu 14.04 ESM | 影響なし(非特権eBPFはサポートしていないため) | linux-image-4.4.0-221-generic 4.4.0-221.254~14.04.1 |
カジュアルユーザーはどうすればいい?
いつもどおりに「ソフトウェアの更新」を起動し、すべてのソフトウェアをアップデートしてください。アップデート完了後に再起動が促されたらPCを再起動してください。
Ubuntu Security Notices(USN)
本件に対応した「Ubuntu」向け「Linux kernel」のリリースアナウンスは、以下を参照してください。- USN-5317-1: Linux kernel vulnerabilities
- USN-5318-1: Linux kernel vulnerabilities
- USN-5319-1: Linux kernel vulnerabilities
「Ubuntu」の公式フレーバーも同様です。
パブリッククラウド向けイメージ
パブリッククラウド向けイメージでは、以下のイメージバージョンで対応しています。クラウド | イメージバージョン |
---|---|
Amazon AWS | 20220308以降 |
Windows Azure | 20220308以降 |
Google Compute Engine | 20220308以降 |
Ubuntu Core Images | 20220308以降 |
非特権eBPFの有効・無効を切り替えるには
非特権「eBPF」の有効・無効を切り替える方法です。現在の設定を確認するには
現在の設定を確認するには、「端末」で以下のコマンドを実行します。
sysctl kernel.unprivileged_bpf_disabled
値の詳細は、以下を参照してください。
非特権のeBPFの再有効化
非特権の「eBPF」の再有効化するには、「端末」で以下のコマンドを実行します。
sudo sysctl kernel.unprivileged_bpf_disabled=0
非特権のeBPFを次回起動時まで無効化
非特権の「eBPF」をOSの次回起動時まで無効化するには、「端末」で以下のコマンドを実行します。
sudo sysctl kernel.unprivileged_bpf_disabled=1
非特権のeBPFを再有効化可能な状態で無効化
非特権の「eBPF」を無効化するが、マシンの再起動なしに再度有効化可能な状態にするには、「端末」で以下のコマンドを実行します。
sudo sysctl kernel.unprivileged_bpf_disabled=2