web-dev-qa-db-ja.com

メルトダウンとスペクター攻撃

2018年1月に関する正規の質問は、メルトダウンとスペクター攻撃を開示しました。他の同一または非常に類似した質問は、この質問の複製としてクローズする必要があります。

主な懸念事項

  • 投機的実行とは何ですか?
  • MeltdownとSpectreの違いは何ですか?
    • メルトダウンはどのように機能しますか?
    • Spectreはどのように機能しますか?
  • どうすれば身を守ることができますか?
  • KPTI/KAISERパッチはコンピュータを保護するのに十分ですか?
  • このパッチはパフォーマンスの低下を引き起こすと主張されています。それは本当ですか?これはどういう意味ですか?
  • パフォーマンスの低下が心配な場合は、新しいパッチを無効にできますか?リスクは何ですか?
  • どのプラットフォームとCPUが脆弱ですか?
  • 私は仮想マシン/コンテナを実行しています。私はどの程度脆弱ですか?
  • コンピューターでのメルトダウン/スペクター攻撃を検出できますか?
  • これらの攻撃はリモートコード実行の脆弱性ですか?
  • ソフトウェア/ウェブサイトにパッチを適用する必要がありますか?
  • Webサイトにアクセスしているときに影響を受けることはありますか?
  • これを画像で説明できますか?

参照:

165
M'vy

この回答は、単に主要な懸念に対処する試みです。ここの詳細は、例示的な正確または完全ではない場合があります。可能な場合は、より詳細な説明にリンクするようにします

投機的実行とは何ですか?

投機的実行は、最適化として提供される最新のプロセッサの機能です。プロセッサパイプラインへの命令の並列処理を可能にするために、分岐予測、値予測、メモリプリフェッチなどの手法を使用して、命令を前もって処理できます。その後、命令を順不同で実行できます。

これは、プロセッサをアイドル状態に保つのではなく、次に何が起こるかを正しく予測して時​​間を稼ぐ方法です。予測が失敗すると、命令はロールバックされます。

MeltdownとSpectreの違いは何ですか?

メルトダウンエクスプロイトは、Spectreよりも実装がグローバルに簡単です。

Meltdownは、アウトオブオーダー命令でのメモリ読み取りを利用し、Spectreは分岐予測メカニズムに作用します。

Spectreはクロス/イントラプロセスメモリの開示を許可し、Meltdownはユーザー空間プロセス(通常はアクセス不可)へのカーネルメモリの開示を許可します。

Meltdownには既知のソフトウェア緩和策があります。

どちらも、キャッシュサイドチャネル攻撃に依存しています。これは、特定のメモリブロックにアクセスして、それ以外の場合は不明な情報を推測するときのタイミングの違いの測定です。

メルトダウンはどのように機能しますか?

簡単に言えば、メルトダウンは、ユーザー空間プログラムがアクセスしてはならないメモリをロードするようプロセッサに要求することで機能します。メモリは順不同で読み取られ、キャッシュに入れられます。キャッシュに対するサイドチャネル攻撃(実行時間測定)を使用すると、そのメモリ位置の値を推測することが可能です。

Spectreはどのように機能しますか?

Spectreは別のレベルで動作し、ユーザー空間からカーネル空間データへのアクセスを許可しません。この攻撃では、攻撃者は投機的実行をだまして、誤って命令を予測的に実行します。簡単に言えば、予測子は特定の分岐結果を予測するように強制されます(-> trueの場合)。その結果、犠牲プロセスが通常要求していない範囲外のメモリアクセスを要求し、誤った投機的実行を引き起こします。次に、サイドチャネルによって、このメモリの値を取得します。このようにして、犠牲プロセスに属するメモリが悪意のあるプロセスにリークされます。

どうすれば身を守ることができますか?

オペレーティングシステムやハイパーバイザーを更新します。

主要なオペレーティングシステムディストリビューターは、KPTI/KAISER動作を実装するためのパッチをすでにリリースしています。これは、プロセッサが機能するために厳密に必要ではないカーネルのユーザーメモリマッピングを削除することにより、攻撃対象領域を減らす手段です。

マイクロコード(ファームウェア)の更新は、いつかリリースされる可能性があります。

KPTI/KAISERパッチはコンピュータを保護するのに十分ですか?

いいえ。メルトダウンのみをカバーしています。

問題は、プロセッサのアーキテクチャ設計にあります。問題を完全に(またはSpectreの場合は部分的に)解決するには、少なくともファームウェアの更新が必要です。また、この設計上の欠陥がなければ、プロセッサーを最新のモデルに交換しなければならない可能性もあります。

パッチはパフォーマンスの低下を引き起こすと主張されていますが、それは本当ですか?これはどういう意味ですか?

はい。ただし、発生する損失はソフトウェアワークフローに依存します。ソフトウェアがシステムコールにどの程度依存しているかに応じて、5%から30%の範囲の損失が発生する可能性があると主張しています。データベースなど、カーネルからユーザースペースへの移行が多いベンチマークが最も影響を受けると報告されています。

