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
SEGVなんてもういいですから
Search
Ren Kimura
February 27, 2016
Technology
1
2.1k
SEGVなんてもういいですから
OSC Tokyo Spring'16 Linux LT
Ren Kimura
February 27, 2016
Tweet
Share
More Decks by Ren Kimura
See All by Ren Kimura
Introduction to Fuzzing
rkx1209
6
3.9k
ARM TrustZone エクスプロイト入門
rkx1209
7
7.3k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
4.8k
インサイドNintendo Switch
rkx1209
18
12k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.3k
Reverse Debugging with radare2
rkx1209
6
1.7k
カーネルエクスプロイトによるシステム権限奪取
rkx1209
13
7.3k
$Hell on Sony Snatch the Kernel privilage from Browser
rkx1209
6
25k
Linuxカーネルクローンの作り方
rkx1209
3
900
Other Decks in Technology
See All in Technology
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
190
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
120
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
0
170
Microsoft Cloudで開発ライフサイクルを保護する
kkamegawa
0
140
インシデントレスポンスのライフサイクルを廻すポイントってなに / Pinpoints of Incidentresponse Lifecycle for Operation
sakaitakeshi
0
300
Terraformあれやこれ/terraform-this-and-that
emiki
3
180
AWS パートナー企業でテクニカルサポートに従事して2年経ったので思うところをまとめてみた
kazzpapa3
3
1.3k
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
320
0→1開発における技術選定において一番大切なこと
bicstone
1
320
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
190
PHP"オレ"カンファレンスの告知
ysknsid25
0
330
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
Featured
See All Featured
The Cult of Friendly URLs
andyhume
73
5.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
The Illustrated Children's Guide to Kubernetes
chrisshort
28
46k
GraphQLとの向き合い方2022年版
quramy
30
12k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
A Tale of Four Properties
chriscoyier
150
22k
Music & Morning Musume
bryan
40
5.6k
BBQ
matthewcrist
79
8.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Git: the NoSQL Database
bkeepers
PRO
421
63k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
Transcript
SEGVなんてもういいですから OSC2016 Tokyo/Spring Linuxライトニングトーク @RKX1209
自己紹介 • るくすと申します • twitter:@RKX1209 • 神戸大学 工学部 B3 •
普段はセキュリティ - マルウェア解析,sandbox... • OS, VMMなど低レイヤーなもの好き
突然ですがみなさんはこんなコードを書いた 事がありますか?
None
実行結果 Segmentation fault (コアダンプ) 当たり前だよなぁ
なんとか実行させたい... なんとか実行させたくない? → よし SEGVを殺そうぜ!
Linuxカーネル SEGVをなくすには? → Linuxカーネルを弄るしか無い → SEGVを許してくれる仕組みを作ろうぜ! → 優しいOSの完成 → 平和の訪れ
不正アドレスの処理 1. 不正なアドレスへのアクセスが発生するとCPUが トラップ実行 2. Linuxがトラップを受けdo_page_faultを実行する 3. SEGVが発生したアドレスから、正常なページフォ ルトなのか、不正なアクセスなのか判断 4.
正常ならhandle_mm_faultでページフォルトを処 理 5. 不正ならSEGV発生
SEGVを殺す方法 ✔ 不正なアドレスでも正常な処理に飛ぶようにする ✔ 正常だと思ったLinuxはそのままページフォルトと して処理 ✔ 不正なアドレスにmmapで物理アドレスを割り当て る ✔
ぶっちゃけ仮想アドレスがどんな値 でも物理アドレスを割り当れば 何とかなる → バディシステムに圧倒的感謝
None
SEGVを殺す時の注意 • mmapで物理アドレスを割り当てる時do_mmapを 使ってはいけない → do_page_fault実行時はプロセスのとあるスピ ンロックを既に使用している → do_mmapはこのスピンロックが解法されるまで 待つため、デッドロックが発生する
• なのでスピンロックを使用しない do_mmap_pgoffを使いましょう
None
実行結果 a やったね (スクショ撮り忘れましたorz)
ご清聴有難うございました 実際のパッチや詳細な説明は http://rkx1209.hatenablog.com/entry/2015/12/06/ 213912