web-dev-qa-db-ja.com

プロセッサをSpectreとMeltdownの両方に対して「無力」にするIntelファームウェア/マイクロコードの更新?

最近Intelは プレスリリース (強調を追加)で次のように主張しています。

カリフォルニア州サンタクララ、2018年1月4日—Intelは、パーソナルコンピュータやサーバーなど、あらゆる種類のIntelベースのコンピュータシステムを開発し、急速にアップデートを発行しています—Google Project Zeroによって報告された両方のエクスプロイト(「スペクター」および「メルトダウン」と呼ばれます)からこれらのシステムを無効にします)。 Intelとそのパートナーは、ソフトウェアパッチとファームウェアの更新の両方として展開更新を大幅に進歩させました。

インテルは過去5年以内に導入された大多数のプロセッサー製品のアップデートをすでに発行しています。来週末までに、インテルはプロセッサーの90%以上のアップデートを発行する予定です過去5年以内に導入された製品。さらに、多くのオペレーティングシステムベンダー、パブリッククラウドサービスプロバイダー、デバイスメーカーなどは、すでに製品とサービスを更新していると述べています。

別のより最近のプレスリリース これを繰り返した(強調を追加):

12月初旬に、インテルファームウェアアップデートのOEMパートナーへの配布を開始しました。過去5年間に導入されたインテルCPUの場合、90%以上のアップデートを週、残りは1月末まで。その後も引き続き他の製品のアップデートを発行していきます。私たちはこの進歩に満足していますが、お客様をサポ​​ートするために行うべき多くの作業があることを認識しています。

彼らは、メルトダウンとスペクターの両方の攻撃が機能するのを何らかの形で防止するプロセッサーのファームウェアアップデートを開発し、異なるベンダーを通じて配布されていると主張しているようです。

しかし、私はこの主張が曖昧で説得力がないと思います。

部分的または完全にMeltdownとSpectreを妨げるIntel CPUファームウェア/マイクロコードのアップデートはありますか?もしそうなら、彼らはこれをどのように達成し、それはパフォーマンスにどのように影響しますか?


詳細:

さらなる調査の結果、「ファームウェア」の更新はマイクロコードの更新を指す場合があるようです。ただし、この更新で実現することについての詳細はまだありません。

から Debianバグレポートログ:intel-microcode:今後のメルトダウン/スペクトルの更新

Intelが(部分的に?)メルトダウンとスペクトルの影響の一部を軽減するためにマイクロコードの更新をリリースするだろうと噂されています。


Intelはすでにいくつかのアップデートをリリースしていますが、それらすべてがAFAIKではありません。

これらのマイクロコードの更新は、カーネルが変更されて新しいMSRがアクティブ化されるまで、ほとんど影響がありません。しかし、彼らは条件付きジャンプとLFENCEを台無しにしています。

とにかく、非公式のアップデートの一部を非公式に不安定版にアップロードしてバグを閉じます。いくつかのプロセッサがまだありません。近いうちにIntelからの公式リリースを期待しています。

誰もがファームウェアの更新を探す必要があります。通常の優れたベンダーはすでにそれらを入手しているか、来週の終わりまでに入手できるでしょう。

8

Intelは、5年以内のすべてのプロセッサのパッチをリリースします。これらのパッチのほとんどは翌週に提供され、残りは2018年1月末まで提供されます。

彼らはまたこれをリリースしました pdf そしてこれはこれらのパッチに関するすべてのさらなる質問に答えるべきです。


TL; DR:

緩和策:

境界チェックバイパス(=Spectre):ソフトウェアの変更
ブランチターゲットインジェクション(=Spectre):ソフトウェアの変更とマイクロコードの更新
不正なデータキャッシュロード(=Meltdown):オペレーティングシステムには今のところパッチを適用する必要がありますが、新しいプロセッサには「ハードウェアサポート」があります緩和のため。


ホワイトペーパーからの短い引用は次のとおりです。私はあなたの質問に関係する部分を強調しました:

境界チェックバイパスの軽減

