Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
aslr.pdf
Satoru Takeuchi
PRO
January 24, 2022
Technology
0
19
aslr.pdf
Satoru Takeuchi
PRO
January 24, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeCon EU 2022 Ceph Intro & Rook Deep Dive
sat
PRO
0
10
YAMLを書くだけで構築できる分散ストレージ
sat
PRO
0
220
実践オブザーバビリティ
sat
PRO
2
520
Linuxのプロセススケジューラの負荷分散処理
sat
PRO
0
51
Linuxのプロセススケジューラの歴史 v0.01~v2.4.x
sat
PRO
0
60
Linuxのプロセススケジューラの歴史 v2.6.0~v2.6.22
sat
PRO
0
35
Linuxのプロセススケジューラの歴史 v2.6.23~v4.18
sat
PRO
0
61
わたしの愛する本たち
sat
PRO
1
300
実行ファイル
sat
PRO
0
34
Other Decks in Technology
See All in Technology
アルプの 認証/認可分離戦略と手法
ma2k8
PRO
2
360
1,000万人以上が利用する「家族アルバム みてね」のSRE組織は4年間でどのように作られてきたのか/SRE NEXT 2022
isaoshimizu
6
3.4k
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
oracle4engineer
PRO
0
140
LIFF Deep Dive 2022
line_developers
PRO
1
770
SRE_チーム立ち上げから1年_気づいたら_SRE_っぽくない仕事まで貢献しちゃってる説
bitkey
PRO
0
2.6k
Stripe Search APIを利用した、LINEとStripeの顧客情報連携/line-dc-202205
stripehideokamoto
0
130
我々はなぜテストをするのか?
kawaguti
PRO
0
590
OSS ことはじめ
hsbt
3
590
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
yumihiki
0
110
SRENEXT2022 組織にSREを実装していくまでの道のり
marnie0301
1
730
[AKIBA.AWS] それ、t2.micro選んで大丈夫?
tsukuboshi
0
380
一人から始めるプロダクトSRE / How to start SRE in a product team, all by yourself
vtryo
4
3k
Featured
See All Featured
The Invisible Customer
myddelton
110
11k
A designer walks into a library…
pauljervisheath
196
16k
The World Runs on Bad Software
bkeepers
PRO
56
5.2k
GitHub's CSS Performance
jonrohan
1020
410k
Faster Mobile Websites
deanohume
294
28k
Clear Off the Table
cherdarchuk
79
280k
Making the Leap to Tech Lead
cromwellryan
113
6.9k
Rails Girls Zürich Keynote
gr2m
86
12k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
920
A better future with KSS
kneath
225
15k
Unsuck your backbone
ammeep
659
55k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
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