このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第440回

性能低下が取り沙汰されるインテルCPUの脆弱性とは?

2018年01月08日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

脆弱性その1
命令の分岐予測メカニズムを悪用できる

 今回の脆弱性は基本的に投機実行が関係している。少なくともパイプライン化された実行ユニットを持つCPUの場合、「ある命令の処理が終わってから」次の命令を読み出していたら遅くてかなわない。

 したがって、基本的にある命令を処理している最中に、もう次の命令や次の次の命令をどんどん取り込んでいく。これはフェッチあるいはデコードの処理である。

 このレベルでは別に問題はないのだが、通常プログラムは繰り返し構造をとるため、どこかで分岐が入ることになる。分岐の場合、「命令の実行結果で分岐すべきアドレスが決まる」わけで、プロセッサーがパイプライン化されていなければこれは問題にならない。

 ところがパイプライン化されていると、実行結果が出るまで待っているのは時間の無駄すぎる。そこで「分岐結果をあらかじめ予測しておき、その分岐結果にあわせて次の命令の実行にかかる」という処理が実装される。

 ただこのためには分岐結果を正しく予測する必要があり、各社分岐予測メカニズムに力を入れているわけだが、結果として分岐命令があった場合、その直後の命令に関しては投機実行(たぶんこちらの命令が実行されるであろう、と予測して実行する)となるわけだ。

 ここで判断が間違っていた場合、それまで投機的に実行していた分を捨てて、新たに命令を読み直すところから始めることになる。Variant 1はこの投機実行を悪用したものだ。

 もともとのプログラムが、本来許される範囲を超えてメモリーアクセスをしようとしたものだとする。もちろんこれはCPUのチェック機構に引っかかるため途中で止まるはず(結果として実行されない)だが、投機実行のメカニズムのおかげで、「許されるメモリーの範囲を超えているか」をチェックするまでの間は投機的にメモリーアクセスを実行することになる。

 すると、「本来許されないメモリーアドレスのデータ」がデータキャッシュ上にロードされてしまうことになる。しかもこの際に「ロードされたか否か」は読み込み速度から推定できる。本来アクセスできないメモリー領域なので、ページミスが発生し、当然キャッシュアクセスの場合よりも遅くなるわけだ。

脆弱性その2
分岐先のメモリーアドレスを推定できる

 次がVariant 2である。先ほど分岐予測という話をしたが、分岐予測の際に用いられるのがBTB(Branch Target Buffer)である。これは頻繁に利用される分岐については、その際に分岐先のアドレスを格納しておくことで迅速に分岐予測を実行できるようにしようというものだ。

 問題はこのBTBは1つしかないことで、つまりOSの内部で利用する分岐先アドレスも、アプリケーションで利用する分岐先アドレスも一緒くたになって格納されている。

 BTBの構造そのものは公開されていないが、GoogleのZero ProjectではHaswellの構造を研究し、Indirect Branch(間接分岐)の場合に、同じ物理CPUに属するあるスレッドが、もう片方のスレッドに影響を及ぼせることを発見した。これを利用して、他方のスレッドに割り当てられているメモリーアドレスを推定できることが明らかにされた。

 Variant 1/2については確かに問題ではあるが、シビアなものではない。あくまでも他のプロセスに割り当てられているメモリアドレスを推定できる、というレベルのものでしかないからだ。

