メルトダウン/スペクターとは?

メルトダウン(Meltdown)とスペクター(Spectre)は、ほとんどのPCやスマートフォンに影響を及ぼす新しいプロセッサの脆弱性です。利用可能なパッチがありますが、プロセッサのパフォーマンスに影響を及ぼします。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • メルトダウンとスペクターの定義と区別をする
  • 投機的実行の仕組みが説明する
  • メルトダウンのパッチがプロセッサの速度にどう影響するか説明する

記事のリンクをコピーする

メルトダウン/スペクターとは?

メルトダウンとスペクターはIntel、AMD、Apple、ARMのチップで近年発見された脆弱性です。これらの脆弱性は、影響を受けたチップの深刻な設計上の欠陥の結果として生じたものです。そして、この問題を発見したことで、Windows、Mac、Linuxのオペレーティングシステムソフトウェアは、脆弱性を軽減し、攻撃者による悪用を防止するために再設計を余儀なくされました。

この脆弱性は、攻撃者に悪用される前に、セキュリティ欠陥の検出を専門に行うGoogle Project Zeroの研究者が発見しました。現時点では、既知のメルトダウンのエクスプロイトもスペクターエクスプロイトも存在しません。Apple、Intel、Microsoftなどの主要テクノロジー企業のセキュリティチーム、ならびにオープンソースLinux開発者らが悪意のあるエクスプロイトに先駆けてプロセッサとオペレーティングシステムを確実に保護できるよう、大量のリソースを費やしています。

メルトダウン/スペクター脆弱性の影響を受けるのは誰か

若干の例外を除き、PCやスマートフォンを使う人全員にリスクがあります。Googleによれば、1995年以降に製造されたIntelプロセッサチップを搭載したすべてのデバイスに影響があるとされています。AMDおよびARMチップは悪用されにくいものの、それでもリスクがあります。

メルトダウン/スペクター脆弱性から保護する方法とは?

PCのプロセッサを交換する以外に、脆弱性をなくす唯一の方法はオペレーティングシステムにパッチを適用することです。Appleが12月上旬に、大々的な告知なく、OSX向けメルトダウンパッチを静かにリリースしたことを皮切りに、Microsoftは1月3日にWindowsパッチをリリースし、Linux開発者はまだパッチをまとめるのに四苦八苦しています。

こうしたメルトダウンパッチの副作用は、設計上、パッチを適用したOSを使用するコンピュータの処理速度が遅くなる点です。これらの減速は、チップのタイプと実行されているタスクに大きく依存し、パフォーマンスに推定5〜30%の影響を及ぼします。

メルトダウン/スペクター脆弱性は実際、どう機能するのか

メルトダウン/スペクターの両方ともが、投機的実行と呼ばれるプロセス中に特別に実行される「カーネルコード」と呼ばれる特殊な低レベルコードの実行により生じる脆弱性です。

投機的実行とは?

投機的実行について説明する場合、メタファー(暗喩)を使うとわかりやすいかもしれません。ハイキング中の人が森で道に迷ったとします。そのハイカーは、ほぼ平行の2本の分かれ道に差し掛かります。1本の道は家に帰る道で、もう1本の道は別のところに続きます。そのハイカーは、誰かがやって来てどちらの道かを教えてくれるのを待つのではなく、自宅に着くだろうと思う道を進むことにしました。歩いている途中で、標識を見かけ、家に帰るための正しい道だと確認されたら、そのまま歩き続けます。もし標識を見て、間違った道を選んだことがわかったら、ハイカーはすぐに来た道を戻って、別の道を選びなおすでしょう。しかし、この場合でも、分岐点で他の人が来るのを待ち続けるよりも良かったと言えます。

投機的実行

現代のプロセッサの多くは、投機的実行と呼ばれる同様のテクニックを実行します。CPUは、次に実行する必要があるコードを推測し、要求される前にそのコードを実行します。実行されたコードが必要でないことが判明した場合、変更は元に戻されます。これは時間を節約し、パフォーマンスを高速化するためのものです。

