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
© Copyright 2024 ExpyDoc