発見者が解説――「Spectre」を発見したリバースエンジニアリング手法:欠陥のないプロセッサは作れるのか
IT業界の2018年は「Spectre」と「Meltdown」で始まった。こうした欠陥はどのようにして発見されたのか。この欠陥を発見した研究者の1人に聞いた。
2018年1月3日、Googleの「Project Zero」チームは、モダンなマイクロプロセッサの性能を向上させる技術を悪用するとデータが漏えいすると報告した。“ローカルのセキュリティ境界を越えて任意の仮想メモリを読み取る脆弱(ぜいじゃく)性”につながるものだ。
Computer Weekly日本語版 2月21日号無料ダウンロード
本記事は、プレミアムコンテンツ「Computer Weekly日本語版 2月21日号」(PDF)掲載記事の抄訳版です。本記事の全文は、同プレミアムコンテンツで読むことができます。
なお、同コンテンツのEPUB版およびKindle(MOBI)版も提供しています。
攻撃には、「Spectre」と「Meltdown」の2種類があるとGoogleは特定した。Spectreはモダンな全てのマイクロプロセッサに影響するが、MeltdownはIntel製品のみが影響を受けるようだ。
Spectreについての概念実証(PoC)が行われた結果、Intel製品はHaswell世代の「Xeon」、AMD製品は「FX」「PRO」、Arm製品は「Cortex A57」にこの脆弱性が存在することが分かった。
サイバー犯罪者がこの欠陥を悪用すれば、モバイル端末、PC、サーバなど、クラウドネットワーク上で稼働するコンピュータから、そのメモリの中身をそっくり盗み出すことができる。
業界の反応
Spectreの脆弱性には、3つのバリアントが存在する。バリアント1とバリアント2は、AMD、Arm、Intelのプロセッサに影響を与えるとみられている。一方、研究者たちが提示したPoCはバリアント3のみを対象にしており、これはIntelのチップのみに含まれる「Meltdown」と呼ばれる脆弱性だ。
2018年1月に米ラスベガスで開かれたCESで基調講演を行ったIntelのCEO、ブライアン・クルザニック氏は次のように述べている。「この5年間に当社が出荷したプロセッサについて、90%以上のモデルに対しては向こう1週間以内に、残りは今月末日までにアップデートを公開する予定だ」
「こうしたアップデートがパフォーマンスに与える影響は、ワークロードによって大きく変わってくるとわれわれは考えている。つまりその結果、一部のワークロードについては、他よりも大きな影響を受けると予測している。そこで当社は引き続き各業界との協力体制を維持し、そうしたワークロードへの影響を最小限に抑えるための取り組みを続ける」
一方AMDは以下のコメントを発表している。「対象とされたプロセッサに関して、経験とスキルの豊富なチームが、制御された専用のラボ環境において、非公開で詳細な調査を実施し、その結果を記録した」
AMDは、バリアント1対応のパッチを公開した。これはシステムプロバイダーに対しての公開となっている。バリアント2については、同社のプロセッサは影響を受けないとしている。Armは、カーネルパッチを発行してバリアント2の影響を軽減させると同時に、バリアント1からLinuxを保護する方法の説明を提供している。
iOSとAndroidは両方とも更新されて、悪意のあるブラウザスクリプトがSpectreを悪用するのを防止している。
プロセスの欠陥に苦しむ
電気機器メーカーのRambusでセキュリティ担当シニアエンジニアとして働くマイク・ハンバーグ氏は、独自の調査によってこの欠陥を発見した研究者の1人だ。
「複雑なプロセッサは、RISC(Reduced Instruction Set Computer:縮小命令セットコンピュータ)でもCISC(Complex Instruction Set Computer:複合命令セットコンピュータ)でも、その大半が投機的実行を利用している。これは、プロセッサが将来実行する計算を事前に推測することでパフォーマンスを向上させる手法だ」と同氏は説明する。「ただしこの手法を実行することで、プロセッサは結果的に、意図していなかった処理を実行する可能性もある」
Spectreは、将来実行する命令を推測する際にプロセッサが犯す過ちを利用して、メモリから特権情報を盗み出す、いわゆる「サイドチャネル攻撃」を実行するとハンバーグ氏は話す。
「Spectreはそもそも、仕掛けるのも困難だが、この攻撃を防ぐのはそれよりもずっと難しい。プロセッサに対して物理的な改変を加える必要があるからだ」と同氏は警告する。
「Spectreの脆弱性が発生する理由は、ユーザーが指示した命令をCPUが実行するからだけではない。CPUは先を読んで、プログラムが次に実行する命令を推測しようとする。少しでも早く処理を実行するためだ」
例えば、プログラムがループを5回実行した場合、プロセッサは6回目を実行するだろうと推測するかもしれない。プログラムが次に何を実行したいかを的確に推測してメモリやデータキャッシュをあらかじめ変更することができれば、パフォーマンスが大幅に向上する。ただし予測が誤っている場合は、変更を元に戻さなければならない。
プロセッサメモリの冗長化
ハイエンドなプロセッサであれば、何百ものプログラム命令を先読みできる。だが、予測が間違っていても、メモリからキャッシュに読み込んでおいたデータを削除するなどの取り消し処理は行わない、とハンバーグ氏は指摘する。
マイクロプロセッサの欠陥を利用すれば、アクセス特権を取得していなくても503kbpsのペースでPCから物理メモリを読み取ることができることを、研究者たちは実証した。これにより、攻撃者は、パスワードや暗号化キーなど、メモリに格納された機密情報を非常に迅速に取得できる。
プロセッサが直近の数秒間、または数ミリ秒間に実行したプログラムの挙動に基づいて予測を下すことを踏まえて、攻撃者はプロセッサの予測の精度を故意に下げるような不正なプログラムを作成するとハンバーグ氏は説明する。
脆弱性から保護するためには、プロセッサの設計において、コアレベルで安全性を確保する仕組みが必要だとハンバーグ氏は主張する。「ハードウェア優先戦略を採用し、チップは物理的に分割されたセキュアなコアで暗号機能を実行するように設計すべきだ」
タイミングの悪用
Spectreについては、命令の最適化方法を単純に把握すれば、マイクロプロセッサ自体が侵害される過程も理解できる。また、この脆弱性によりタイミング実行の仕組みや、タイミングがどのように機密データのリバースエンジニアリングに利用されるのかも全て明らかになる。
Rambusは、タイミング、電力消費、電波放射など、演算の副作用から、コンピュータの挙動に関する情報がどのように流出するのかを調査した。
続きはComputer Weekly日本語版 2月21日号にて
本記事は抄訳版です。全文は、以下でダウンロード(無料)できます。
■Computer Weekly日本語版 最近のバックナンバー
Computer Weekly日本語版 2月7日号 キャッシュレス先進国の現実
Computer Weekly日本語版 1月24日号 “侵入者をだますセキュリティ”のススメ
Computer Weekly日本語版 1月10日号 “マルチクラウド”は幻想にすぎない
Copyright © ITmedia, Inc. All Rights Reserved.