最近、 サイドチャネル攻撃が発見されました 遅延FPU状態切り替えを悪用してMMX、SSE、およびAVXレジスタの内容をリークします。この脆弱性は、熱心なFPU保存ではなく、遅延FPU保存が使用されている場合にのみ利用できます。 Linuxカーネルに脆弱性があるかどうかに関して、矛盾するソースを読んでいます。 1つのソース は脆弱であると断言します。ただし、2016年の 別のリソース があり、Linuxはデフォルトで熱心なFPUスイッチングを使用し、影響を受けないことを示しています。 2016年からコミット は、熱心な切り替えがデフォルトになった時期を示しています。
Linuxは脆弱ですか、それとも熱心なFPUスイッチングを使用しても影響を受けませんか?私の理解では、eagerfpu=off
、これはデフォルトではありません。私の理解は正しいですか?
表示したパッチの前のカーネルバージョンが影響を受けます。たとえば、これは RedHat security bullentin の状態です。
RHEL-7は、Sandy Bridge以降のIntelプロセッサーで、自動的に(安全な)「積極的」な浮動小数点レジスター復元をデフォルトにします。 AMDプロセッサは影響を受けません。
Eagerfpu = onパラメータを使用してカーネルを起動し、eager FPU復元モードを有効にすることで、古いプロセッサでこの問題を軽減できます。このモードでは、現在のプロセスがFPU命令を呼び出すかどうかに関係なく、すべてのタスク/コンテキストスイッチに対してFPU状態が保存および復元されます。このパラメーターはパフォーマンスに悪影響を与えることはなく、影響を受けないプロセッサーに悪影響を与えることなく適用できます。
RHEL 6以前は、このCVEの影響を受け、eagerfpuパラメーターを提供していません。 Red Hatは、動作を変更するアップデートをリリースします。
これは、コンパイル時にパラメータを単に変更するのではなく、カーネル自体を変更する必要があるため、パッチが以前のカーネルにバックポートされることを示唆しています。
Redhatからの情報 を引用するには:
RHEL-7は、Sandy Bridge以降のIntelプロセッサーでは、自動的に(安全な)「意欲的な」浮動小数点レジスター復元に自動的に設定されます。 AMDプロセッサは影響を受けません。 ... eagerfpu = onパラメータを使用してカーネルを起動し、eager FPU復元モードを有効にすることで、古いプロセッサでこの問題を軽減できます
Debianの場合 それは次のように表示されます lazyFPは、4.9カーネル以降を使用するすべてに対して修正されています。 Debianは、2016年1月から kernel commit message にもリンクしています。ここでは、eagerfpuがデフォルトですべてのCPUに対して有効になっています。
他のディストリビューションについては、どのカーネルが使用されているか、どのパッチが適用されているか、どの構成設定が使用されているかを確認する必要があります。 「Linux」はありませんが、パッチや設定などが異なるカーネルバージョンを使用する多くのディストリビューションがあります。
主にそうです。
Linux OSベンダーは防御のためにプレーを試みており、特別なCPU命令を使用したいときに有効/無効にできる複数のパラメーターを提示しています。それは、カーネルに常にパッチを当てる必要がないという彼らのやり方です。脆弱である場合は、パラメーターを無効にして次に進みます...
パラメーターを使用可能にするには、最新のカーネル更新が必要です。
Red Hatのように、緩和策がデフォルトで有効になっているものは、特定のプロセッサのセットに制限されています。この特定のCPUが見つかると、自動的に軽減されます。見つからない場合は、フェイルオーバーしてオフになります。
したがって、軽減されているかどうかを知るには、Linuxフレーバー、CPU、カーネルを確認する必要があります。