web-dev-qa-db-ja.com

Linuxカーネルで「Retpoline」が有効になっているかどうかを確認する方法

「スペクター」のセキュリティ脆弱性に関しては、リスクを軽減するソリューションとして「Retpoline」が導入されました。しかし、私は言及した投稿を読みました:

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

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

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

18
Weishan Yang

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

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

より包括的なテストが必要な場合は、spectre_v2 systreeファイルのないカーネルでretpolinesを検出するには、 spectre-meltdown-checker がどのように機能するかを確認してください。

22
Stephen Kitt

この特定のケースでは、Stephen Kittの回答がより包括的です。これは、retpolineサポートにも新しいコンパイラバージョンが必要なためです。

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

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

次に、単にzgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz

4
jpa