SAccessor : デスクトップPCのための安全なファイルアクセス制御システム 東京工業大学 滝澤 裕二 光来健一 柳澤佳里 千葉滋
デスクトップPCへの攻撃 オペレーティングシステムが守るはず OS自体が攻撃される例もある ウィルスメール P2P パッチなしOS パッチを当てると動かなくなるアプリがある ユーザのセキュリティ意識が低い ゼロデイアタック
誤解 アクセス制御機構をOSの外にも用意 ポリシーを工夫すれば守れるはず VM,HDD,NIC アクセス制御機構を用意するだけでは、具体的に安全なシステムを作るのは難しい
例:特定ユーザだけが読めるファイル VM,HDDによるアクセス制御 OSからは一切情報をもらわない HDDやVM単体では、今どのユーザのプロセスがアクセスしようとしているか不明 OSから今アクセスしているユーザ情報を通知 OSがクラックされているかもしれないので、信用できない
提案:SAccessor ファイルアクセス制御をOSから分離 実用的に使えるような機構を提供 OSがクラックされても以下は守れる 安全なユーザ認証 認証方法に適したファイルシステムの拡張 OSがクラックされても以下は守れる ファイルアクセスのための認証をしなければ、ユーザのファイルへの不正アクセスはない システムファイルの不正書き換えはできない クラックされたOSも、 再起動すればクラックの影響を取り除ける
SAccessorのアーキテクチャ ファイルは全て作業OS外のファイルサーバにおく ファイルサーバ ローカルファイルシステムは一切なし 同一マシンの別VM上の認証OSで動作 アクセス制御を実施 クラックの危険性を最小に設定 例:リモートからのアクセスを制限 認証VMにはアクセスを制限 管理者しかログインできないように。 リモートからのアクセスをSAに関するものだけに制限 ユーザは作業VMに ログインして作業 VM VM 認証OS 作業OS NFS APP FILE ポリシ VMM
ファイルアクセスの手順 作業OSから認証OSへアクセス要求 認証OSがユーザを認証 認証されるのはユーザ 2. ファイルアクセス APP ディスク APP 3. ユーザ認証 1.ログインして 作業 ユーザ
ユーザファイルの不正アクセスの防御 認証OSがユーザ認証をおこなう 段階的なアクセス保護 認証するまでは、不正アクセスが不可能 ファイルやディレクトリをまとめたグループごとに認証 一度の認証で関連するファイルもまとめて許可 認証に有効期間を設定 認証の有効期間内は認証を省略 ユーザファイル 一部のファイルにのみ一定時間アクセス許可
SAccessorのユーザ認証 認証OSが認証ダイアログを表示 ユーザ名とパスワードによる認証 認証OSがユーザと直接やりとり
SAccessorのユーザ認証 認証OSが認証ダイアログを表示 ユーザ名とパスワードによる認証 認証OSがユーザと直接やりとり
画面構成 作業OSの画面も認証ダイアログもウィンドウ 作業OSの画面はVNCで表示して最大化 認証ダイアログは作業OSの上に重ねて表示 Xサーバ VNC ディスプレイ 認証OS 作業OS
認証ダイアログ ダイアログのタイトルにシークレット文字列を表示 認証OSにあらかじめ登録しておく 攻撃者の出す偽のダイアログと区別 アクセスしようと しているファイル
認証ダイアログの利点 シームレスな認証が可能 作業OSを介さないので安全 VMを用いて一台のマシン上で実現 たとえ内部犯がいたとしても認証を成功させるのは難しい
アクセス制御ポリシ例 ウェブブラウザに関するファイルだけにアクセス許可をだす 悪意のあるサイトにアクセスした場合 被害はウェブブラウザグループのみ メールの内容を盗まれることはない <ウェブブラウザ>[3600] /home/takizawa/.mozilla/firefox/* (rw) <メーラー>[600] /home/takizawa/.thunderbird/* (rw) 認証の有効期間とパーミッション
認証の有効期間の切れたファイルを作業OSへ通知 認証の有効期間の切れたファイルキャッシュはフラッシュさせる 作業OSにあるファイルキャッシュは認証なしでアクセスできてしまう 作業OSを改造しフラッシュ機能を実装 作業OS側でopenしたファイル名とinode構造体を覚えておく TCP/IP通信で認証OSからファイル名を受け取る 認証の有効期間の切れたファイルを作業OSへ通知 認証OS 作業OS 受け取ったファイル名のキャッシュをフラッシュ ファイル名 File cache
システムファイルの保護 Read only 書き換えが必要なとき PIDなどの一部のファイルを除く ログファイルだけ追記のみ許可 安全な基本書き換え操作を 認証OSがサービスとして提供 作業OSはそのサービスをRPCで起動 これ以外の方法では書き換えできない 基本書き換え操作ごとにプログラムを 認証OS側に用意 サービス起動時にダイアログによるユーザ認証
例: Set-UID コマンド Passwd コマンド 一般ユーザがパスワード変更のため使用 作業OS側の passwd コマンド RPCで認証OS側のサービスを起動 認証OSは passwd コマンドを実行 認証OSのpasswd コマンドへのキー入力は、認証OSがだすウィンドウからおこなう システムファイルの書き換え 認証OS 作業OS passwdファイルを書き換えたい 呼び出し passwd APP サービス system file
実装 VMMとしてXen、ゲストOSはLinuxを使用 Linuxカーネル内NFSDv3を改造 作業OSのキャッシュフラッシュ ドメイン0:認証OS、ドメインU:作業OS Linuxカーネル内NFSDv3を改造 NFSリクエストを監視してアクセス権をチェック 追記は書き込みのオフセットを検査 作業OSのキャッシュフラッシュ 作業OSのカーネルを改造 認証OSとTCP/IP通信によりフラッシュさせるファイル名の受け渡し
実験 システムの起動から終了までのファイルアクセスパターンを調査 認証ダイアログでユーザ認証しなくてはならない回数は少なくてすむ 大半のファイルは読み込みのみ 約500ファイル 書き込みはログファイルとPIDばかり 約30ファイル ログファイルは追記 認証ダイアログでユーザ認証しなくてはならない回数は少なくてすむ Fedora Core5の場合
実験(オーバーヘッドの測定) 読み書きの性能を測定 比較対象 データブロックサイズ512,1024,2048Bytes ローカルファイルシステム VMM+NFS SAccessor ポリシ数0,100,500行 実験環境 PentiumD 3.0Ghz Memory:1G Xen3.0.4 GuestOS:Linux2.6.13.33
実験(オーバーヘッドの測定) 読み込み 書き込み 考えられる原因 VMM+NFS:約57% SAccessor:約54% NFSDと認証ダイアログ間のスイッチのオーバーヘッド
関連研究 Proxos[OSDI’06 Richard Ta-Min et al.] アプリケーションを隔離されたVMで実行 プログラマがシステムコールレベルのポリシを記述しなけらばならない SVFS[SISW’05 Xin Zhao et al.] VMによって異なるアクセス権を与える 重要ファイルへの書き込みは特別なVMへログインが必要 Plan9[Bell Labs] 管理者のファイルはファイルサーバーに物理的に接続されたコンソールからのみ 守るのは管理者のファイルだけ
まとめ SAccessorを提案 ファイルシステムを攻撃対象のOSから分離 認証ダイアログによる安全なユーザ認証 システムファイルの不正書き換えを防ぐ ユーザが認証していないファイルの保護 認証ダイアログによる安全なユーザ認証 ダイアログ認証に適したアクセス制御 グループ毎に認証 認証に有効期間を設定
今後の課題 ファイルキャッシュのフラッシュ 作業VMのファイルキャッシュのフラッシュ Xenの機能を利用した実装 認証OSから作業OSのファイルキャッシュを直接操作 作業OSのOSカーネルの改造が不要 作業OSが乗っ取られても機能する SUIDコマンドの自動転送 作業OSのLibcを改造 SUIDされたプログラムを識別して自動で認証OSのサービスを起動
画面構成(ボツ) 認証OSの画面 作業OSの画面 認証ダイアログ 認証OSの画面 認証OSが表示する作業OSの画面 認証OS 作業OS Xサーバ 認証OSが表示する作業OSの画面 VNC ディスプレイ 認証OS 作業OS