これはまだ調査中であり、予備報告が行われています(リンクを参照)。ただし、影響はアプリケーションによって異なるため、一般的なベンチマークに依存するのではなく、環境内のパフォーマンスへの影響をテストする必要があります。

暫定結果(独立??):

公式発表:

パフォーマンスの低下を心配する場合、新しいパッチを無効にできますか?リスクは何ですか?

いいえ、できますが、お勧めできません。

まず、他人からのデータを管理している場合、クライアントはデータの盗難に対して脆弱になります。

次に、パフォーマンスの損失を適切に評価する必要があり、特定のワークフローに大きく依存します。パフォーマンスが30%減るわけではありません。

KPTIを無効にすると、機密データが漏洩するリスクがあります。

どのプラットフォームとどのCPUが脆弱ですか?

ほとんどの Intel CPU は両方の攻撃に対して脆弱です。 AMD CPUはSpectre によってのみ影響を受けるようです。一部の ARM Cortexプロセッサー が影響を受けますが、他のすべてのARMプロセッサーは影響を受けません。 POWER7のPowerPCプロセッサーPOWER 8およびPOWER 9ファミリー が影響を受けます。

(詳細はリンクを参照してください)。

仮想マシン/コンテナを実行していますが、どの程度脆弱ですか?

のとおりSteffen Ullrichの答え

  • メルトダウン攻撃はVMを通過せず、カーネルメモリをローカルプロセスにリークするだけです。
  • SpectreはVM全体で機能します。

また、 Steffenから再び 、コンテナはホストカーネルに依存しているため、MeltdownとSpectreはコンテナで動作します。

私のコンピューターのメルトダウン/スペクター攻撃を検出できますか?

それが可能であっても、それは非常に困難です。

MeltdownとSpectreはどちらも、無害なプログラムによって常にトリガーされるCPUの設計されたプロパティを使用するため、悪意のあるプログラムと良性のプログラムを区別するのが困難になります。

これらの攻撃はリモートコード実行の脆弱性ですか?

いいえ、そうではありません。

この攻撃を適用するには、攻撃者はターゲットホストでコードを実行できる必要があります。ただし、これらがファイルアップロードやクロスサイトスクリプティングのエクスプロイトなどの他の攻撃経路と組み合わされている場合、リモートで実行される可能性があることに注意してください。

ソフトウェア/ウェブサイトにパッチを適用する必要がありますか?

理想的な世界では、違います。

実際には、一部のブラウザベンダーは、サイドチャネル攻撃を軽減するために、時間精度の測定値の減少をすでに実装しています。 KPTIは、ネイティブシステムコールを使用するプログラムに十分な修正をすでに提供しているはずです。

Webサイトにアクセスしているときに影響を受けることはありますか?

はい、すでにスペクター(のみ)のJavascriptエクスプロイトの概念実証があります。

これを画像で説明できますか?

いいえ、ただしRandall Munroeは次のことができます。

XKCD #1938 - Meltdown and Spectre

