web-dev-qa-db-ja.com

LinuxカーネルはLazyFPに対して脆弱ですか(CVE-2018-3665)?

最近、 サイドチャネル攻撃が発見されました 遅延FPU状態切り替えを悪用してMMX、SSE、およびAVXレジスタの内容をリークします。この脆弱性は、熱心なFPU保存ではなく、遅延FPU保存が使用されている場合にのみ利用できます。 Linuxカーネルに脆弱性があるかどうかに関して、矛盾するソースを読んでいます。 1つのソース は脆弱であると断言します。ただし、2016年の 別のリソース があり、Linuxはデフォルトで熱心なFPUスイッチングを使用し、影響を受けないことを示しています。 2016年からコミット は、熱心な切り替えがデフォルトになった時期を示しています。

Linuxは脆弱ですか、それとも熱心なFPUスイッチングを使用しても影響を受けませんか?私の理解では、eagerfpu=off、これはデフォルトではありません。私の理解は正しいですか?

5
forest

表示したパッチの前のカーネルバージョンが影響を受けます。たとえば、これは RedHat security bullentin の状態です。

  • RHEL-7は、Sandy Bridge以降のIntelプロセッサーで、自動的に(安全な)「積極的」な浮動小数点レジスター復元をデフォルトにします。 AMDプロセッサは影響を受けません。

  • Eagerfpu = onパラメータを使用してカーネルを起動し、eager FPU復元モードを有効にすることで、古いプロセッサでこの問題を軽減できます。このモードでは、現在のプロセスがFPU命令を呼び出すかどうかに関係なく、すべてのタスク/コンテキストスイッチに対してFPU状態が保存および復元されます。このパラメーターはパフォーマンスに悪影響を与えることはなく、影響を受けないプロセッサーに悪影響を与えることなく適用できます。

RHEL 6以前は、このCVEの影響を受け、eagerfpuパラメーターを提供していません。 Red Hatは、動作を変更するアップデートをリリースします。

これは、コンパイル時にパラメータを単に変更するのではなく、カーネル自体を変更する必要があるため、パッチが以前のカーネルにバックポートされることを示唆しています。

2
user9944881

Redhatからの情報 を引用するには:

RHEL-7は、Sandy Bridge以降のIntelプロセッサーでは、自動的に(安全な)「意欲的な」浮動小数点レジスター復元に自動的に設定されます。 AMDプロセッサは影響を受けません。 ... eagerfpu = onパラメータを使用してカーネルを起動し、eager FPU復元モードを有効にすることで、古いプロセッサでこの問題を軽減できます

Debianの場合 それは次のように表示されます lazyFPは、4.9カーネル以降を使用するすべてに対して修正されています。 Debianは、2016年1月から kernel commit message にもリンクしています。ここでは、eagerfpuがデフォルトですべてのCPUに対して有効になっています。

他のディストリビューションについては、どのカーネルが使用されているか、どのパッチが適用されているか、どの構成設定が使用されているかを確認する必要があります。 「Linux」はありませんが、パッチや設定などが異なるカーネルバージョンを使用する多くのディストリビューションがあります。

2
Steffen Ullrich

主にそうです。

Linux OSベンダーは防御のためにプレーを試みており、特別なCPU命令を使用したいときに有効/無効にできる複数のパラメーターを提示しています。それは、カーネルに常にパッチを当てる必要がないという彼らのやり方です。脆弱である場合は、パラメーターを無効にして次に進みます...

パラメーターを使用可能にするには、最新のカーネル更新が必要です。

Red Hatのように、緩和策がデフォルトで有効になっているものは、特定のプロセッサのセットに制限されています。この特定のCPUが見つかると、自動的に軽減されます。見つからない場合は、フェイルオーバーしてオフになります。

したがって、軽減されているかどうかを知るには、Linuxフレーバー、CPU、カーネルを確認する必要があります。

0
Hugo