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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kuzushiki
June 27, 2022
Technology
0
780
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
270
Next.jsの脆弱性(CVE-2025-29927)の話
kuzushiki
0
23
CISSPに出てくるセキュリティモデルとアクセス制御モデルをまとめてみた
kuzushiki
0
260
攻撃者の視点から見たGraphQLのセキュリティ
kuzushiki
0
24
PythonのURLパーサで見つかった脆弱性について解説する
kuzushiki
0
38
Pythonのtarfileによる展開処理がセキュアになりそう
kuzushiki
0
13
Web Cache Deception Attackについて解説する
kuzushiki
0
33
PHP8.2の新機能✞SensitiveParameter✞につい て
kuzushiki
0
23
ファームウェア解析はじめました
kuzushiki
0
20
Other Decks in Technology
See All in Technology
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
340
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
Greatest Disaster Hits in Web Performance
guaca
0
200
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
530
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.7k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
590
AWS Network Firewall Proxyを触ってみた
nagisa53
1
210
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
310
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
92
Facilitating Awesome Meetings
lara
57
6.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The untapped power of vector embeddings
frankvandijk
1
1.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Balancing Empowerment & Direction
lara
5
880
A designer walks into a library…
pauljervisheath
210
24k
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