[ソースXKCD: https://xkcd.com/1938/ ]

119
M'vy

簡単なヒント

M'vyの素晴らしい答え に加えて、この質問に答えたいだけです。

安全のために何ができますか?

  • Spectre、Meltdown、およびRowhammerは、CPUの概念上のバグであるため、ソフトウェアアップデートで正しくパッチを適用できませんでした。つまり、実際のソフトウェアパッチは、ほとんどすべてのシステム(Windows、MacOSのLinux)の全体的なパフォーマンスを低下させます。
  • これらのバグは分離にも関係しています。知っています:

    すべて分離機能(sandbox, containers, virtual Hostおよびusers privileges)は注意が必要です!

    正しい考え方です!

  • 次のような古いセキュリティ習慣が役立ちます。
    • すべての機密アプリケーションを物理的に専用のホストに配置し、
    • 機密性の高い顧客(プロバイダーの場合)ごとに1つの物理ホストを持つ
    • バックアップなどの重要なデータや、パスワードやシークレットなどの機密データを、別々の(専用の)ホストに保存します。
    • 専用ホストでネットワークを参照し、デスクトップの完全再起動以降でバンキングを実行します。別の(専用)ホストで!

行う場合分離を使用して異なるハードウェアホスト、最新のCPUが提供する投機的実行と他のすてきな機能(他のまだ知られていないバグがあっても)を安全に使用できます。システムのパフォーマンスを低下させる必要はありません。

(もしそうなら、アップグレードは良い方法ではないかもしれません... ;-)

ハードウェアの分離/専用が役立つと思うのはなぜですか?

2013年4月17日に公開されたこの旅行をご覧ください。 (5年以上前;)

出典: xkcd.com/12

XKCD 1200

7
F. Hauri

この回答はSpectre Next Generation攻撃に固有のものであり、新しい情報が入手可能になり次第更新されます。

5月22日更新:

最初のパッチが近づいているので、新しい脆弱性に関する詳細情報も表示されます。

インテルは2018年5月21日に this ステートメントをリリースしました。これにより、Spectreのバリアント3aおよび4の概要がわかります。
それぞれのCVEは次のとおりです。

  • CVE-2018-3639 -投機的ストアバイパス(SSB)–バリアント4とも呼ばれます
  • CVE-2018-364 -不正システムレジスタ読み取り(RSRE)–バリアント3aとも呼ばれます

過去10年間に製造されたほとんどすべてのIntelプロセッサは、これら2つの脆弱性の影響を受けます。マイクロコードの更新はOSベンダーが利用できるようになったので、すぐに顧客に提供されるはずです。 Linuxユーザーは、カーネルを最近更新した場合、およびディストリビューションがretpolinesを使用している場合は安全である必要があります。[要出典]

技術的な詳細について詳しく知りたい場合は、スペクターおよびメルトダウン攻撃が発覚した後に公開された投機的実行サイドチャネルを分析する Intelのホワイトペーパー が拡張され、バリアント3aおよび4をカバーするようになりました。これは、緩和をカバーする this whitepaper にも当てはまります。

参考文献:
ジャンホーンの最初の開示メール
AMDによると、SSBに対して脆弱な製品はない
ARMブログ投稿
Debianセキュリティトラッカー
Intel blogMicrosoftによるSSBの分析
Red Hat CVE DB
Red Hat脆弱性応答
SUSEセキュリティブログ
buntuセキュリティ通知
S CERT脆弱性メモ
VMWare Knowdlege Base記事


5月7日更新:

Intelが必要なマイクロコードアップデートの開発を完了できなかったため、技術的な詳細の計画された公開は、少なくとも5月21日まで、さらにはおそらくさらに長く延期されました。
しかし、今日発表されたいくつかの新しい情報、8つの新しい脆弱性のうち少なくとも2つによって影響を受ける可能性のあるプロセッサのリスト:

  • 2010年以降のすべてのi-XプロセッサーとそれぞれのXeon派生物(これらは「6」で説明されている脆弱性の影響も受けます)
  • AtomベースのPentium、Celeron、およびAtom 2013年以降のプロセッサー)

これらの最初のプロセッサの種類はtheで、通常はデスクトップPC、ノートブック、サーバーで使用されます。 2つ目は、タブレット、スマートフォン、組み込みデバイスで使用されます。
CVEやキャッチーな名前はまだありません。


5月3日、ITを専門とするドイツの雑誌c'tは、研究者がIntel CPUに8つの脆弱性を発見し、それらすべてがSpectreのような攻撃を可能にすることを報告しました。これらの新しい脆弱性はすべて、Spectre V1およびV2で悪用される脆弱性と同じ設計上の欠陥に基づいています。

これらの脆弱性の1つをカバーする最初の技術的で詳細なレポートは、おそらく5月7日にGoogle Project Zeroによってリリースされます。ただし、他の研究者や独立した組織がレポートを早期にリリースする可能性もあります。

これまでにわかったこと:

  1. 8つの新しい脆弱性があります。
  2. それぞれが独自のCVEを取得します。
  3. それぞれに独自のパッチが必要です。これまでのところ、パッチ開発の進捗状況に関する知識はほとんどありません。 c'tによると、インテルは2つのパッチウェーブを計画しています。1つは5月、もう1つは8月です。
  4. 影響を受けるプロセッサのリストはまだありません。 Intelプロセッサは、おそらくほとんどの部分で影響を受けます。一部のARM CPUも影響を受けているようです。AMDCPUが影響を受けているかどうかは、現時点では不明です。
  5. インテルは8つの脆弱性のうち4つを「高リスク」、他の4つを「中リスク」として分類しています。
  6. 伝えられるところによると、新しい脆弱性の1つは非常に簡単なシステム間攻撃を可能にします。攻撃者は、ソースVMからホストシステムまたは他のVMを攻撃できる可能性があります。これはクラウドプロバイダーにとって特に危険です。このような攻撃は以前は可能でしたが、非常に複雑でした。新しい脆弱性は、悪用がはるかに簡単なようです。他のすべての攻撃ベクトルはSpectre V1とV2に非常によく似ています。

結論:私たちは今のところほとんど知りません、そして私たちが知っていることは新しい脆弱性の抽象的な説明です。 SpectreとMeltdownは非常に複雑な攻撃であり、根底にある脆弱性も同様に複雑です。すべての技術的な詳細は、今後数週間にわたってゆっくりと話に取り入れられます。しかし、CPUベンダーは情報を得ており、それらとカーネル開発者はすでにソリューションに取り組んでいるようです。我慢してください。

出典: https://www.heise.de/ct/artikel/Super-GAU-fuer-Intel-Weitere-Spectre-Luecken-im-Anflug-4039134.html

5
Tom K.