脆弱性その3
不正なキャッシュアクセスが可能

 これに対してVariant 3はもう少し深刻である。Variant 3はVariant 1の延長にある。Meltdownに関する論文では、以下のようなサンプルコードでこれを説明している。

  • 1 ; rcx = kernel address
  • 2 ; rbx = probe array
  • 3 retry:
  • 4 mov al, byte [rcx]
     (rcxで示されたアドレスの内容1Byteをalレジスターに格納)
  • 5 shl rax, 0xc
     (raxレジスターの内容を12bit左シフト)
  • 6 jz retry
     (shlの処理結果が0になったらretry:に飛ぶ)
  • 7 mov rbx, qword [rbx + rax]
     (rbxにrbx+raxのアドレスの内容を格納)

 今、サンプルコードは通常のユーザーメモリアドレスで動作している。行番号4の“mov al, byte [rcx]”(rcxレジスターで示されたアドレスのデータ1byteをalレジスターに読み込む)を実施した場合、特権違反(カーネル空間のアドレスにアクセスした)で例外処理に飛ぶことになる。

 ただ、その例外処理に飛ぶ前に、実際には4~7の処理がCPU内部で実行されてしまっており、この結果としてキャッシュにはrcxで示された先のアドレスから始まるデータが取り込まれてしまう、というものだ。

 一度キャッシュに取り込まれてしまえば、後はそのキャッシュの内容を改めて取り込みなおすことで、本来保護されるべきカーネルアドレスがそのまま読み取れてしまうことになる。

 実際Meltdownのチームはこの手法を利用し、パスワードを読み取るデモを公開している。Variant 1/2に比べてこのVariant 3の影響は非常に大きい。

 これが可能になるのは、CPU内部のPage Table(仮想メモリーのアドレスと物理メモリーのアドレスの対応を記したテーブル)が、OSカーネル用とユーザープロセス用で一緒になっていることが遠因である。

 先のリストに戻ると、rcxでカーネルアドレスを指定しても、そのアドレスをPage Tableで変換できなければ物理メモリーのアドレスがわからないので、キャッシュにそもそも取り込みができないことになる。

 対策としては、OSカーネル向けのPTEとユーザープロセス向けのPage Tableを分離するだけで良いことになる。

 この手法はKPTI(Kernel Page-Table Isolation)と呼ばれている。もともとLinuxではKASLR(Kernel Address Space Layout Randomization)と呼ばれる、万一カーネルにアクセスされても影響を少なく抑える技法が2014年ごろから実装されており、これをさらに改良したKAISER(Kernel Address Isolation to have Side-channels Efficiently Removed)というPTEを分離する対策を施したものが2017年に用意されていた。

 今回Meltdownへの対策として、このKAISERをベースとしたものがKPTIパッチとして提供されている。またWindowsやAndroid、macOSなどについても同じようにOSカーネル用とユーザープロセス用でPage Tableを分離すれば対策できるわけで、すでにパッチが用意されている。

 このKPTI対策をすれば安全性は確保できる(遠因としてのVariant 1/2についても同時にパッチが用意されるが、たとえばAMDはVariant 2についてはインテルのものとBTBの構造が違う上、今のところ攻撃された事例もないのでほぼリスク0だ、としている)わけだが、その代償は性能低下である。

パスワードを読み取れる「Meltdown」は、パッチを当てれば対策できるが、その代償が性能低下である

カテゴリートップへ

この連載の記事
1
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
¥177,333
2
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥39,000
3
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,970
4
ESBOOKノートパソコン 【MS Office 2024搭載&Windows 11 Pro】14インチIPS液晶/1920×1080FHDディスプレイ カメラ付き/薄型PCノート高性能CPU/初期設定不要/8Gメモリ/無線LAN/大容量SSD/初心者向け・パソコンノート/日本語キーボードフィルム付き/ワイヤレスマウス付き(256G SSD, ローズゴールド)
ESBOOKノートパソコン 【MS Office 2024搭載&Windows 11 Pro】14インチIPS液晶/1920×1080FHDディスプレイ カメラ付き/薄型PCノート高性能CPU/初期設定不要/8Gメモリ/無線LAN/大容量SSD/初心者向け・パソコンノート/日本語キーボードフィルム付き/ワイヤレスマウス付き(256G SSD, ローズゴールド)
¥38,999
5
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
¥296,323

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,280
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
KIOXIA(キオクシア)【日本製】SDカード 64GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA064G
¥1,180
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GW
¥980
8
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652
9
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
¥1,359
10
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
¥1,040

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン