Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apple M1 CPUの脆弱性「PACMAN」について解説する
Search
kuzushiki
June 27, 2022
Technology
0
760
Apple M1 CPUの脆弱性「PACMAN」について解説する
第20回 初心者のためのセキュリティ勉強会 (
https://sfb.connpass.com/event/249919/
) での発表資料です。
kuzushiki
June 27, 2022
Tweet
Share
More Decks by kuzushiki
See All by kuzushiki
ECS-cape – Hijacking IAM Privileges in Amazon ECSを解説する
kuzushiki
0
260
Next.jsの脆弱性(CVE-2025-29927)の話
kuzushiki
0
21
CISSPに出てくるセキュリティモデルとアクセス制御モデルをまとめてみた
kuzushiki
0
220
攻撃者の視点から見たGraphQLのセキュリティ
kuzushiki
0
21
PythonのURLパーサで見つかった脆弱性について解説する
kuzushiki
0
34
Pythonのtarfileによる展開処理がセキュアになりそう
kuzushiki
0
11
Web Cache Deception Attackについて解説する
kuzushiki
0
28
PHP8.2の新機能✞SensitiveParameter✞につい て
kuzushiki
0
19
ファームウェア解析はじめました
kuzushiki
0
15
Other Decks in Technology
See All in Technology
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
1.9k
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
240
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.6k
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
ActiveJobUpdates
igaiga
1
320
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
250
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
720
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
210
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
21
8.3k
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
100
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.1k
"人"が頑張るAI駆動開発
yokomachi
1
620
Featured
See All Featured
Designing for Timeless Needs
cassininazir
0
96
Everyday Curiosity
cassininazir
0
110
Designing Experiences People Love
moore
143
24k
Test your architecture with Archunit
thirion
1
2.1k
How to build a perfect <img>
jonoalderson
0
4.8k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
410
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
91
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
Practical Orchestrator
shlominoach
190
11k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
40k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Transcript
Apple M1 CPUの脆弱性 「PACMAN」について解説する kuzushiki 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki
発表内容 Apple M1 CPU の脆弱性「PACMAN」の詳細が 6/9 に公開された PACMAN: Attacking ARM
Pointer Authentication with Speculative Execution https://pacmanattack.com/ 面白そうだったので調べてみることに 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 2 / 13
PACMAN ってなに? Apple M1 CPU の Pointer Authentication を回避することができる新しい攻撃手法 PACMAN
は ソフトウェア攻撃とハードウェア攻撃の中間 に位置する画期的な攻撃とのこと 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 3 / 13
M1 CPU 使ってるから心配なんだけど ソフトウェアのアップデートをちゃんとしているなら大丈夫! あくまで数あるセキュリティ機構のうち Pointer Authentication という機能をバイパスできるだけ Q. M2
CPU 買えば大丈夫? A. 「M2 チップで PACMAN が可能となるかどうかはまだ確認されていない」とのことなので、不安な方は購入を待つと良いかも… 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki APPLE M1 チップのポインタ認証を迂回する攻撃「PACMAN」 | スラド IT から引用 4 / 13
Pointer Authentication って何? ポインタの先頭部分に Pointer Authentication Code (PAC) と呼ばれるハッシュを付与し、検証できるようにする仕組み メモリ破壊の脆弱性(バッファオーバーフローなど)により、ポインタが書き換えられ不正な命令を実行されるのを防ぐ
M1 独自の機能というわけではなく、ARM, Qualcomm, Samsung などのチップメーカーも今後対応予定 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 5 / 13
どうやってバイパスするの? (1 / 3) 投機実行を悪用したサイドチャネル攻撃 投機実行とは? 標準的な CPU は順番通りに命令を実行 命令に使うデータを読み込むまで待機
<- この時間がもったいない! データを読み込むまでの間にもできることをしよう、というスタンス 例えば下記のケースでは yes() と no() を両方実行しておき、使わないほうは破棄する <- ここが大事 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki ` ` ` ` 1 if (cond): 2 yes() 3 else: 4 no() 6 / 13
どうやってバイパスするの? (2 / 3) 破棄されるほうの分岐で PAC の検証を行う 通常、PAC の検証に失敗すると例外となりプログラムがクラッシュしてしまう ->
投機実行の裏で行った場合、「例外となる」という結果が破棄されるため、クラッシュさせずに続行できる でも、破棄されるのに PAC の検証に成功したかどうやって判定するの? 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 7 / 13
どうやってバイパスするの? (3 / 3) サイドチャネル攻撃を行う サイドチャネル攻撃とは? コンピュータの物理的な特性を外部から観察あるいは測定することで、内部の情報の取得を試みる攻撃 今回は TLB (仮想アドレスに対応した物理メモリのアドレス専用のキャッシュ)
を使う TLBは直前に参照されたアドレスを格納する PAC を求めたいポインタのアドレスで埋め尽くしてしまう PAC の検証後にそのポインタへアクセスさせるように仕向け、その後アクセスした際の時間を確認 アクセス時間が短い -> TLBに格納されているキャッシュがロードされずに残ってる -> 検証失敗 アクセス時間が長い -> TLBに格納されているキャッシュがロードされ退避された -> 検証成功 アクセス時間により、 PAC の検証が成功したかどうかを確認できる! 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 8 / 13
攻撃の実証 (1 / 3) 1. PACMAN 攻撃の正確さ 不正な PAC と正常な
PAC (それぞれ1万個)を用い、TLB のデータに差が生じるかを検証している 縦軸: 頻度 横軸: ロードが成功し TLB から退避されたデータの個数 (a) と (b) では異なる PACMAN ガジェットを使用している 不正な PAC と 正常な PAC で明確な差が生じている -> PACMAN 攻撃は正確である 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 9 / 13
攻撃の実証 (2 / 3) 2. 総当りにかかる時間 1つの PAC をテストするのに平均 2.69
ミリ秒かかる -> M1 では 16 ビットの PAC が使われているので平均で 2.94 分かかると推定できる -> 十分実用的 ( 2.69 x 10 x 2 ≒ 176.29 ≒ 2.94 x 60 ) 3. 総当りの正確さ 50 回実験を行った -> 45回は正しい PAC が見つかり、残りの5回は見つからなかった 「ダメじゃん」と思われるかもしれないが、あくまで偽陰性のため再度総当りすればよい。 ※偽陽性(不正な PAC を「正しい」と判断してしまう)があるとクラッシュしてしまうので NG 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki -3 16 10 / 13
攻撃の実証 (3 / 3) 4. 実際に悪用できることの確認 意図的にバッファオーバーフローの脆弱性を作り込み、 Pointer Authentication をバイパスして関数ポインタをカーネル内に存在
する別の関数に書き換える -> 攻撃に成功した 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 11 / 13
対策 1. PAC の検証結果が投機実行により漏洩しないように、マイクロアーキテクチャやソフトウェアを変更する 2. Spectre に対する防御の先行研究を、PACMAN に対する防御に適応させる 3. ソフトウェアに存在するメモリ破壊の脆弱性にパッチを適用する
-> 皆さんが実行できるのは 3 の対策のみ 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 12 / 13
終わりに Apple M1 CPU の脆弱性「PACMAN」についてざっくりと解説した 今後検証コードが公開されるとのこと Check back here for
a complete release of all of our code coming soon. -> 来月までに公開されていたら勉強会でデモやるかも 第20回 初心者のためのセキュリティ勉強会 kuzu7shiki 13 / 13