$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linux Mode 2 Seccomp Tutorial
Search
bachi/yuzuhara
December 12, 2013
Technology
1
7.1k
Linux Mode 2 Seccomp Tutorial
The presentation introduces Linux mode 2 secccomp.
bachi/yuzuhara
December 12, 2013
Tweet
Share
More Decks by bachi/yuzuhara
See All by bachi/yuzuhara
セキュリティ・キャンプ2019 Z2. ELFマルウェア検知エンジンの試作 成果報告
yuzuhara
1
870
wrapup_z_2018.pdf
yuzuhara
0
400
セキュリティ・キャンプ2017 集中Zトラック成果報告
yuzuhara
0
1.4k
How to Survey for Research (system/w Security Fields)
yuzuhara
0
380
capsicum(論文輪講)
yuzuhara
0
440
Other Decks in Technology
See All in Technology
学習データって増やせばいいんですか?
ftakahashi
2
340
グレートファイアウォールを自宅に建てよう
ctes091x
0
150
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
130
5分で知るMicrosoft Ignite
taiponrock
PRO
0
370
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
560
SREには開発組織全体で向き合う
koh_naga
0
330
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
0
1.4k
チーリンについて
hirotomotaguchi
6
2k
乗りこなせAI駆動開発の波
eltociear
1
1.1k
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
210
Databricks向けJupyter Kernelでデータサイエンティストの開発環境をAI-Readyにする / Data+AI World Tour Tokyo After Party
genda
1
120
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
140
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Language of Interfaces
destraynor
162
25k
KATA
mclloyd
PRO
33
15k
Side Projects
sachag
455
43k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
[SF Ruby Conf 2025] Rails X
palkan
0
520
Optimising Largest Contentful Paint
csswizardry
37
3.5k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Code Reviewing Like a Champion
maltzj
527
40k
A better future with KSS
kneath
240
18k
Transcript
H25.08.11 ു ༸ี Linux Seccomp Tutorial ηΩϡϦςΟΩϟϯϓ2013 γεςϜιϑτΣΞθϛิॿࢿྉ 1 138݄12݄༵
Seccompͱ • ਖ਼ࣜʹSecure computing mode ͱ͍͏ɺϓϩηεͷα ϯυϘοΫεԽΛࢧԉ͢ΔΧʔωϧͷΈ • ϓϩηε͕ࣗൃతʹγεςϜίʔϧͷൃߦݖݶΛ์غ ͢Δ
• Ͳ͏͍͏ͱ͖ʹ͏ͷ͔ʁ • ͜ͷϓϩηε͜Ε͔Βո͍͠σʔλΛѻ͍·͢Αɺͱ͍ ͏ͱ͖ʹઃఆ͢Δ • ͦͷޙɺϓϩηε͕ൃߦͰ͖ΔγεςϜίʔϧ͕ஶ੍͘͠ ݶ͞ΕΔͨΊɺϓϩηε͕ͬऔΒΕͯ΄ͱΜͲԿͰ ͖ͳ͘ͳΔ 2 138݄12݄༵
Mode 1 Seccomp • Linux kernel 2.6.12͔ΒϚʔδ͞ΕͨɺγεςϜίʔϧͷ ϑΟϧλ • ϓϩηε͕prctl_set_seccomp()ΛݺͿͱɺ͔ͦ͜ΒҎԼͷγ
εςϜίʔϧ͔͠ൃߦͰ͖ͳ͘ͳΔ • read,() write(), exit(), sigreturn() • fork()ͱ͔execve()͕͑ͳ͍→߈ܸ͞Εͨͱ͖ɺ΄ͱΜͲԿ ग़དྷͳ͍ʂ process secure computing mode fork() read() 3 138݄12݄༵
Mode 2 Seccomp • Linux Kernel 3.5͔ΒϚʔδ͞ΕͨɺMode 2 seccompΛஔ ͖͑ΔΈ
• Mode 1ͱҧ͍ɺҙͷγεςϜίʔϧΛڐՄ͢Δ͜ͱ ͕Ͱ͖Δ • Berkley Packet FilterΛϕʔεʹɺߴʹγεςϜίʔϧ ΛϑΟϧλϦϯά͢Δ͜ͱ͕ग़དྷΔ • ͜ͷͨΊɺseccomp-bpfͱݺΕΔ͜ͱ͕ଟ͍ • ͪͳΈʹFedoraͰsyscall filterͱݺͿ • seccomp 2ͱ͔seccomp mode 2ͱ͔දه༳Ε͕ଟ͍ ( ꒪⌓꒪) 4 138݄12݄༵
Berkley Packet Filter(bpf)Λϕʔεʹɾɾɾ • bpfͷྺ࢙Έলུ • ಛ • ύέοτΛޮΑ͘ϑΟϧλϦϯά͢ΔͨΊɺϑΟϧλϦ ϯάϧʔϧʹಛԽͨ͠ॲཧܥ͕ಈ͍ͯΔʢVMͱ͍͍͍ͬͯ
Ϩϕϧʣ • ڪΔ͖ɺJITΛαϙʔτ͍ͯ͠ΔʢΧʔωϧͰʂʣ • ͜ͷͨΊɺ͔ͳΓෳࡶ mode 2 seccomp͜ͷbpfΛͬͯγεςϜί ʔϧΛϑΟϧλϦϯά͍ͯ͠ΔͨΊɺbpfͷ ͕ࣝແ͍ͱ͑ͳ͍ 5 138݄12݄༵
Mode 2 seccompͷԠ༻ྫ • Google Chromium • Ubuntu 12.04͔Βར༻ՄೳʢKernel3.2͕ͩɺbackport͞Ε ͍ͯΔʣ
• vsftpd3.0.0͔ΒMode 2 seccompΛ͍ͬͯΔΒ͍͠ ※ͲͪΒϓϩηεΛαϯυϘοΫεԽ͢ΔͨΊɺ ݩʑׂϢʔβʔʹΑͬͯϓϩηεׂ͞Ε͍ͯΔ 6 138݄12݄༵
ϓϩηεׂ ʴ mode 2 seccomp = ࠷ڧʂ 7 138݄12݄༵
Using simple seccomp filters • ͔͠͠ɺݱঢ়͔ͳΓ͍͜ͳ͢ͷ͕͍͠ • bpfΛڧҾʹୟ͍͍ͯΔͨΊ • ґଘ͕ؔෳࡶɺݩʑbpf͜Μͳ༻్ఆͯ͠ͳ͍
• ԼهURLΛࢀরɻʢશવsimple͡Όͳ͍ɾɾʣ http://outflux.net/teach-seccomp/ 8 138݄12݄༵
libseccomp Tutorial 9 138݄12݄༵
αϯυϘοΫεԽͷ४උ • ո͍͠σʔλεΫϦϓτΛ”࣮ߦ”ͨ͠Γ”ղऍ”͢Δ ෦͕Ұ൪੬ऑ • σʔλΛόΠτྻͱͯ͠ಡΈऔΔ͚ͩͳΒͦΜͳʹةݥ͡ Όͳ͍ • ͜ͷ෦Λ্ख͘αϯυϘοΫεԽ͢ΔΑ͏ʹϓϩάϥϜ Λઃܭ
10 138݄12݄༵
Main mission: Securing mruby • mrubyΛηΩϡΞʹ࣮ߦͰ͖ΔϑϨʔϜϫʔΫΛ࡞ͬͯ ΈΑ͏ • ͜ͷϑϨʔϜϫʔΫΛͬͯɺ”۠ըԽ”ͨ͠΄͏͕ྑ͞ ͦ͏ͳΦϦδφϧΞϓϦέʔγϣϯΛઃܭɺ࣮͠Α͏
Master process mruby process IPC Sandboxing by Mode 2 seccomp mruby code(string) result(char[]) 11 138݄12݄༵
ϓϩηεׂ • σʔλͷΓऔΓpipeΛ͏ • mruby࣮ߦ෦Λfork()͢Δ • ͜ΕͰͻͱ·ͣɺmruby͕ͯ͠େৎ✌('ω'✌ )ࡾ ✌('ω')✌ࡾ( ✌'ω')✌
• ࢠϓϩηε͕ͨ͠Γམͪͯɺੜ͖Δ 12 138݄12݄༵
αϯυϘοΫεԽ • fork() ͨ͠ޙʹɺࣗࣗΛαϯυϘοΫεԽ͢Δ • seccomp_init(SCMP_ACT_KILL);ͰॳظԽ • seccomp_rule_add();ͰڐՄ͢ΔγεςϜίʔϧΛࢦఆ͍ͯ͠ ͘ •
seccomp_load();Ͱ४උྃ • seccomp_release();ͰෆཁͳݖݶΛશ෦ख์͢→αϯυϘο ΫεԽʂ 13 138݄12݄༵
sample • seccamp2013_sandbox/samples/libseccomp_base.c • γεςϜίʔϧ͕ݺͳ͘ͳΔྫ • seccamp2013_sandbox/ samples/ libseccomp_sample.c •
͍͔ͭ͘ͷγεςϜίʔϧΛڐՄͨ͠ྫ • read, writefile descriptorΛࢦఆͯ͠ڐՄ͢Δ ͜ͱՄೳ 14 138݄12݄༵
͓ΘΓ • αϯυϘοΫεপʹΑ͏ͦ͜ʂ 15 138݄12݄༵