web-dev-qa-db-ja.com

/ proc / cpuinfoの「バグ」セクションは実際には何を示していますか?

現在のカーネルとマイクロコードがインストールされているDebianストレッチおよびテスト/バスターシステムで、メルトダウンとスペクターが/proc/cpuinfoのバグとしてリストされているのがわかります。

ただし、spectre-meltdown-checkerを実行しても脆弱ではありません。

だから私は/proc/cpuinfoが何を示すのか疑問に思っています。これらはこのCPUの脆弱性にすぎませんか?システムにパッチが適用されていても常にリストされますか?

24
hurrbert

/proc/cpuinfoの「バグ」フィールドの意図は、コミットメッセージに記載されています 導入されました

x86/cpufeature:バグフラグを/proc/cpuinfoに追加します

機能フラグと同様の方法で、実行中のCPUにバグの回避策を検出または適用したことを示すフラグをダンプします。

利点は、CPU機能のように、時間がたつにつれて蓄積されないことです。

以前は、カーネルが検出したハードウェアのバグは 個別の機能egという悪名高いF00Fバグとしてリストされていました。これには独自のf00f_bugエントリが含まれています/proc/cpuinfo(32ビットx86システム)。 「バグ」エントリは、これらを将来の単一機能に保持するために導入され、 x86 CPUフラグ と同じスタイルです。

メッセージでわかるように、実際のエントリの意味は、カーネルがハードウェアのバグを検出したことだけが保証されています。他の場所(ブートメッセージ、または特定の/procエントリや/sysエントリ(/sys/devices/system/cpu/vulnerabilities/内のファイルなど)]を調べて、問題が処理されているかどうかを確認する必要があります。

「バグ」エントリの有用性は2つの方法で制限されます。 1つ目は、真のネガティブを未知数から区別できないことです。フィールドに「cpu_meltdown」が指定されていない場合、カーネルがMeltdownを認識していないことを意味するのか(フィールドからのみ)わからないのか、またはCPUがメルトダウンの影響を受けないこと。 2つ目は、検出が単純すぎる可能性があることです。警告の側に誤りがあるため、CPUに脆弱性がない場合は脆弱であると報告される場合があります。 「検出」はテーブル駆動であるため、その精度は実行しているカーネルのバージョンによって異なります。

MeltdownおよびSpectreのバグの場合、x [86]の/proc/cpuinfo次のように機能します の値をフィードする検出プロセス:

22
Stephen Kitt

Meltdown/Spectreの脆弱性はCPUチップセットの設計/アーキテクチャにあり、新しい将来のハードウェアを購入しない限り、パッチはセキュリティの素晴らしい錯覚です長期的に。欠陥を悪用する新しい方法が表面化し、現在のパッチを迂回できる可能性があります。

要するに、現在のソフトウェアパッチ/マイクロコードmitigateSpectre/Meltdownファミリーのエクスプロイトの既知の方法に対する問題ですが、根本的なCPU設計の問題は解決していませんそもそもそれらを許可します。影響を受ける(数世代の)CPUは、長期的に見れば脆弱性の影響を受けなくなったわけではありません(ほとんどの場合、影響を受けません)。

ただし、@ Gillesが正しく述べているように、この警告が表示されても、現在知られているエクスプロイトのSpectre/Meltdownメソッドが機能することを意味するわけではありません。パッチがインストールされている場合は機能しません。

質問で言及されているケースでは、カーネルはSpectre/Meltdownの影響を受けることがわかっているCPUモデル(x86についてのみ話しているのであれば今のところすべてのx86 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の「バグ」を悪用するための新しい方法については、すでに一連の更新が行われていました。たぶん最後ではないでしょう。

12
Rui F Ribeiro