web-dev-qa-db-ja.com

カーネル4.14.14を搭載したLinuxマシンでスペクターレトポリン機能が有効になっていることを確認するにはどうすればよいですか?

ELRepo から最新の安定したカーネル4.14.14をインストールしました。これには、Spectreの脆弱性に対する修正があるようです。

changelog は、CONFIG_RETPOLINEファイルに/boot/config-4.14.14-1.el7.elrepo.x86_64があり、Spectre軽減機能を有効にし、私の場合はそうだと言っています。

しかし、これを実行するとき script すべての修正内容を確認するために、4.14.13と4.14.14カーネルの出力に大きな違いはありません。このretpoline機能は本当に有効になっていますか?有効になっている場合、それを確認するにはどうすればよいですか?

4.14.13出力enter image description here

4.14.14出力enter image description here

また、4.14.14と今後の機能カーネルで利用可能な妖怪バリアント保護に関する情報にも興味があります。

2
mchawre

現在、Vanilla(またはElRepo)カーネルでできることはほとんどすべて完了しているようです。

ディストリビューションカーネルは、名目上は古いバージョンである可能性がありますが、より多くのセキュリティパッチが含まれている可能性があります。これはまだVanillaカーネルに組み込まれていません。特に、エンタープライズディストリビューションは現在、CPUメーカーや自社の開発リソースからの恐らくインサイダー情報に取り組んでおり、修正を機能させてリリースしています。この状況では、最新のバニラカーネルが必ずしも最良の選択であるとは限りません。

4.14.13カーネルのスクリプト出力によると、プロセッサはマイクロコードの更新の恩恵を受ける可能性があります。更新されたマイクロコードはIBRSを有効にします。これはSpectreVariant 2を軽減する1つの方法です。実際にIBRSを使用するには、現在検討中のカーネルパッチがさらに必要になり、4.15カーネルに含まれる場合と含まれない場合があります(その後、古いカーネルバージョン)。

4.14.14では、カーネルはCONFIG_RETPOLINEオプションを提供します。これは、IBRSの有無にかかわらずSpectre Variant 2を軽減するために使用できますが、現在のコンパイラバージョンではまだ完全な効果を得るためにレトポリンを実装することはできません。しかし、現在のレトポリンの状態は依然として脆弱ですが、何もないよりはましです。

Spectre Variant 1の緩和策には、コンパイラーの変更も必要です。

したがって、あなたは主に、適切な場所に多くのLFENCE命令を持ち、より厳格なretpoline実装でカーネルをコンパイルできるようにするCコンパイラの更新を主に待っています。これらは両方のSpectreバリアントを軽減しますが、Variant 2の完全なretpolineは一部のCPUパフォーマンスを使い果たす可能性があります。

次に、IBRSとカーネルの更新で実際にそれを使用できるようにする、CPUの(バグのない)マイクロコード更新を待機しています。これは、BIOS /ファームウェアの更新に伴う場合もあれば、Linuxに更新されたマイクロコードを起動時にインストールさせる場合もあります。

更新:Debianは、完全なretpoline機能が統合された更新されたコンパイラパッケージを提供しました。 Debian 8(jessie)の場合、gcc-4.9 with retpoline backportsが2018-02-17にリリースされ、Debian 9(stretch)の場合、gcc-6 with retpoline backportsが2018-02-22にリリースされました。

また、2018-02-22に、DebianはSpectre Variant2の完全なretpoline軽減とSpectreVariant1のarray_index_mask_nospec軽減を備えたDebian9のカーネルアップデートをリリースしました。したがって、Spectre軽減の完全なセットがDebian9で利用可能になりました。 、BIOS /マイクロコードの更新は必要ありません。

一部のテストでは、このレトポリンの軽減は、Intelが提供するマイクロコードベースの軽減よりも実際にパフォーマンスへの影響が大幅に少ないことが示されています。

そのため、必要なコンパイラ機能のバックポート作業が進んでいます。残念ながら、RHEL/CentOS7の標準コンパイラバージョンはgcc-4.8.5です。gcc-4.9のバックポートパッチの可用性はある程度の助けになるかもしれませんが、必要なコンパイラ機能を完全にバックポートするには、さらに多くの作業が必要です。 gcc-4.8.5へ。

2018-02-20に、インテルは さまざまなプロセッサーモデルのマイクロコード更新に関する一連の推奨事項 を公開しました。また、1月にリリースされた、バグがあることが判明したマイクロコードバージョンも一覧表示されているため、これらの特定のマイクロコードバージョンの展開を停止することをお勧めします

3
telcoM