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