32
2001/09/19 日日日日日日日日日日日日 日日日 18 1 SecurePot: 日日日日日日日日日日日日日日 日日日日日日日日日日日日日 日日日日 日日日日日日日 日 日 (21) 日日日日 日日日日 日日日 日日日日日 日日日日日日21)

SecurePot: システムコールフックを利用した安全なソフトウェア実行系

  • Upload
    floria

  • View
    36

  • Download
    3

Embed Size (px)

DESCRIPTION

SecurePot: システムコールフックを利用した安全なソフトウェア実行系. 大山恵弘 (さきがけ研究21) 加藤和彦 (筑波大学 電子・情報工学系 さきがけ研究21). 背景. 悪意あるコードの氾濫 Code Red, Sircam, Anna Kournikova コードの安全な実行への要請 一つの有効な対策: sandbox システムの使用. Sandbox システム. アプリケーションを「封じ込めて」実行 アプリケーションの挙動を監視 許された操作のみを実行 例: Java 仮想機械を定義、実装 Janus, MAPbox, ASL - PowerPoint PPT Presentation

Citation preview

Page 1: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

1

SecurePot: システムコールフックを利用した安全なソフトウェア

実行系

大山恵弘(さきがけ研究21)加藤和彦(筑波大学 電子・情報工学系 さきがけ研究21)

Page 2: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

2

背景 悪意あるコードの氾濫

Code Red, Sircam, Anna Kournikova

コードの安全な実行への要請

一つの有効な対策 : sandbox システムの使用

Page 3: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

3

Sandbox システム アプリケーションを「封じ込めて」実行

アプリケーションの挙動を監視 許された操作のみを実行

例: Java

• 仮想機械を定義、実装 Janus, MAPbox, ASL

• 発行されるシステムコールを監視

Page 4: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

4

本研究の目的 システムコール監視型の sandbox シス

テムの使い勝手の向上 セキュリティポリシーの記述を簡単化

Page 5: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

5

発表のあらまし 既存システムの問題 SecurePot の設計 SecurePot の実装 関連研究 今後の課題

Page 6: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

6

システムコールフックを利用したsandbox システム

………

セキュリティポリシー

OS

sandbox

applicationシステムコール

実現方式• ユーザレベル• Kernel module• Kernel 改造

Page 7: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

7

既存システムの問題 ポリシー記述が面倒

試行錯誤しつつ繰り返しポリシーを書き換えることが必要

ポリシーの作成、閲覧、編集が直感的でない

Page 8: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

8

問題 1: 繰り返されるポリシーの     書き換え

ポリシー作成

実行

ポリシー違反強制終了

ポリシーを緩く書き換え

Page 9: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

9

問題 2: 直感的でない ポリシー記述

例: Janus のポリシーファイルの抜粋

basicputenv displaynet allow connect displaypath super-deny read,write,exec */.forwardpath allow read /dev/zero /dev/null

↑何をどうしたいのか???

Page 10: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

10

SecurePot の設計思想 ポリシーの記述を極力簡単に!

実行時の問い合わせ + その答をポリシーファイルに反映

ポリシー作成用の GUI の導入

Page 11: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

11

SecurePot の構成

OS

SecurePot

applicationconfigure

feedback

syscalls

X X

SecureFurnace

generate

…policy file…

Page 12: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

12

SecurePot の使用例

% securepot tar.plc tar xvf foo.tarx foo.txt, 4 bytes, 1 tape blocks……

ポリシーファイル コマンド列

SecurePot = ユーザ権限で走る一般のプログラム

Page 13: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

13

セキュリティポリシー 制御対象

システムコール 読み書きファイルパス 通信相手の IP アドレスとポート番号

制御の選択肢 deny: 不許可 ignore, allow-and-print: 許可 ask: 問い合わせ

Page 14: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

14

セキュリティポリシーの例•ファイル読み書きと通信の制限

