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
4k
ARM TrustZone エクスプロイト入門
rkx1209
7
7.7k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
4.9k
インサイドNintendo Switch
rkx1209
18
12k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.4k
Reverse Debugging with radare2
rkx1209
6
1.8k
カーネルエクスプロイトによるシステム権限奪取
rkx1209
13
7.5k
$Hell on Sony Snatch the Kernel privilage from Browser
rkx1209
6
25k
Linuxカーネルクローンの作り方
rkx1209
3
920
Other Decks in Technology
See All in Technology
React Aria で実現する次世代のアクセシビリティ
ryo_manba
4
1.2k
App Router を実プロダクトで採用して見えてきた勘所をちょっとだけ紹介
marokanatani
1
930
より快適なエラーログ監視を目指して
leveragestech
4
1.4k
AI活用したくてもできなかった不動産SaaSの今とこれから
nealle
0
330
QAに対する超個人的な解釈 / Personal Take on QA
toma_sm
1
120
たった1人からはじめる【Agile Community of Practice】~ソース原理とFearless Changeを添えて~
ktc_corporate_it
1
480
Fediverse Discovery Providers overview
andypiper
0
170
LLVM/ASMを使った有限体の高速実装
herumi
0
120
不動産売買取引におけるAIの可能性とプロダクトでのAI活用
zabio3
0
270
Segment Anything Model 2
tenten0727
3
700
サーバレスでモバイルアプリ開発! NTTコム「ビジネスdアプリ」のアーキテクチャ / The architecture of business d app
nttcom
12
240
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
It's Worth the Effort
3n
182
27k
Being A Developer After 40
akosma
84
590k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
Typedesign – Prime Four
hannesfritz
39
2.3k
How GitHub Uses GitHub to Build GitHub
holman
472
290k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
48k
Into the Great Unknown - MozCon
thekraken
29
1.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
48
2.8k
[RailsConf 2023] Rails as a piece of cake
palkan
48
4.6k
Designing with Data
zakiwarfel
98
5k
Rails Girls Zürich Keynote
gr2m
93
13k
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