Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
YN
Uploaded by
Yuichiro Naito
ODP, PPTX
571 views
Programming under capability mode
Programming guide under capability mode.
Software
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as ODP, PPTX
1
/ 18
2
/ 18
3
/ 18
4
/ 18
5
/ 18
6
/ 18
7
/ 18
8
/ 18
9
/ 18
10
/ 18
11
/ 18
12
/ 18
13
/ 18
14
/ 18
15
/ 18
16
/ 18
17
/ 18
18
/ 18
More Related Content
PDF
RとSQLiteで気軽にデータベース作成
by
弘毅 露崎
KEY
データベースのお話
by
Hidekazu Tanaka
ODP
Custom Package Building with Poudriere
by
Yuichiro Naito
PDF
カウチなやつら CouchDB in the room
by
Makoto Ohnami
PDF
Slide
by
Kazki Matsumoto
PPTX
Cache勉強会
by
Shinji Miyazato
PDF
R以外の研究ツール
by
弘毅 露崎
PDF
10分で分かるLinuxブロックレイヤ
by
Takashi Hoshino
RとSQLiteで気軽にデータベース作成
by
弘毅 露崎
データベースのお話
by
Hidekazu Tanaka
Custom Package Building with Poudriere
by
Yuichiro Naito
カウチなやつら CouchDB in the room
by
Makoto Ohnami
Slide
by
Kazki Matsumoto
Cache勉強会
by
Shinji Miyazato
R以外の研究ツール
by
弘毅 露崎
10分で分かるLinuxブロックレイヤ
by
Takashi Hoshino
What's hot
PDF
Elastic searchをrailsから使ってみた
by
Yoichi Toyota
PDF
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
by
Nobuto Murata
ODP
Mongo db勉強会
by
otmb
PDF
Firefox OS + Raspberry Pi
by
EnsekiTT
KEY
Unix1
by
Takaya Kotohata
PDF
Ext4 filesystem(1)
by
Yoshihiro Yunomae
PDF
仮想ネットワーク構築8枚slide
by
k009c1271
ODP
データベースキャッシュの競合
by
kesnke
PDF
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
by
Nobuto Murata
PPT
How to read linux kernel
by
Naoya Ito
PPTX
フレッシャーズのためのパケット解析入門
by
彰 村地
PDF
CouchDB JP & BigCouch
by
Yohei Sasaki
PPTX
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
PDF
分散データベース gun について調べた
by
keisunagawa
PDF
10分で分かるデータストレージ
by
Takashi Hoshino
PPTX
パケット解析ノススメ
by
彰 村地
Elastic searchをrailsから使ってみた
by
Yoichi Toyota
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
by
Nobuto Murata
Mongo db勉強会
by
otmb
Firefox OS + Raspberry Pi
by
EnsekiTT
Unix1
by
Takaya Kotohata
Ext4 filesystem(1)
by
Yoshihiro Yunomae
仮想ネットワーク構築8枚slide
by
k009c1271
データベースキャッシュの競合
by
kesnke
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
by
Nobuto Murata
How to read linux kernel
by
Naoya Ito
フレッシャーズのためのパケット解析入門
by
彰 村地
CouchDB JP & BigCouch
by
Yohei Sasaki
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
分散データベース gun について調べた
by
keisunagawa
10分で分かるデータストレージ
by
Takashi Hoshino
パケット解析ノススメ
by
彰 村地
Similar to Programming under capability mode
PDF
Trema day 1
by
ykuga
PDF
FreeBSD Capsicum
by
Yuichiro Naito
PDF
○○大学の本当にあった怖い話
by
idkqh7 Nishino
ODP
みんな大好き! Hello, World
by
Naohiro Aota
PDF
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
Scapy presentation Remake(訂正)
by
ashigirl ZareGoto
PDF
Scapy presentation
by
ashigirl ZareGoto
PDF
C-langage
by
Hiramatsu Ryosuke
PDF
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
PDF
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
by
Panda Yamaki
PDF
組み込みシステムのセキュリティ
by
FFRI, Inc.
PDF
V6read#3
by
magoroku Yamamoto
PDF
(F15)File Capability
by
Hiroki Ishikawa
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
PDF
Windowsのパケットモニタ作成
by
Shinichi Hirauchi
PDF
10GbE時代のネットワークI/O高速化
by
Takuya ASADA
PDF
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
PDF
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
by
Panda Yamaki
PDF
Fuzzing
by
ashigirl ZareGoto
PDF
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
by
Developers Summit
Trema day 1
by
ykuga
FreeBSD Capsicum
by
Yuichiro Naito
○○大学の本当にあった怖い話
by
idkqh7 Nishino
みんな大好き! Hello, World
by
Naohiro Aota
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
Scapy presentation Remake(訂正)
by
ashigirl ZareGoto
Scapy presentation
by
ashigirl ZareGoto
C-langage
by
Hiramatsu Ryosuke
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
by
Panda Yamaki
組み込みシステムのセキュリティ
by
FFRI, Inc.
V6read#3
by
magoroku Yamamoto
(F15)File Capability
by
Hiroki Ishikawa
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
Windowsのパケットモニタ作成
by
Shinichi Hirauchi
10GbE時代のネットワークI/O高速化
by
Takuya ASADA
【学習メモ#4th】12ステップで作る組込みOS自作入門
by
sandai
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
by
Panda Yamaki
Fuzzing
by
ashigirl ZareGoto
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
by
Developers Summit
More from Yuichiro Naito
PDF
Install FreeBSD 14.3-RELEASE to HP Envy x360
by
Yuichiro Naito
PDF
Bhyve Management Daemon: Wake on LAN support
by
Yuichiro Naito
PDF
Development of Bhyve Management Daemon on FreeBSD
by
Yuichiro Naito
PDF
Bhyve Management Daemon Version 3.0 on FreeBSD
by
Yuichiro Naito
PDF
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
by
Yuichiro Naito
PDF
Bmd
by
Yuichiro Naito
PDF
WireGurad in the FreeBSD kernel
by
Yuichiro Naito
PDF
Xrdp
by
Yuichiro Naito
PDF
Bhyve debug-server
by
Yuichiro Naito
PDF
Tramp mode
by
Yuichiro Naito
PDF
HandBrake with QSV
by
Yuichiro Naito
PDF
FreeBSD 12.1 RELESE
by
Yuichiro Naito
PPTX
Modern fonts
by
Yuichiro Naito
ODP
FreeBSD 12.0 RELEASE!
by
Yuichiro Naito
ODP
Psql & proctitle
by
Yuichiro Naito
ODP
Iocage
by
Yuichiro Naito
ODP
FreeBSD 11.2 RELEASE!
by
Yuichiro Naito
ODP
How to use PTI & IBRS patch
by
Yuichiro Naito
ODP
FreeBSD Desktop
by
Yuichiro Naito
ODP
FreeBSD Ports Flavors
by
Yuichiro Naito
Install FreeBSD 14.3-RELEASE to HP Envy x360
by
Yuichiro Naito
Bhyve Management Daemon: Wake on LAN support
by
Yuichiro Naito
Development of Bhyve Management Daemon on FreeBSD
by
Yuichiro Naito
Bhyve Management Daemon Version 3.0 on FreeBSD
by
Yuichiro Naito
Reporting AsiaBSDCon 2024 in Taipei for FreeBSD NetBSD
by
Yuichiro Naito
Bmd
by
Yuichiro Naito
WireGurad in the FreeBSD kernel
by
Yuichiro Naito
Xrdp
by
Yuichiro Naito
Bhyve debug-server
by
Yuichiro Naito
Tramp mode
by
Yuichiro Naito
HandBrake with QSV
by
Yuichiro Naito
FreeBSD 12.1 RELESE
by
Yuichiro Naito
Modern fonts
by
Yuichiro Naito
FreeBSD 12.0 RELEASE!
by
Yuichiro Naito
Psql & proctitle
by
Yuichiro Naito
Iocage
by
Yuichiro Naito
FreeBSD 11.2 RELEASE!
by
Yuichiro Naito
How to use PTI & IBRS patch
by
Yuichiro Naito
FreeBSD Desktop
by
Yuichiro Naito
FreeBSD Ports Flavors
by
Yuichiro Naito
Programming under capability mode
1.
ケーパビリティモードでのプログラミング 2016年7月15日 (株)創夢 内藤 祐一郎
2.
ケーパビリティモード ● FreeBSD 9.0-R
から された しいモード。搭載 新 ● cap_enter(2) を び した の された 。呼 出 後 制限 環境 ● たなファイルディスクリプタを できなくなる。新 取得 ● shmget(2) などのリソース ができなくなる。取得 ● ケーパビィティモードは プロセスにも される。子 継承 ● cap_rights_limit(2) により かく細 (read, write, ...) できる制御 。
3.
メリット ● selinux と
なりユーザの が 。異 設定 不要 ● root に setuid されたプログラムなど、 きすぎる を つプロセスが に を とせる。大 権限 持 自発的 権限 落 ● えば例 ping, traceroute はパケット のために取得 root を権限 つため、 が が つかった に したパケットを持 万 一脆弱性 見 場合 細工 させるなどして の になりやすい。受信 攻撃 標的 ● ケーパビリティモードで していれば、 が されてもア動作 万 一攻撃 クセスできるリソースがないため を められる。安全性 高 ● FreeBSD-11 から ping, traceroute はケーパビリティモードで する。動作
4.
なプログラムの れ基本的 流 1.
必要なファイルディスクリプタを取得する。 2. cap_enter(2) を実行する。 3. 必要があればさらに cap_rights_limit(2) で制限を加える。 4. アプリケーションとしての処理を実行する。 5. プロセス終了。
5.
されるシステムコール制限 ● chdir, stat,
open, rename, mkdir, unlink など にパス を るものは えない。引数 名 取 使 ● connect, bind, sendto に引数 struct sockaddr * をとり 、 を するも送信先 受信元 指定 の ● execve, wait, waitpid, wait3/4/6 ● shm_open, shmget, msgget ● すると使用 ECAPMODE の errno が る。返
6.
を けないシステムコール影響 受 ●
read, write, close, sendfile, select, poll, mmap など のファイルディスクリプタを するもの既存 使用 ● pipe, socket, accept, listen, kqueue など のプロセスに するだけもの自分 影響 ● getpid, getuid, time, gettimeofday など なる のもの単 情報取得 ● fork
7.
より かい を
える細 制限 加 ● cap_rights_limit(2) によりファイルディスクリプタごとに細か く制限することが可能。 ➔ READ ➔ WRITE ➔ IOCTL ➔ FSTAT ➔ FUNLINK ➔ MMAP, MMAP_R, MMAP_W, MMAP_RW など ● 概ねファイルディスクリプタを操作するシステムコール毎に権限 を設定できる。
8.
なファイルアクセス動的 ● プログラム起動時に必要なリソースが全て判明しない場合はどう するのか? ➔ アクセスする
のディレクトリのファイルディスクリプタを してお予定 取得 き、 openat(2) でディレクトリ のファイルを く。以下 開 ➔ または プロセスとの別 通信 (UNIX DOMAIN SOCKET) でオープンした ファイルディスクリプタを け す。受 渡
9.
となるシステムコール代替 ● cap_enter(2) にディレクトリのファイルディスクリプタを前 open("
ディレクトリ名 ", O_RDONLY|O_DIRECTORY) で取得 しておく。 ● openat, renameat, mkdirat など ~ at を する。系 使用 ~ at は となるディレクトリのファイルディスクリプタ系 基準 から パスで する。相対 指定 ● パスに相対 “ ..” を れて ディレクトリに がる はカーネル入 親 上 操作 に される。拒否 ● fchdir, fstat などファイルディスクリプタを にとるものを引数 する。使用
10.
プログラムの れ ファイルアクセス流
( ) 1. base=open(“/var/data”,O_RDONLY|O_DIRECTORY); 2. cap_enter(); 3. fd=openat(base, “sample.txt”, O_RDWR); 4. read(fd, buf, size); ... 5. close(fd);
11.
ネットワークの利用( UDP ) ●
cap_enter() の前にソケットを作成し、予め送信先や受信元を設 定しておく。 ➔ sendto(2), bind(2) は えなくなる。使 ● 送信先は connect(2) で指定する。 ● 受信元は bind(2) で指定する。
12.
プログラムの れ流 (
UDP 送信) 1. sock=socket(PF_UNSPEC, SOCK_DGRAM, 0); 2. < sockaddr に接続先を入れる > 3. connect(sock, &sockaddr, size); 4. cap_enter(); 5. send(sock ,data, len); 6. recv(sock, buf, buf_len); 7. … 8. close(sock);
13.
プログラムの れ流 (
UDP 受信) 1. sock=socket(PF_UNSPEC, SOCK_DGRAM, 0); 2. < sockaddr に受信元を入れる > 3. bind(sock, &sockaddr, size); 4. cap_enter(); 5. recv(sock ,buf, buf_len); 6. send(sock, data, size); 7. … 8. close(sock);
14.
ネットワークの利用( TCP ) ●
cap_enter() の にソケットを し前 作成 bind(2) または connect(2) しておく。 ● bind(2) のソケットに済 accept はできるため は 。受信 可能 ● connect(2) はたとえ じ であっても できないため、同 接続先 使用 タイムアウトなどで することができない。再接続 ● クライアントプログラムならば、プロセスを する。再起動 ● さもなければ unix domain socket を して、経由 プロセスが したソケットを け してもらう。別 接続 受 渡
15.
ソケット け しの受
渡 例 親プロセス 子プロセス socketpair(PF_UNIX) fork() send(“ ”ホスト名:ポート番号 ) connect() sendmsg(ソケット) recv() recvmsg() cap_enter()
16.
プロセス生成 ● fork, fexecve
が えるため、使 ファイルディスクリプタさえあれば イメージを 。実行 起動可能 しかし、ケーパビリティモードは プロセスにも子 されるため、継承 /libexec/ld-elf.so.1 の み みに読 込 してしまう。失敗 スタティックリンクされたプログラムなら できる。起動 ● wait ができないため、 ち わせる がない。待 合 手段 ● 11-R では pdfork(2), pdwait(2) が される だったは実装 予定 ず。。。
17.
その他 ● libc を
めたライブラリについては が い。含 制限 多 ● fopen() ではなく fdopen() を うなど、プログラム での使 側 対処 が 。必要 ● getpwent() など で にファイル内部 暗黙 (/etc/passwd など ) を するものは えない。参照 使 ● casperd を して なリソースにアクセスするようになる経由 必要 み。見込
18.
に最後 root に setuid
するプログラムを るときには作 ケーパビリティモードを すると使用 より なプログラムを ることができます。安全 作
Download