…deny path allignore path r /dev/zeroignore path r /usr/lib/locale/ja/ja.so.1ignore path r /usr/lib/locale/ja/methods_ja.so.1ignore path r /usr/lib/locale/ja/LC_MESSAGES/…ignore path r /usr/lib/locale/ja/LC_TIME/…

deny sock all…

Page 15: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

15

Page 16: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

16

Incremental なポリシー作成の概要

実行前

実行中

実行後

•安全側に振ったポリシーを記述•怪しい操作の実行前に問い合わせるよう指示

•問い合わせ + 答の入力•問い合わせ後すぐポリシーを更新

•更新されたポリシーをダンプ•次回の実行ではダンプされたファイルを使用

Page 17: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

17

Firewall ソフトウェアに学ぶ 初期設定: 全部( or 大半)の通信を禁止 通信が試みられる→ その通信を許可するかどうか問い合わせ

Page 18: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

18

実行前 ポリシーを安全側に振る ask の使用

# システムコールask allignore open, read, close

# パスask path allignore path r /dev/zero, /dev/null

# 通信ask sock all

Page 19: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

19

実行中 問い合わせに答えるopen(“/etc/hosts”, O_RDONLY) called.Continue?1.   Yes2. No3. Yes. And remove this hook…8. Yes. And ignore this hook when the arg is the samecommand? >

最初は多数の false alarm → 徐々に減少

Page 20: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

20

実行後 問い合わせの答を反映したポリシーを

ファイルにダンプ

…Policy updated.Update echo.plc?(y/n) > yUpdated.%

Page 21: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

21

更新されたポリシーファイル

…# パスask path allignore path r /dev/zero, /dev/nullignore path r /etc/hosts…

•次回の実行で使用可•広く配布することも可

Page 22: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

22

Page 23: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

23

SecureFurnace: ポリシーファイル作成、閲覧、編集のためのGUI

メニュー、テキストボックス、チェックボックスの操作を通じてポリシー作成 例 : 「ファイル削除不可」ボックスをチェック

という行を生成

cf. visual programming 現状 : どういうGUIがよいかプロトタイプ上

で 模作中

deny unlink

Page 24: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

24

SecureFurnace プロトタイプ CGI+form

Page 25: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

25

Page 26: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

26

SecurePot の実装方式 プロセスを生成

子プロセス : アプリケーションを実行親プロセス : 子プロセスを監視

Solaris の / proc filesystem を利用 / proc以下の子プロセス用ファイルを読み書

き⇔ 子プロセスの状態取得、実行制御

Page 27: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

27

現在の実行時オーバヘッド 1MB のファイル一個のコピー

4% gcc-3.0.tar の展開

41%

類似システム : いずれも数%程度

Page 28: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

28

他の機能 :ライブラリ関数の実行制御

例 : fprintf の実行を許可 /禁止

より粗粒度の制御が可能に

関数が「信頼できる」場合に有効

実装 : ブレークポイントの挿入

Page 29: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

29

関連研究(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] 悪意がない入力でのアプリケーションの挙動を記録。

記録をもとにポリシー作成 プログラムの実行時の挙動を手がかりにポリシーを

作る点が共通

Page 30: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

30

関連研究(2) Java の permission 機構

宣言的ポリシー policytool: GUI ベースのポリシー編集ツール

システムコールラッパ GSW [Fraser et al. ’99],

SysGuard [榮楽ら ’ 01] 操作的なポリシー記述融通 ⇔ 記述量 のトレードオフ

Page 31: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

31

今後の課題 SecureFurnace非プロトタイプ版の実

問い合わせの仕方を洗練

使い勝手をさらに向上させる機構の提案

Page 32: SecurePot:  システムコールフックを利用した安全なソフトウェア実行系

2001/09/19 日本ソフトウェア科学会第18回大会

32

まとめ Sandbox システムを使いやすくする機構

インクリメンタルなポリシー作成の機構を提案 GUI によるポリシー作成支援の構想を提示

SecurePot HP でソースを公開中