SlideShare a Scribd company logo
1 of 18
Download to read offline
ARMアーキテクチャにおけるセキュリティ機構の紹介[1]
@fmirx0723
2020/11/30 Ritsumeikan Security Team
[1] : https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-
complex-software
はじめに
○ARMv8-A以降のプロセッサに実装されているセキュリティ機構についていくつか
紹介する
l ARM : 組込み(IoT)機器などの低電⼒アプリケーションで⽤いられるプロセッサアーキテクチャ
l ARMv8以降から64bitにも拡張され,これまでより⼤きいアドレスが扱える
1. PAC(Pointer Authentication Code)
2. BTI(Branch Target Identification)
3. MTE(Memory Tagging Extension)
○ハードウェアで実装される機能のため,(ソフトウェアより)⾼速(無駄がない)
2020/11/30 Ritsumeikan Security Team
1
PAC(Pointer Authentication Code)
2020/11/30 Ritsumeikan Security Team
PACの概要
○PACでは,ポインタに認証コードを埋め込むことで,ポインタ書き換えの検出が
可能となる
l リターンアドレスが書き変わっている時に,認証されていなアドレスの場合,そのアドレスへの
アクセスはリジェクトされる
l ROP,ret2*の検出が可能になる
2020/11/30 Ritsumeikan Security Team
3
function :
FUNCTION BODY
return
AAAA
gadget addr
gadget addr
gadget
…
pop ebx;
ret;
…
SP
gadget addr
は認証されて
ない
スタック領域
ポインタへの認証コードの埋め込み
○ARMでは,アドレスを64bitのレジスタに格納するが,実際には40bitまでしか
アドレスとして使⽤しないため,その使⽤しないbitを使⽤する
l Linuxにおける仮想アドレス空間のレイアウト[2]では,
仮想アドレスの上位12bitが,カーネル空間の時0xFFFで,ユーザ空間の時0x000となっている
l 上位12bitに,PACとカーネル・ユーザ空間を⽰すビット(high/low)を埋め込むことができる
2020/11/30 Ritsumeikan Security Team
4
Address
VA_SIZE - 1
PAC
PAC
VA_SIZE
54
55
56
63
high / low
[2]: Documentation/arm64/memory.txt
PACによるROPの検知
○ ポインタの認証を⾏うための命令が追加されている
l 認証コードを⽣成してポインタに埋め込む命令︓ PAC*
l 認証コードを検証してポインタを復元する命令︓ AUT*
l ポインタ認証機構が実装されていないCPUではNOP命令扱いになる
→ 後⽅互換性
○ gccのオプション-sign-return-addressを付与することで,上記命令が挿⼊される
1. PACIASPで,認証コードを⽣成し,LRに埋め込む
l 関数の開始時,LR(Link Register)には戻り先アドレスが格納されている
2. AUTIASPで,スタックからLRに復元した戻り先アドレスを認証する
2020/11/30 Ritsumeikan Security Team
5
function :
PASIASP ; create PAC
stp FP, LR, [SP, #0] ; store LR
… ; function body
ldp FP, LR, [SP, #0] ; load LR
AUTIASP ; authenticate
ret ; return
PACの⽣成
○ 複数のキー(128bit)が⽤意されており,各キーは64bitのシステムレジスタ
(カーネルモードからしかアクセスできない)に格納される
l 命令アドレスへのポインタ⽤のキーが2つ
l データアドレスへのポインタ⽤のキーが2つ
l 汎⽤キーが1つ
l 命令・データアドレスについて,PACの⽣成と検証を⾏う命令は,どちらのキーを使⽤するか指定する
○ 認証コード⽣成アルゴリズムは,IMPLEMENTED DEFINE(プロセッサの実装による)
l アルゴリズムには,QARMAが推奨されている
○ 認証コード⽣成には,ポインタとキー,Modifier(例えばスタックポインタ)が⽤いられる
l スタックポインタは,呼び出す時と返る時に値が同じ
l PACIASPの場合,命令アドレスへのポインタをキーAとSPを⽤いて認証コードを⽣成する
2020/11/30 Ritsumeikan Security Team
6
Pointer
Key
Modifier
P +
PAC Pointer + PAC
PACの検証
○認証命令は,PACを再⽣成し,ポインタと⽐較する
○認証に成功した場合,PACを取り除いた値を返す
○認証に失敗した場合,無効なポインタを返す
→MMUフォルト例外が発⽣する
2020/11/30 Ritsumeikan Security Team
7
Pointer + PAC
Key
Modifier
P PAC Pointer
=
Invalid
Pointer
BTI(Branch Target Identification)
2020/11/30 Ritsumeikan Security Team
BTIの概要
○ROPと似た攻撃⼿法に,JOP(Jump Oriented Programming)がある
○JOPでは,BLRやBR命令を使⽤して,任意の位置に制御を移しながら攻撃を⾏う
○BTIでは,BLRやBR命令の⾶び先としてBTI命令のみを許可する
l JOPで任意の位置に⾶び先を指定できなくなる(Gadgetsの数が減る)
2020/11/30 Ritsumeikan Security Team
9
code
…
ADD
…
脆弱なコード
…
…
BR X9;
…
code
…
BTI
…
脆弱なコード
…
…
BR X9;
…
BTI命令以外に⾶べない BTI命令には⾶べる
BTIの有効化
○PTEのGPビットが⽴っている時に,そのアドレス範囲でのBTIが有効になる
○BTIで保護されたコードとレガシーなコードが混在できる
2020/11/30 Ritsumeikan Security Team
10
仮想アドレス空間
BTI protected code
BTI protected code
Legacy code
Legacy code
GP = 1
GP = 1
GP = 0
GP = 0
物理アドレス空間
BTYPEフィールド
○PSTATE(プロセッサの状態を保持するフラグ)に,分岐タイプを⽰すBTYPEフィー
ルドがある
○BTYPEフィールドの値は,BTI命令の引数によって設定され,異なる種類の分岐に対
して有効となる
l BTI C︓ 関数呼び出しで使⽤される
l BTI J︓ BRによる呼び出しのみで有効
l BTI JC︓ BTI CとBTI Jの両⽅の働きをし,かつ,BLRなどの命令のターゲットにもなる
2020/11/30 Ritsumeikan Security Team
11
MTE(Memory Tagging Extension)
2020/11/30 Ritsumeikan Security Team
MTEの概要
○ Use After Freeやバッファオーバフローなどのメモリ管理に関する脆弱性に対する攻撃への
対策として,MTE(Memory Tagging Extension)が実装されている
○ MTEは,メモリへのタグ付けを⾏う(タグ⽤のアドレス空間が,別途,⽤意されている)
○ PACと同様,仮想アドレスの上位ビットにタグを付与し,メモリに割り当てられたタグと
⽐較することでアクセスの安全性を検証する
2020/11/30 Ritsumeikan Security Team
13
仮想アドレス空間
Region A
Region B
9
9
2
2
2
0x0900 0000 c410 7168
0x0200 0000 c410 7168
0x0900 0000 c410 7168
Use After Freeの検出
○Use After Freeは,Freeした後の領域にアクセスする脆弱性がある時に使える
攻撃⼿法
○malloc()を呼び出すと,プロセスに割り当てるメモリにタグを付与して返す
○メモリに割り当てられたタグは,freeされる時に更新しされる
○freeされた領域に,malloc()から得られたメモリアドレスでアクセスしようとすると,
タグが⼀致しないため,リジェクトされる
2020/11/30 Ritsumeikan Security Team
14
仮想アドレス空間
Region B
1
2
2
2
1
1
…
free(pBuffer);
…
pBuffer[3] = 5;
… tag=3
まとめ
○PACでは,アドレスとして使⽤されないビットに認証コードを埋め込むことで,
戻り先アドレスなどで使⽤するアドレスが正しいかを判断できる→ROP対策
○BTIでは,分岐先のターゲットとなる専⽤の命令を⽤意することで,
Gadgetsの数を減らすことができる→JOP対策
○MTEでは,メモリにタグ付けを⾏うことでメモリアクセスの安全性を
検証することができる→Use After Free脆弱性の検知
興味を持った⼈は,以下の資料も読んでみてほしい
(今回読んでないので,読んだ時には教えて欲しい)
l iPhone XSを例に挙げたPACの実験︓
https://googleprojectzero.blogspot.com/2019/02/examining-pointer-authentication-
on.html
l PACの論⽂(攻撃⼿法なども記述されている)︓
PAC it up: Towards Pointer Integrity using ARM Pointer Authentication
l AndroidでのMTE︓
https://security.googleblog.com/2019/08/adopting-arm-memory-tagging-extension.html
2020/11/30 Ritsumeikan Security Team
15
補⾜資料
2020/11/30 Ritsumeikan Security Team
Return Oriented Programming
○コード領域に存在するret命令で終わる機械語の断⽚をGadgetsと呼ぶ
○Gadgetsを組み合わせて任意の処理を実⾏させる攻撃⼿法をROPと呼ぶ
l リターンアドレス書き換えの位置は固定 → ASLR回避
l コード領域は,実⾏可能属性 → DEP回避
2020/11/30 Ritsumeikan Security Team
17
AAAA
gadget addr
gadget addr
コード領域
スタック領域
gadget
…
add eax, 4;
ret;
…
gadget
…
pop ebx;
ret;
…
コード領域
脆弱なコード
…
…
ret;
…
書き換えられた
リターンアドレス
に⾶ぶ

More Related Content

What's hot

Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
Takuya ASADA
 

What's hot (20)

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
Making a spresense Wi-Fi add-on board
Making a spresense Wi-Fi add-on boardMaking a spresense Wi-Fi add-on board
Making a spresense Wi-Fi add-on board
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 

Similar to ARMアーキテクチャにおけるセキュリティ機構の紹介

130522 01
130522 01130522 01
130522 01
openrtm
 
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
Eiji Sasahara, Ph.D., MBA 笹原英司
 
130711 01
130711 01130711 01
130711 01
openrtm
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
openrtm
 
Rtm講習会 140626 01
Rtm講習会 140626 01Rtm講習会 140626 01
Rtm講習会 140626 01
openrtm
 
130710 01
130710 01130710 01
130710 01
openrtm
 
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
openrtm
 

Similar to ARMアーキテクチャにおけるセキュリティ機構の紹介 (20)

Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
 
Microsoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
 
130522 01
130522 01130522 01
130522 01
 
Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料
 
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
[ハードウェア編] クラウドネイティブアーキテクチャとIoTセキュリティ・バイ・デザイン
 
130711 01
130711 01130711 01
130711 01
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
 
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築  [ISOC-JP workshop, 2016/05/20]
セキュリティオペレーション自動化に向けた、基盤技術と共通インターフェースの構築 [ISOC-JP workshop, 2016/05/20]
 
Rtm講習会 140626 01
Rtm講習会 140626 01Rtm講習会 140626 01
Rtm講習会 140626 01
 
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
 
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
 
130710 01
130710 01130710 01
130710 01
 
【Log Analytics Tech Meetup】Beatsファミリーの紹介
【Log Analytics Tech Meetup】Beatsファミリーの紹介【Log Analytics Tech Meetup】Beatsファミリーの紹介
【Log Analytics Tech Meetup】Beatsファミリーの紹介
 
AWS IoT EduKit ワークショップのご紹介
AWS IoT EduKit ワークショップのご紹介AWS IoT EduKit ワークショップのご紹介
AWS IoT EduKit ワークショップのご紹介
 
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
 
IoTデバイスを脅威から守るセキュリティ機能-RXセキュリティMCUのご紹介
IoTデバイスを脅威から守るセキュリティ機能-RXセキュリティMCUのご紹介IoTデバイスを脅威から守るセキュリティ機能-RXセキュリティMCUのご紹介
IoTデバイスを脅威から守るセキュリティ機能-RXセキュリティMCUのご紹介
 
201110 01 Polytech Center 1
201110 01 Polytech Center 1201110 01 Polytech Center 1
201110 01 Polytech Center 1
 
あなたもなれる 【セキュリティエンジニア】 EC-Council 情報セキュリティエンジニア育成トレーニングコース「 "セキュリティエンジニア" に! お...
あなたもなれる 【セキュリティエンジニア】 EC-Council 情報セキュリティエンジニア育成トレーニングコース「 "セキュリティエンジニア" に! お...あなたもなれる 【セキュリティエンジニア】 EC-Council 情報セキュリティエンジニア育成トレーニングコース「 "セキュリティエンジニア" に! お...
あなたもなれる 【セキュリティエンジニア】 EC-Council 情報セキュリティエンジニア育成トレーニングコース「 "セキュリティエンジニア" に! お...
 
Smart tag firststep
Smart tag firststepSmart tag firststep
Smart tag firststep
 
RTミドルウエア: OpenRTM-aist概要
RTミドルウエア: OpenRTM-aist概要 RTミドルウエア: OpenRTM-aist概要
RTミドルウエア: OpenRTM-aist概要
 

More from sounakano (8)

Stager
StagerStager
Stager
 
Stack pivot
Stack pivotStack pivot
Stack pivot
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolve
 
ret2plt
ret2pltret2plt
ret2plt
 
ret2libc
ret2libcret2libc
ret2libc
 
Return Oriented Programming
Return Oriented ProgrammingReturn Oriented Programming
Return Oriented Programming
 
Linux Security
Linux SecurityLinux Security
Linux Security
 
Stack Buffer OverFlow
Stack Buffer OverFlowStack Buffer OverFlow
Stack Buffer OverFlow
 

Recently uploaded

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

ARMアーキテクチャにおけるセキュリティ機構の紹介