研究概要 |
外部より入手したソフトウェアを安全に実行するサンドボックスシステムSoftwarePotの研究開発を進めている.SoftwarePotはソフトウェアを,独自の仮想ファイルシステムをもつサンドボックスに閉じ込めて実行することができる.ソフトウェアは明示的な指示が与えられない限り,仮想ファイルシステム外のファイルにアクセスすることはできない.ソフトウェアパッケージ開発者が作成したパッケージは,仮想的なファイルシステムの構築に必要な情報を含むアーカイブファイルとして配布される.パッケージを入手したユーザーは,ファイルへのアクセスや通信といった計算機資源へのアクセスを制限することができる. これまでに開発してきたSoftwarePotシステムは計算機資源へのアクセス制御,および,仮想的なファイルシステムの構築を,ユーザーレベルのシステムコール引数の検査と書き換え機能によって実現している.ユーザーレベルでのシステムコールの検査は,システムコールを1回呼び出すごとに2回のコンテキスト切り替えが発生するため,オーバーヘッドが大きい.また,ファイルパス引数の検査と書き換えにより,大きなオーバーヘッドがかかることがこれまでの実験によってわかっている。 本研究では,最近のオペレーティング・システムが提供するカーネル拡張モジュール機能を利用し,コンテキスト切り替えオーバーヘッドを軽減する二つの工夫を行った.第一に,システムコールの実行を許可するか否かを判定するモジュールをカーネル拡張モジュールにより実現するようにした.第二に,Software Potの実装に必要なファイル名マッピング機能をサポートするマッピング・ファイルシステムを,カーネル拡張モジュールとして作成することにより,マッピングをカーネル内のみで解決できるようにした.以上の機能をLinux上に実装し,実験により有効性を検証した.
|