現代的なCPUの脆弱性
組み込みプロセッサにも影響大「Spectre」「Meltdown」の背景を探る(2/4 ページ)
「Meltdown」はデータが「読めて」しまう
本題はMeltdown(Variant3)である。こちらはVariant 1をベースにしたものだが、もう少しシビアである。Variant 1では、メモリからキャッシュにロードされることで、当該アドレスをアクセスしたときの速度が変わるという「だけ」の話で、直接中身が見える訳ではないのだが(間接的には見える)、Meltdown(Variant3)はキャッシュ経由でデータを読み取れるというものである。
1 ; rcx = kernel address
2 ; rbx = probe array
3 retry:
4 mov al, byte [rcx]
5 shl rax, 0xc
6 jz retry
7 mov rbx, qword [rbx + rax]
Meltdown サンプルコード x64
Meltdownに関する論文によるサンプルコード(x64)は上記のようなものであり、Armもやはりサンプルコードを提示している。64bit(AArch64)ならびに32bit(AArch32)だと下記のようになっている。
1 LDR X1, [X2] ; arranged to miss in the cache
2 CBZ X1, over ; This will be taken but
2 ; is predicted not taken
4 LDR X3, [X4] ; X4 points to some EL1 memory
5 LSL X3, X3, #imm
6 AND X3, X3, #0xFC0
7 LDR X5, [X6,X3] ; X6 is an EL0 base address
8 over
Meltdown サンプルコード AArch64
1 LDR R1, [R2] ; arranged to miss in the cache
2 CMP R1, #0
3 BEQ over ; This will be taken but
4 ; is predicted not taken
5 LDR R3, [R4] ; R4 points to some PL1 memory
6 LSL R3, R3, #imm
7 AND R3, R3, #0xFC0
8 LDR R5, [R6,R3] ; R6 is an PL0 base address
9 over
Meltdown サンプルコード AArch32
筆者はあまりAArch32/64に慣れてないので、x64で紹介したい。ここでrbxはユーザーモードで動くプログラム中のデータ受け用の配列(Probe array)の先頭アドレス、rcxは本来カーネルモードでしかアクセスできない、プログラムが盗みたいデータの入ったアドレスである。
さて、まずいきなり4行目でrcxの指すアドレスの先のデータを1バイト、alレジスタに格納させようとする。ついで5行目でraxを12bit左シフト(=4096倍)してから、その値をProbe arrayに格納する(7行目)という形になる。ただし、実際にはこの作業そのものはうまくいかない。4行目でアクセス保護違反が発生するからだ。
ただ、Variant 1と同じくアクセス保護違反の処理ルーティンへ割り込みが入る前に、5~7行目も投機的に実行されることになる(jz retryのループ処理は、ここをCPUに分岐処理と認識させ、投機実行を行わせるために入っている)。7行目の処理も同様で、実際には正しいデータは読み出せない。重要なのは、この7行目を実行しようとした結果、その値に相当するページがキャッシュに取り込まれることだ。
例えば4行目でalに格納される値が0x40だとする。5行目でこれは0x40000になる。そして7行目で、rbx+0x40000というアドレス(から始まる1ページ)をメモリからキャッシュに取り込むことになる。7行目が終わった後で例外処理が発生し、4行目~7行目の処理はROBから全部消去されることになる。ただしキャッシュには先ほどのrbx+0x40000のページが残ったままである。
そこで例外処理から帰ってきたら、rbx~rbx+0xFF000までの全ページのアクセス速度を測定すると、Photo01の様にあらかじめキャッシュされたページだけ、異常にアクセス時間が短くなる。これにより、カーネルアドレスの指し示すアドレスの先のデータを事実上読み取ることができるようになる、というものだ。
Copyright © ITmedia, Inc. All Rights Reserved.
特集(エレクトロニクス)
「エレクトロニクス」関連の特集記事です。
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[株式会社 Green AI] AIで脱炭素計画を最適化、初年度からエネルギーコストとCO2を削減する方法 -
市場調査・トレンド
[スマートジャパン編集部] 「ペロブスカイト太陽電池」の普及戦略が公表 政府が目指すコスト・導入量のロードマップを解説 -
市場調査・トレンド
[スマートジャパン編集部] 導入が加速する再エネ・系統向け蓄電システム コスト・収益性の現状分析 -
技術文書・技術解説
[スマートジャパン編集部] いまさら聞けない「ペロブスカイト太陽電池」の基礎知識と政策動向 -
技術文書・技術解説
[スマートジャパン編集部] 「ペロブスカイト太陽電池」の開発動向、日本の投資戦略やコスト目標の見通しは?
関連記事
こんなメディアも見られています
TechFactoryに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
特集
- マテリアルズ・インフォマティクスの動向調査
- 研究・開発職のデジタル活用調査
- 設計・解析業務におけるAI活用
- 3Dプリンタ利用動向調査
- CAD利用動向調査
- つながる工場の現状と課題
- 製造業におけるAI開発および活用の実態
- 設計・製造現場における品質管理
ホワイトペーパーランキング PR
-
1
EE Times Japan×EDN Japan 統合電子版:フィジカルAIが生み出す新たな「設計思想」――電子版2026年8月号
-
2
半導体装置メーカー 業績まとめ【2027年3月期第1四半期】
-
3
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part4)
-
4
一時は時価総額トヨタ超え キオクシア2026年度の動向
-
5
微細配線間の絶縁劣化をどう捉える? 先端パッケージ評価の最前線
-
6
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part1)
-
7
EE Times Japan×EDN Japan 統合電子版:2026年上半期の半導体業界を振り返る――電子版2026年7月号
-
8
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part3)
-
9
CADツールの見直しは本当に必要? 切り替えの理由と効果を7つの質問で検証
-
10
新入社員に読んで欲しい鉄鋼材料の基礎知識まとめ(Part2)
TechFactory SNS
インフォメーション
注目情報をチェック
TechFactoryをフォロー