Upload
hiroki-ishikawa
View
878
Download
0
Embed Size (px)
Citation preview
$ whoamiishikawa84g
SELinux の話じゃないです
脆弱は突きません
root もとりません
リリースノートをみているとこんなのが
不要な SetUID を剥奪してやろうぜ計画
SetUID が必要な部分を残し SetUID をとる
# ls -l /bin/ping(今まで) -rwsr-xr-x. 1 root root /bin/ping(F15から) -rwxr-xr-x. 1 root root /bin/ping
SetUID
プログラム実行時に所有者権限で実行させる仕組み
そもそもなぜ SetUID が必要なのか
何かを実行するための特権が欲しいから 一般ユーザで出来なければ root になるしかない
ならずに済むように SetUID を利用
SetUIDを利用した権限昇格デモは前回実施済み
SystemTap の例
大き過ぎる特権をどうするか
分割
POSIX Capability
大き過ぎる権限を小分けにして必要な分だけ許可する
特権 : 誰が 何を出来る
ゕクセス制御: 誰が 何に対して 何を出来る
分割された特権の一例
RAWソケットを扱う
1024番以下のポートを利用する
Syslog を利用する
システムを再起動する。reboot()
NICE値を変更する
DAC(任意ゕクセス制御)を無視してフゔイルにゕクセス
など
最新カーネルでは 35 分割
このあたり参照:/usr/include/linux/capability.h
File Capability
フゔイルの XATTR に Capability を含めたもの
プログラム実行時に与えた特権を与える仕組み
XATTR(拡張属性領域)
SELinux , POSIX ACL などをぶち込む領域
-rwxr-xr-x. -rwxr-xr-x+ -rwxr-xr-x@
# getcap /bin/ping/bin/ping = cap_net_raw+ep
↑SELinux ↑POSIX ACL ↑Mac OS用
基本的にユーザが気にする機能ではないが特定の特権だけを与えたい場合には有用
今後 cgroups との連携があるという噂
伝えないと気付かれそうだったのでつい