260 likes | 374 Views
SAccesor: デスクトップ PC のための安全なファイルアクセス制御システム. 数理・計算科学専攻 千葉研究室 滝澤 裕二 指導教員 : 千葉 滋. OS カーネルに対する攻撃の脅威. OS カーネルがファイルアクセス制御を行っている しかし OS カーネルにも脆弱性が存在 パッチ未適用 ゼロデイアタック OS カーネルが攻撃を受けるとファイルアクセス制御が無効化されてしまう 一般ユーザがウィルスを実行 ウィルスが OS の脆弱性をついて特権と取得 認証をバイパス アクセス制御の無効化 任意のファイルへアクセスされる. OS 外のアクセス制限による保護.
E N D
SAccesor:デスクトップPCのための安全なファイルアクセス制御システムSAccesor:デスクトップPCのための安全なファイルアクセス制御システム 数理・計算科学専攻 千葉研究室 滝澤 裕二 指導教員: 千葉 滋
OSカーネルに対する攻撃の脅威 • OSカーネルがファイルアクセス制御を行っている • しかしOSカーネルにも脆弱性が存在 • パッチ未適用 • ゼロデイアタック • OSカーネルが攻撃を受けるとファイルアクセス制御が無効化されてしまう • 一般ユーザがウィルスを実行 • ウィルスがOSの脆弱性をついて特権と取得 • 認証をバイパス • アクセス制御の無効化 • 任意のファイルへアクセスされる
OS外のアクセス制限による保護 • Kerberos+ファイルサーバ 認証サーバ パスワード 認証チケット サービス 認証チケット クライアント ファイルサーバ
OS外のアクセス制限による保護 • Kerberos+ファイルサーバ 認証サーバ 認証 チケット パスワード キーロガー トロイの木馬 認証 チケット クライアント ファイルサーバ パスワード 秘密鍵の漏洩 サービス 攻撃者
OS外によるアクセス制御の保護 • VMM,HDDでファイルアクセス制御 • 低い抽象度のインターフェイス • ブロック番号 • OSがクラックされた後のユーザ情報は信用できない 管理者です APP ファイル名 OS ブロック番号 VMM アクセス制御
提案:SAccessor • OSクラックされた状況においてもファイルアクセス制御を維持するシステム • VMMとファイルサーバを組み合わせてアクセス制御を分離したときの問題を解決 • システムファイルの不正書き換えはない • OSを再起動することでクラックの影響を除去可能 • ログインしていなければユーザファイルの不正アクセスはない
アーキテクチャ • VMMを使い1台のマシン上に2つのOSを動作 • 作業OS:ユーザがログインして作業 • ローカルファイルシステムなし • 認証OS:ファイルサーバ • アクセス制御を実施 • 外部からのアクセスを制限 TCB ファイル サーバ (NFSD) APP APP アクセス コントローラ 認証OS 作業OS VMM(Xen)
システムファイルのアクセス制御 • 基本的にREADONLY • xxx.pidやutmpなど一部例外は書き込み可 • システム起動時に上書きされるので問題ない • ログファイルは追記のみ許可 • 認証OSがシステムファイル書き換えサービスを提供 • 作業OSはそのサービスをRPCで起動 • これ以外の方法では書き換えられない • サービス起動時に認証を実施 • 基本操作ごとにサービスを用意 • 例:setuidコマンド(passwd,...)
サービス例:passwd 認証OS 作業OS passwdを実行 認証ダイアログ 認証 プロセス サービスの 呼び出し Glibc execve() 書き換え サービス 実行 passwd ディスク ウィンドウ /etc/passwd
SAccessorにおける認証 • 認証OSが作業OSの画面に重ねて認証ダイアログを表示 • 作業OSの画面はVNCウィンドウとして全画面表示 • Xサーバは認証OS上で動作 • 認証OSがユーザと直接やり取り • 作業OS上の攻撃者はダイアログにアクセスできない 認証OSを意識させない シームレスな認証が可能 VNC 認証OS 作業OS
SAccessorにおける認証 • 認証OSが作業OSの画面に重ねて認証ダイアログを表示 • 作業OSの画面はVNCウィンドウとして全画面表示 • Xサーバは認証OS上で動作 • 認証OSがユーザと直接やり取り • 作業OS上の攻撃者は認証ダイアログにアクセスできない 認証OSを意識させない シームレスな認証が可能 VNC 認証OS 作業OS
認証ダイアログの安全性 • タイトルにシークレット文字列を表示 • 認証OSにあらかじめ登録しておく • 作業OSからはみることができない • ユーザはこの文字列を見て偽のダイアログと区別 • 認証ダイアログへのキー入力を盗まれることはない シークレット文字列 TCB VNC サーバ X11 認証OS 作業OS VMM ハードウェア キー入力
ユーザファイルのアクセス制御 • ファイルアクセス時に認証ダイアログで認証 • 認証に成功するまではアクセス不可能 • 段階的なアクセス制御 • ファイルやディレクトリをまとめたグループごとに認証 • 一度の認証で関連するファイルもまとめて許可 • 認証に有効期間を設定 • 認証の有効期間内は認証を省略 ファイルシステム 一度の認証でファイルシステムの一部分を期限付きで公開
ユーザの秘密鍵を守るポリシ例 • メーラに関するファイルだけにアクセス許可をだす • ウィルスメールを受信した場合 • 被害はメーラグループのみ • ユーザの秘密鍵を盗まれることはない <メーラ>[600] /home/takizawa/.thunderbird/* (rw) </メーラ> <ssh>[10] /home/takizawa/.ssh/id_rsa (r) </ssh> パーミッション 有効期間(秒)
作業OSのキャッシュクリア • 認証の有効期間の切れたファイルキャッシュはクリアさせる • 作業OSにあるファイルキャッシュは認証なしでアクセス可能 • 認証OSから作業OSのメモリを直接操作 • VMM(Xen)の機能を利用 • 作業OSのメモリ空間を認証OSのメモリ空間にマップ • 作業OSの変更不要
作業OSのCPUレジスタの値から実行中のプロセスの情報を取得作業OSのCPUレジスタの値から実行中のプロセスの情報を取得 ファイル名とプロセスのルートディレクトリから対象ファイルのinode構造体を探す nfs_inodeのcache_validityの値を変更 キャッシュを使わずサーバに問い合わせるようになる radix_treeからページキャッシュを探しゼロクリアする キャッシュクリアの実装
実験 • SAccessorの性能測定 • キャッシュクリアにかかる時間 • Bonnie++ • ext3(native) • VM+NFS • SAccessor • 認証OS上で実行するsetuidプログラムの数 実験環境 CPU:PentiumD 3.0GHz メモリ:1GB Xen:3.0.4 認証OSに512MB 作業OSに384MBのメモリ割り当て 両OS:Linux 2.6.16.33
クリアにかかる時間はファイルサイズに比例 メモリマップ1回にかかる時間は約0.4ミリ秒 1ページ(4KB)のキャッシュをクリアするのに3回メモリマップが必要 VMM内で実装することで削減可能 キャッシュクリアの性能
nativeと比較して約33%のオーバーヘッド VM+NFSと比較すると約7%のオーバーヘッド 7%がSAccessorでアクセス制御のために追加した分のオーバーヘッドと考えられる ファイル読み込み性能
文字単位 nativeと比べ約42%のオーバーヘッド VM+NFSは同等 ブロック単位 SAccessorのほうが良い NFSを使っているため、実際にディスクに書き込むのを待たずに測定終了しているため 書き込み性能 ブロック単位/文字単位
ダイアログの出現頻度 • Linuxのsetuidプログラムの数33個(FC5の場合) • 認証OS上で実行すべきもの11個 • passwd,crontab,chfn,chshetc • 任意のプログラムを実行できるため認証OS上で実行すべきでないもの7個(sudo etc) • ネットワークを使うので認証OS上で実行すべきでないもの5個(rsh etc) • 作業OSで実行するべきもの10個(mount etc) • 認証ダイアログの出現頻度は少ない • passwd,chshなどは1日に一回も使わない
関連研究 • Plan9 [Bell Labs ‘95] • 管理者のファイルへのアクセスはファイルサーバのコンソールからのみに限定 • SVFS[Xin Zhao et al SISW’05] • VM毎に異なるアクセス権 • 別VMにログインしなおして作業する必要 • Proxos [Richard et al OSDI’06] • プロセスをVMに隔離して実行 • プログラマがシステムコールレベルのポリシを記述
まとめ・今後の課題 • OSがクラックされてもファイルアクセス制御を強制するSAccessorの提案 • 以下が守れる • 実行ファイル、設定ファイル、ライブラリの書き換え • 再起動することでクラックの影響を取り除ける • ユーザファイルへのアクセス • 被害を限定 • 今後の課題 • キャッシュフラッシュの実装をVMM内で行う • オーバーヘッドの削減
脅威モデル • デスクトップPCを対象 • 攻撃者がOSレベルの特権を取得 • ファイルの改ざん • 実行ファイル、設定ファイル、ライブラリ • ユーザの機密ファイルへアクセス • 攻撃者はリモートにいる • マシンへの物理的なアクセスはない
実装 認証OS 作業OS 認証ダイアログ 書き換えサービス 実行 setuidコマンド 認証 プロセス Glibc execve() ユーザ空間 ユーザ空間 カーネル空間 カーネル空間 アクセス コントローラ NFSD NFS Xen ディスク