境界チェックのバイパス方法の場合、インテルの緩和戦略はソフトウェアの変更に焦点を当てています。インテルが推奨するソフトウェアの緩和策は、適切な場所に投機を停止する障壁を挿入することです。特に、この目的にはLFENCE命令の使用をお勧めします。シリアル化命令とLFENCE命令は、古い命令が廃止される前に、若い命令の実行を投機的に停止しますが、LFENCEは他のシリアル化命令よりも優れたパフォーマンスソリューションです。境界チェックの後に挿入されたLFENCE命令は、境界チェックが終了する前に新しい操作が実行されるのを防ぎます。 LFENCEの挿入は慎重に行う必要があることに注意してください。過度に使用すると、パフォーマンスが大幅に低下する可能性があります。

たとえば、LinuxカーネルのIntelの分析では、LFENCEの挿入が必要な場所がほんの数箇所見つかっただけで、パフォーマンスへの影響は最小限に抑えられています。Windows/MacOSに関するコメントはありません

ブランチターゲットインジェクションの軽減

分岐ターゲット注入法では、2つの緩和技術が開発されています。これにより、ソフトウェアエコシステムは、セキュリティ、パフォーマンス、および互換性の目標に役立つアプローチを選択できます。最初の手法は、プロセッサとシステムソフトウェアの間に新しいインターフェイスを導入します。このインターフェイスは、システムソフトウェアが攻撃者が被害者の間接分岐予測を制御できないようにするメカニズムを提供します。たとえば、適切なタイミングで間接分岐予測子をフラッシュして、そのような攻撃を軽減します。 [...]この緩和戦略では、既存の多くのプロセッサの新しいインターフェイスをサポートするために、更新されたシステムソフトウェアとマイクロコードの更新の両方をロードする必要があります。

2番目の手法では、「リターントランポリン」の概念を紹介します。基本的に、ソフトウェアは、間接的なニアジャンプおよび呼び出し命令を、問題の分岐のターゲットをスタックにプッシュしてから、その場所にジャンプするためにリターン(RET)命令を実行するコードシーケンスに置き換えます。この方法。 この手法は、現在の多くのIntelプロセッサでの特定のワークロードに対して、最初の手法よりもパフォーマンスが向上する可能性があります。[...] BroadwellのIntel®Core™プロセッサの場合世代以降、このレトポリン緩和戦略では、緩和を完全に効果的にするためにマイクロコードの更新を適用する必要もあります。

不正データキャッシュの負荷軽減

不正なデータキャッシュの読み込み方法の場合、オペレーティングシステムソフトウェアは、ユーザーモードアクセスから保護するために、ユーザーコードの実行時に特権ページがマップされないようにする場合があります特権ページへ。

この基本的なデュアルページテーブルアプローチは、「KASLR is Dead:Long Live KASLR1」ペーパーでカーネルアドレススペースレイアウトランダム化(KASLR)に対するサイドチャネル攻撃の緩和策として以前に提案され、KAISERと呼ばれていました。このアプローチは、不正データキャッシュの負荷も軽減します。インテルはさまざまなOSベンダーと協力して、オペレーティングシステムでデュアルページテーブルアプローチを実現しています。このデュアルページテーブル緩和策を実装するOSは、それをサポートするプロセッサでプロセスコンテキスト識別子(PCID)機能を利用したいと思うかもしれません。 PCIDは、ユーザー/スーパーバイザモードの移行中にCR3を頻繁にリロードすることによって引き起こされるTLBフラッシュのパフォーマンスコストを大幅に削減できます。

将来のIntelプロセッサは、不正データキャッシュの負荷を軽減するためのハードウェアサポートも提供します。


また、IntelのCEOであるBrian Krzanichは、CES 2018基調講演中に明らかにその一部について話しました。

https://youtu.be/RlJ9zB74G_U?t=3545


これは、エンドユーザーとしての私にとって何を意味しますか?

  1. お使いのマシンにはIntelプロセッサが搭載されていますか?

    1. 番号? OS/VMとブラウザのアップデートを取得します。 AMDまたはARMによるパッチを探します。これらのいずれもない場合、ベンダーが「影響を受ける」リストにポップアップ表示された場合は、目を開いたままにしておきます。
    2. はい!公式ソースからパッチを入手してください。 OSも更新します。その時は大丈夫だ。おそらく、これは1つのステップで実行できます。パッチが利用可能になり次第、これを行います。新しいWannaCryが明日表示される可能性があります。
5
Tom K.