SecurePot: システムコールフックを
利用した安全なソフトウェア実行系
大山恵弘
(さきがけ研究21)
加藤和彦
(筑波大学 電子・情報工学系
さきがけ研究21)
2001/09/19
日本ソフトウェア科学会第18回大会
1
背景

悪意あるコードの氾濫

Code Red, Sircam, Anna Kournikova

コードの安全な実行への要請

一つの有効な対策:
sandboxシステムの使用
2001/09/19
日本ソフトウェア科学会第18回大会
2
Sandboxシステム

アプリケーションを「封じ込めて」実行
アプリケーションの挙動を監視
 許された操作のみを実行


例:

Java
• 仮想機械を定義、実装

Janus, MAPbox, ASL
• 発行されるシステムコールを監視
2001/09/19
日本ソフトウェア科学会第18回大会
3
本研究の目的

システムコール監視型のsandboxシステム
の使い勝手の向上

セキュリティポリシーの記述を簡単化
2001/09/19
日本ソフトウェア科学会第18回大会
4
発表のあらまし
既存システムの問題
 SecurePotの設計
 SecurePotの実装
 関連研究
 今後の課題

2001/09/19
日本ソフトウェア科学会第18回大会
5
システムコールフックを利用した
sandboxシステム
…
…
…
application
システム
コール
セキュリティポリシー
sandbox
OS
2001/09/19
実現方式
• ユーザレベル
• Kernel module
• Kernel改造
日本ソフトウェア科学会第18回大会
6
既存システムの問題

ポリシー記述が面倒

試行錯誤しつつ繰り返しポリシーを書き換える
ことが必要

ポリシーの作成、閲覧、編集が直感的でない
2001/09/19
日本ソフトウェア科学会第18回大会
7
問題1:繰り返されるポリシーの
書き換え
ポリシー作成
実行
ポリシー違反
強制終了
2001/09/19
ポリシーを緩く
書き換え
日本ソフトウェア科学会第18回大会
8
問題2: 直感的でない
ポリシー記述

例: Janusのポリシーファイルの抜粋
basic
putenv display
net allow connect display
path super-deny read,write,exec */.forward
path allow read /dev/zero /dev/null
↑
何をどうしたいのか???
2001/09/19
日本ソフトウェア科学会第18回大会
9
SecurePotの設計思想

ポリシーの記述を極力簡単に!

実行時の問い合わせ
+ その答をポリシーファイルに反映

ポリシー作成用のGUIの導入
2001/09/19
日本ソフトウェア科学会第18回大会
10
SecurePotの構成
SecureFurnace
X
syscalls
SecurePot
OS
2001/09/19
configure
X
application
feedback
日本ソフトウェア科学会第18回大会
generate
…
policy file
…
11
SecurePotの使用例
% securepot tar.plc tar xvf foo.tar
x foo.txt, 4 bytes, 1 tape blocks
…
…
ポリシーファイル
コマンド列
SecurePot = ユーザ権限で走る一般のプログラム
2001/09/19
日本ソフトウェア科学会第18回大会
12
セキュリティポリシー

制御対象
システムコール
 読み書きファイルパス
 通信相手のIPアドレスとポート番号


制御の選択肢
deny: 不許可
 ignore, allow-and-print: 許可
 ask: 問い合わせ

2001/09/19
日本ソフトウェア科学会第18回大会
13
セキュリティポリシーの例
•ファイル読み書きと通信の制限
…
deny path all
ignore path r
ignore path r
ignore path r
ignore path r
ignore path r
/dev/zero
/usr/lib/locale/ja/ja.so.1
/usr/lib/locale/ja/methods_ja.so.1
/usr/lib/locale/ja/LC_MESSAGES/…
/usr/lib/locale/ja/LC_TIME/…
deny sock all
…
2001/09/19
日本ソフトウェア科学会第18回大会
14
2001/09/19
日本ソフトウェア科学会第18回大会
15
Incrementalなポリシー作成の
概要
実行前
•安全側に振ったポリシーを記述
•怪しい操作の実行前に問い合わせるよう指示
実行中
•問い合わせ + 答の入力
•問い合わせ後すぐポリシーを更新
実行後
•更新されたポリシーをダンプ
•次回の実行ではダンプされたファイルを使用
2001/09/19
日本ソフトウェア科学会第18回大会
16
Firewallソフトウェアに学ぶ


初期設定: 全部(or大半)の通信を禁止
通信が試みられる
→ その通信を許可するかどうか問い合わせ
2001/09/19
日本ソフトウェア科学会第18回大会
17
実行前
ポリシーを安全側に振る
 askの使用

# システムコール
ask all
ignore open, read, close
# パス
ask path all
ignore path r /dev/zero, /dev/null
# 通信
ask sock all
2001/09/19
日本ソフトウェア科学会第18回大会
18
実行中

問い合わせに答える
open(“/etc/hosts”, O_RDONLY) called.
Continue?
1. Yes
2. No
3. Yes. And remove this hook
…
8. Yes. And ignore this hook when the arg
is the same
command? >
最初は多数のfalse alarm → 徐々に減少
2001/09/19
日本ソフトウェア科学会第18回大会
19
実行後

問い合わせの答を反映したポリシーを
ファイルにダンプ
…
Policy updated.
Update echo.plc?
(y/n) > y
Updated.
%
2001/09/19
日本ソフトウェア科学会第18回大会
20
更新されたポリシーファイル
…
# パス
ask path all
ignore path r /dev/zero, /dev/null
ignore path r /etc/hosts
…
•次回の実行で使用可
•広く配布することも可
2001/09/19
日本ソフトウェア科学会第18回大会
21
2001/09/19
日本ソフトウェア科学会第18回大会
22
SecureFurnace:ポリシーファイル
作成、閲覧、編集のためのGUI

メニュー、テキストボックス、チェックボックスの操作
を通じてポリシー作成

例: 「ファイル削除不可」ボックスをチェック
deny unlink
という行を生成


cf. visual programming
現状: どういうGUIがよいかプロトタイプ上で
模作中
2001/09/19
日本ソフトウェア科学会第18回大会
23
SecureFurnaceプロトタイプ

CGI+form
2001/09/19
日本ソフトウェア科学会第18回大会
24
2001/09/19
日本ソフトウェア科学会第18回大会
25
SecurePotの実装方式

プロセスを生成
子プロセス: アプリケーションを実行
 親プロセス: 子プロセスを監視


Solarisの/proc filesystemを利用

/proc以下の子プロセス用ファイルを読み書き
⇔ 子プロセスの状態取得、実行制御
2001/09/19
日本ソフトウェア科学会第18回大会
26
現在の実行時オーバヘッド

1MBのファイル一個のコピー


4%
gcc-3.0.tarの展開

41%
類似システム: いずれも数%程度
2001/09/19
日本ソフトウェア科学会第18回大会
27
他の機能:
ライブラリ関数の実行制御

例: fprintfの実行を許可/禁止

より粗粒度の制御が可能に

関数が「信頼できる」場合に有効

実装: ブレークポイントの挿入
2001/09/19
日本ソフトウェア科学会第18回大会
28
関連研究(1)

Sandboxシステム



Janus [Goldberg et al. ’96], MAPbox [Acharya
et al. ’00], ASL [Sekar et al. ’99], SubDomain
[Cowan et al. ’00]
ポリシーをincrementalに作る機構なし
FMAC tools [Prevelakis ’01]


悪意がない入力でのアプリケーションの挙動を記録。
記録をもとにポリシー作成
プログラムの実行時の挙動を手がかりにポリシーを
作る点が共通
2001/09/19
日本ソフトウェア科学会第18回大会
29
関連研究(2)

Javaのpermission機構
宣言的ポリシー
 policytool: GUIベースのポリシー編集ツール


システムコールラッパ
GSW [Fraser et al. ’99],
SysGuard [榮楽ら ’01]
 操作的なポリシー記述
 融通 ⇔ 記述量 のトレードオフ

2001/09/19
日本ソフトウェア科学会第18回大会
30
今後の課題

SecureFurnace非プロトタイプ版の実装

問い合わせの仕方を洗練

使い勝手をさらに向上させる機構の提案
2001/09/19
日本ソフトウェア科学会第18回大会
31
まとめ

Sandboxシステムを使いやすくする機構



インクリメンタルなポリシー作成の機構を提案
GUIによるポリシー作成支援の構想を提示
SecurePot HPでソースを公開中
2001/09/19
日本ソフトウェア科学会第18回大会
32
ダウンロード

slide (PowerPoint)