プロセッサの脆弱(ぜいじゃく)性問題を図解する:Mostly Harmless(2/2 ページ)
正月の“おとそ気分”を吹き飛ばした「プロセッサの脆弱(ぜいじゃく)性問題」。なぜ起こったのか、仕組みを図解することで読み解きます。
投機的実行
また、プログラムには、ループや条件が付きものですが、分岐するかどうかはその命令を終えて、条件が確定しないと判断できません。
そうすると、この場合も前の命令が終わるまで次の命令を開始できないことになります。特に科学技術計算では、ループを多用しますから、処理速度に大きな影響を与えます。
そこで、考え出されたのが「投機的実行」です。条件が確定する前にとにかく次の命令を実行してしまい、もし駄目だったらそれまでの結果は破棄して正しい命令にとりかかるということです。
“イチかバチか”ということで「投機的」なのですね。もちろん、失敗が続くと処理速度が遅くなってしまいますから、さまざまな手段を使って予測精度をあげる工夫がされています。「分岐予測」などもその1つです。
キャッシュメモリ
パイプライン処理や半導体技術の進化によって、プロセッサ内部での処理は高速化していきますが、メインメモリであるDRAMへのアクセス速度は上がっていません。そのため、メモリからのデータを待つためにプロセッサのパイプラインが止ってしまうことになります。
そこで、メインメモリよりも高速なメモリを間に配置し、データアクセスを高速化しようとするのが「キャッシュメモリ」です。
プロセッサがメインメモリからデータを読み込むとき、ひとまとまり(数十〜数百バイト)のデータがキャッシュに読み込まれます。データはまとまって置かれていることが多いため、プロセッサが次のデータを読もうとしたときに、キャッシュにデータがある可能性が高いのです。
キャッシュに目的のデータがあれば、メインメモリまで読みに行かなくても、そのデータを読み込むことができ、処理の高速化につながります。(キャッシュにもいろいろな種類がありますが、これはリードスルーキャッシュです。)
全てのメモリを高速化すればよさそうなものですが、高速なメモリはコストがかかるのです。
現代のプロセッサは、キャッシュメモリをプロセッサ内部に持っており、パイプラインと同期して動作させることができます。ここで大事なのが、当面、プロセッサが要求していないデータもキャッシュに読み込まれることと、そのデータが使われなくても特に操作をしない限りデータはキャッシュに残ることです(その後もデータの読み込みが続いてキャッシュが足りなくなれば、古いデータは上書きされていきます)。
Meltdownの仕組み
さて、やっとMeltdownの説明ができる準備が整いました。ある不正なプログラムが、不正な命令(本来ユーザープロセスからアクセス不可能なメモリエリアからのデータ読み出し)を発行したとしましょう。
この不正な命令自身は、プロセッサが命令を実行する過程で不正なメモリアクセスであることが認識され、命令の実行はキャンセルされます。
しかし、不正な命令であることが認識されないステージでメモリアクセスが行われた場合、メモリからキャッシュへのデータ読み込みは実行されてしまいます。命令がキャンセルされても、キャッシュ上のデータは残ります。
ここで攻撃者が引き続きメモリをアクセスする命令を絶妙なタイミングで発行した場合、キャッシュに残った(本来アクセスしてはいけない)データを読み取ることが(理論的には)可能になります。
しかし、この脆弱性を悪用した実際の攻撃は現時点で確認されていません。いくつかの命令を絶妙なタイミングで実行させなければならないなど、技術的難易度は相当高いといわれていますが、ハードウェアのアーキテクチャレベルで脆弱性が見つかったこと自体が、業界に大きな衝撃を与えているわけです。
関連記事
- 連載:「Mostly Harmless」記事一覧
- Intel、プロセッサの設計変更で「Spectre」「Meltdown」の脆弱性に対応
次世代の「Xeon スケーラブル・プロセッサ」と、第8世代 Coreプロセッサーでは、プロセッサの設計を一部変更して、新たな対策を導入する。 - Intel、不具合修正の脆弱性対策パッチを追加リリース Kaby Lake以降の世代に対応
Intelは「Skylake」「Kaby Lake」「Coffee Lake」を搭載したプラットフォーム向けのマイクロコードアップデート正式版を、OEM向けにリリースした。 - プロセッサ脆弱性「Meltdown」と「Spectre」のまとめサイト開設
Intelが「他社のプロセッサも影響する」と発表したプロセッサの重大な脆弱性「Meltdown」と「Spectre」についての情報がまとまったWebサイトを、これらの脆弱性を発見したグラーツ工科大学が開設した。 - Intel、脆弱性対策パッチによるリブート増加問題やパフォーマンスへの影響について説明
「Meltdown」「Spectre」と呼ばれるCPUの脆弱性の対策パッチによってリブートが増加する問題や、サーバのパフォーマンスに及ぼす影響を調べたベンチマークの結果について報告した。 - Apple、「Spectre」の緩和策もリリース SafariとWebKitのセキュリティ対策強化
「macOS High Sierra 10.13.2補足アップデート」「iOS 11.2.2」「Safari 11.0.2」では、それぞれSpectreの脆弱性の影響を緩和するため、セキュリティ対策を改善した。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.