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.2k
SEGVなんてもういいですから
OSC Tokyo Spring'16 Linux LT
Ren Kimura
February 27, 2016
Tweet
Share
More Decks by Ren Kimura
See All by Ren Kimura
Ideas for defeating Anti-Deep-Fakes
rkx1209
0
45
セキュリティベンチャーのリスク管理
rkx1209
0
88
ファジング+トリアージ技術を用いた脆弱性解析自動化
rkx1209
0
74
Introduction to Fuzzing
rkx1209
6
4.2k
ARM TrustZone エクスプロイト入門
rkx1209
7
8.1k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
5.1k
インサイドNintendo Switch
rkx1209
18
13k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.5k
Reverse Debugging with radare2
rkx1209
6
1.9k
Other Decks in Technology
See All in Technology
人間性を捧げる生成AI時代の技術選定
yo4raw
1
770
使えるデータ基盤を作る技術選定の秘訣 / selecting-the-right-data-technology
pei0804
9
1.5k
雑に疎通確認だけしたい...せや!CloudShell使ったろ!
alchemy1115
0
230
Amplifyとゼロからはじめた AIコーディング。失敗と気づき
mkdev10
1
150
Part1 GitHubってなんだろう?その1
tomokusaba
3
830
MCP でモノが動くとおもしろい/It is interesting when things move with MCP
bitkey
3
590
続・やっぱり余白が大切だった話
kakehashi
PRO
4
350
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
140
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
6
1.2k
水耕栽培に全部賭けろ
mutsumix
0
130
Coding Agentに値札を付けろ
watany
3
550
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
0
440
Featured
See All Featured
Speed Design
sergeychernyshev
29
940
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
KATA
mclloyd
29
14k
Visualization
eitanlees
146
16k
Six Lessons from altMBA
skipperchong
28
3.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Automating Front-end Workflow
addyosmani
1370
200k
Bash Introduction
62gerente
613
210k
Raft: Consensus for Rubyists
vanstee
137
6.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Optimizing for Happiness
mojombo
378
70k
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