昨年以来、Linux カーネルは、Spectre V2 の緩和のために元の Indirect Branch Restricted Speculation (IBRS) に依存するシステムを誤って放置しており、この Spectre の脆弱性に対処するためのクロス ハイパースレッドに対するシングル スレッドの間接分岐予測 (STIBP) をカバーしていません。 Intel Skylake 時代のシステムでこの問題を解決するパッチが進行中です。

昨年 6 月に変更がマージされ、Linux 5.19-rc2 でメインライン化されて以来、IBRS (オリジナル、Intel eIBRS と混同しないでください) が使用されている場合、STIBP のサポートはありません。この問題を修正するパッチでは次のように説明されています。ただし、従来の IBRS では、パフォーマンス上の理由からユーザー空間に戻ると IBRS ビットがクリアされ、STIBP が保護するクロススレッド ブランチ ターゲット インジェクションに対してユーザー空間スレッドが脆弱になります。

IBRS を spectre_v2_in_ibrs_mode() チェックから除外して、(spectre_v2_user カーネル コマンドライン パラメーターで選択されている場合は、デフォルトで、または常時オンの場合は seccomp/prctl() を介して) STIBP を有効にできるようにします。”

したがって、STIBP でユーザー空間スレッドを保護するには、このパッチは、Google エンジニアの KP Singh によるものです。 「レガシー」IBRS で STIBP を有効にできるようにします。繰り返しになりますが、これは、Skylake/Skylake から派生した設計のものなど、プレーンな IBRS に依存する古いプロセッサにのみ影響します。このパッチは、メインライン化された後、安定した Linux カーネル シリーズにバックポートするようにすでにマークされています。
プレーンな IBRS システムを使用している場合、Linux 6.2 には、Spectre V2 を緩和するための IBRS よりも低コストの新しい Call Depth Tracking 機能もあります。しかし、特に古い Skylake 時代のシステムでは、これらのさまざまな軽減策の累積パフォーマンス コストは依然として非常に高いままです。

Categories: IT Info