Linuxカーネルが「Retpoline」に対応しているかどうかを確認する方法は?


17

「Spectre」セキュリティ脆弱性については、リスクを軽減するソリューションとして「Retpoline」が導入されました。ただし、次のような記事を読みました。

を使用せずCONFIG_RETPOLINEにカーネルをビルドすると、サント記号はエクスポートされないため、retpolineを使用してモジュールをビルドしてからロードすることはできません。

ただし、retpolineを使用してカーネルをビルドすると、retpolineでビルドされていないモジュールを正常にロードできます。(ソース

カーネルが「Retpoline」が有効になっているかどうかを確認する簡単で一般的な/一般的な/統一された方法はありますか?これは、インストーラーがインストールするカーネルモジュールの適切なビルドを使用できるようにするためです。

回答:


21

メインラインカーネルまたはほとんどの主要なディストリビューションのカーネルを使用している場合、完全なretpolineサポート(つまり、カーネルはで構成CONFIG_RETPOLINEされ、retpoline対応のコンパイラで構築された)を確認する最良の方法は、「完全な汎用retpoline 」/sys/devices/system/cpu/vulnerabilities/spectre_v2。私のシステムでは:

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW

より包括的なテストが必要な場合は、spectre_v2systreeファイルを使用せずにカーネルのレトリンを検出するために、状況spectre-meltdown-checkerについて確認してください。


2
他のメルトダウン/スペクトル関連の脆弱性もチェックするに$ grep . /sys/devices/system/cpu/vulnerabilities/*は、Greg Kroah-Hartmanのブログで提案されているを実行します。
アレックスヴォング

1
ありがとう@Alex; 私は特定の質問に答えていましたが、それは便利ですhead /sys/devices/system/cpu/vulnerabilities/*。現在はMeltdown / Spectreの脆弱性をカバーしていますが、同様の性質の将来の脆弱性もカバーする必要があります(名前空間は意図的にジェネリックです)。
スティーブンキット

@StephenKittええ、headより良いフォーマットの出力が得られます。
アレックスヴォング

4

Stephen Kittの答えは、この特定の場合により包括的です。これは、レトポリンサポートにも新しいコンパイラバージョンが必要だからです。

ただし、一般的な場合、ほとんどのディストリビューションでは、次のいずれかの場所でカーネル構成ファイルを使用できます。

  • /boot/config-4.xx.xx-...
  • /proc/config.gz

その後、簡単にできます zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz


4
grepping inをお勧めします。これは、インストールされているが現在実行されていないカーネルイメージで/boot/config*検出さCONFIG_RETPOLINEれ、誤ったセキュリティを感じる可能性があるためです。調べる/proc/config.gz/sys/...、安全ですが、多くのLinuxディストリビューションはを使わずにカーネルをコンパイルします/proc/config.gz
pts

ロジックを少し賢くして、uname(または同等のsyscall)を使用して現在実行中のカーネルを取得し、その特定の/ boot / configファイルを調べてください。
アダムリュッチェンブロス

@pts /boot/config-$(uname -r)
ムル

2
使用/boot/config-$(uname -r)することは絶対確実ではありません:実行中のカーネルと設定が一致することを保証しません。ディストリビューションカーネルuname -rは、カーネルABIが変更されない限り、複数のバージョンで同じままです。
スティーブンキット

お返事ありがとうございます。あなたの答えとメッセージは役に立ちます。
ウェイシャンヤン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.