/proc/cpuinfoの「バグ」セクションに実際に何が表示されますか?

/proc/cpuinfoの「バグ」セクションに実際に何が表示されますか?

現在、カーネルとマイクロコードがインストールされているDebian Stretchおよびテスト/バスターシステムでは、まだMeltdownとSpectreがあります/proc/cpuinfo

ただし、実行中のspectre-meltdown-checkerディスプレイは脆弱ではありません。

/proc/cpuinfoだから何が表示されるのか知りたいです。これはこのCPUのバグですか?システムパッチにもかかわらず、これらの脆弱性は常にリストされていますか?

答え1

/proc/cpuinfo「バグ」フィールドの意図は、コミットメッセージで説明されています。紹介した:

x86/cpufeature:エラー表示を追加/proc/cpuinfo

機能フラグと同様に、私たちが実行しているCPUにエラー解決を検出および/または適用したことを示すダンプフラグがあります。

利点は、これらの機能がCPU機能のように時間が経過しても蓄積されないことです。

以前は、カーネルが検出したハードウェア障害が次のようにリストされていました。別の機能例えば32ビットx86システムに独自のエントリがある悪名高いF00Fエラーですf00f_bug/proc/cpuinfo「バグ」エントリは、これらの問題を次のスタイルで単一の機能に維持するために導入されました。x86 CPUフラグ

実際、これらの項目が意味するのは、メッセージに見られるようにカーネルが保証されるということです。検出済みハードウェアエラーです。問題が解決したかどうかを確認するには、他の場所(開始メッセージ、特定の項目、/procまたは/sysファイルなど)を調べる必要があります。/sys/devices/system/cpu/vulnerabilities/

「バグ」エントリの有用性は2つの点で制限されています。まず、実際の負数と未知数を区別する方法はありません。このフィールドが "cpu_meltdown" を指定しない場合、カーネルが Meltdown を認識しないことを意味するか、このフィールドだけでは不明です。 CPUはメルトダウンの影響を受けません。 2つ目は、検出が過度に単純であることです。注意を払うのにエラーがあり、そうでなくてもCPUが脆弱であると報告できます。 「検出」はテーブルベースなので、精度は実行しているカーネルのバージョンによって異なります。

MeltdownおよびSpectreエラーの場合、検出プロセスは次の値を提供します。/proc/cpuinfo 動作原理は次のとおりです、x86から​​:

  • CPUの場合推測なし(レベル486、いくつかのペンティアムレベル、いくつかのアトム)、メルトダウンやスペクターの影響を受けるとマークされていません。
  • 残りのすべてのCPUは、マイクロコードバージョンなどに関係なく、Spectreバリアント1および2の影響を受けるとマークされています。
  • CPUの場合投機的店舗バイパスにあまり脆弱ではないと分類されていない、対応するマイクロコードがSSB緩和として宣言されておらず、CPUがSSB緩和として宣言されていない場合は、SSBの影響を受けたとマークされます。
  • CPUの場合メルトダウンに脆弱ではないと分類されていません(AMD)マイクロコードがMeltdownを軽減すると主張しない場合、Meltdownの影響を受けたとマークされます。

答え2

Meltdown/Spectreの脆弱性はCPUチップセットの設計/アーキテクチャに存在し、今後新しいハードウェアを購入する必要はありません。これらのパッチはセキュリティのための素晴らしい幻想です。長期的には。時間の経過とともに、現在のパッチを迂回するこれらの欠陥を悪用する新しい方法が現れることがあります。

つまり、現在のソフトウェアパッチ/マイクロコード簡単Spectre / Meltdownファミリーの脆弱性を悪用する既知の方法に関する問題がありますが、最初にこれを可能にする基本的なCPU設計の問題は解決されません。長期的に影響を受けるCPU(複数世代)は攻撃を止めませんでした(そして今後もその可能性が低いです)。

しかし、@Gillesが正しく指摘したように、この警告を発行しても、現在知られているSpectre / Meltdown攻撃が機能するという意味ではありません。パッチがインストールされていると機能しません。

質問に記載されている場合、カーネルはSpectre / Meltdown(x86についてのみ話している場合は現在すべてのx86 CPU)の影響を受けることがわかっているCPUモデルのみを確認するため、cpu-insecureまだバグセクション/行に記載されています/proc/cpuinfo

/proc/cpuinfoカーネルにKPTIパッチがある場合は、CPU_insecureが含まれていることを確認してください。

KPTIパッチで次のコードを見つけました。

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

カーネルの更新後、次のようになります。

bugs      : cpu_insecure

PS。 Spectre/Meltdown 「バグ」を悪用する新しい方法が数回更新されました。おそらく今回は最後ではないでしょう。

関連情報