メルトダウン/スペクターの脆弱性に関する報告は、Intel CPUが重要なセキュリティ検査を必要とすることなく、投機的にコードを実行している可能性があることを示唆します。通常、これらのセキュリティチェックによってブロックされる命令が、プロセッサが完了しているかを確認するように設計されたソフトウェアを作成できるかもしれません。

This mishandling of speculative execution creates a CPU vulnerability which an attacker can exploit to access very sensitive data in kernel memory such as passwords, encryption keys, personal photographs, emails, etc.

カーネルとは?

カーネルは、コンピュータのオペレーティングシステムの中核をなすプログラムです。オペレーティングシステムを完全に制御し、起動からメモリーのハンドリングまですべてを管理します。そして、CPU(中央処理装置)にデータ処理命令を送信する役割も担っています。ほとんどのCPUは、カーネルモードとユーザーモードを常に切り替えています。

カーネルモードとユーザーモードの違いは?

カーネルモードで、CPUはコンピュータのハードウェアとメモリーへの無制限のアクセスを持つコードを実行しています。このモードは通常、最下位レベルおよび最も信頼される操作用に予約されています。CPUがカーネルモードの時に発生するクラッシュは、致命的である可能性があります。つまり、オペレーティングシステム全体がクラッシュする可能性があるということです。

ユーザーモードで実行されるコードは、ハードウェアまたは参照メモリーにアクセスできないため、代わりにシステムAPIに委譲する必要があります(システムAPIは、ユーザーモードのソフトウェアが適切な権限で要求できるカーネルモード機能を実行できます)。ユーザーモードでのクラッシュは通常、分離され、回復可能です。ほとんどのコードはユーザーモードで実行されます。

メルトダウンのパッチがパフォーマンスを低速させる理由

メルトダウンパッチに含まれる修正には、カーネルのメモリーをユーザープロセスからより劇的に分離する操作が含まれます。これはカーネルページテーブルの分離(KPTI)と呼ばれる手法を介して実行されます。KPTIは、カーネルモードの操作をユーザーモードの操作から完全に独立したアドレス空間に移動します。つまり、カーネルモードとユーザーモードの切り替えにかなり時間がかかるようになります。

これをより詳しく説明するために、ホットドッグとレモネードの2つのアイテムしか販売していないフードトラックを使ってみましょう。フードトラックの中にいる従業員は、ホットドッグが入っているスチーマーとレモネードが入っているクーラーの両方に非常に簡単に手を伸ばすことができるため、ビジネスは非常に活発に動きます。そこに保健所の職員が検査にやって来て、温かい食べ物と冷たい食べ物を別々の場所に置くよう指示しました。そのため、従業員はホットドッグはトラックの中ですぐ取り出せますが、レモネードを取るためには、いったんトラックを出て通りの向こう側まで歩かなければなりません。これにより、特に、お客様がレモネードを頼んだ場合には、トラックのビジネス自体の動きが鈍くなります。この話は、KPTIがオペレーティングシステムのパフォーマンスを低下させる仕組みにとてもよく似ています。

メルトダウンとスペクターの違いは?

メルトダウンとスペクターはどちらも、プロセッサが投機的実行を処理する方法によって生じる脆弱性ですが、動作方法や影響を受けるプロセッサの種類は多少異なります。

メルトダウンはIntelとAppleのプロセッサにのみ影響し、投機的な実行中に、プロセッサが実行するコードの結果として公開される情報を漏洩するのに悪用される可能性があります。メルトダウンは、スペクターよりも悪用しやすく、セキュリティ専門家から重大リスクと見なされています。しかし、幸いにもメルトダウンはパッチの作成が容易です。

スペクターは、Intel、Apple、ARM、AMDプロセッサに影響を及ぼし、プロセッサをだまして、実行が許可されていないコードを実行させるために悪用される可能性があります。Googleのセキュリティ専門家によると、スペクターはメルトダウンよりも悪用するのがはるかに困難ですが、問題の軽減もまた、大幅に困難です。

メルトダウンとスペクターについてもっと情報が必要ですか。

技術的詳細ついての情報は、完全版のメルトダウンペーパースペクターペーパーにアクセスしてご確認ください。