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
aslr.pdf
Search
Satoru Takeuchi
PRO
January 24, 2022
Technology
0
93
aslr.pdf
Satoru Takeuchi
PRO
January 24, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
250
俺とキャンプ2
sat
PRO
1
97
俺とキャンプ3
sat
PRO
0
83
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
30
RAIDの実現方法
sat
PRO
2
58
Linux環境のCPU上で10ミリ秒間に起こること
sat
PRO
3
110
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
54
ボリュームマネージャLVM
sat
PRO
2
88
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
2k
Other Decks in Technology
See All in Technology
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
170
よく聞くけど使ったことないソフトウェアNo.1 KafkaとSnowflake
foursue
4
360
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
210
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
380
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
5
520
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
210
JSON攻略法.pdf
miyakemito
8
5k
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.3k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
170
LayerXにおけるLLMプロダクト開発の今までとこれから
layerx
PRO
1
240
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
42k
KATA
mclloyd
15
12k
Teambox: Starting and Learning
jrom
128
8.4k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Statistics for Hackers
jakevdp
789
220k
Rails Girls Zürich Keynote
gr2m
91
13k
Making Projects Easy
brettharned
108
5.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
Producing Creativity
orderedlist
PRO
337
39k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
Transcript
Address Space Location Randomization (ASLR) Jan. 8th, 2022 Satoru Takeuchi
twitter: satoru_takeuchi, EnSatoru 1
前回までのあらすじ • Executable and Linking Format(ELF)というフォーマット • 実行ファイルのコードやデータはメモリ上にマップされる • どこのオフセットのデータをどこにマップするるか実行ファイルに書いてる
2 test(実行ファイル) メモリ コード データ コード データ マップ
そうでないこともある • 例: Ubuntu20.04の/bin/sleepコマンド • 演習 ◦ sleepコマンドのreadelf -Sを見てみる ◦
“sleep infinity”実行中のメモリマップを /proc/<pid>/mapsで見てみる 3
そうでないこともある • 例: Ubuntu20.04の/bin/sleepコマンド • 演習 ◦ sleepコマンドのreadelf -Sを見てみる ◦
“sleep infinity”実行中のメモリマップを /proc/<pid>/mapsで見てみる • 違い ◦ 実行ファイルのセクションに書いてあるマップ先アドレスと実際の値が違う 4
演習 • “sleep infinity”をもう一度実行した後にメモリマップを確認 5
演習 • “sleep infinity”をもう一度実行した後にメモリマップを確認 • 結果 ◦ さっきとアドレスが違う! 6
理由 • sleepコマンドは実行するたびにセクションのマップ先アドレスがランダムに変わる ◦ これがAddress Space Location Randomization(ASLR) ◦ ASLRが機能するように実行ファイルが
Position Independent Executable(PIE)になっている • 目的 ◦ 特定アドレスのコードを実行するようなセキュリティ攻撃を避ける • どんなプログラムがPIE? ◦ Ubuntuだと昔はsshなどの一部重要プログラムだけだった ◦ 17.04以降はすべて(例外があるかも?よく知らない) 7