実行履歴に基づいたセキュリテ ィポリシーの半自動生成 2007年修論公聴会 海尻・海谷研究室 M2 小川允伸 前提 本研究は、Java言語を対象とする。 背景 プログラムの中には悪意のあるものも存在する。 (裏で不正なファイル操作、ネット接続) 危険を回避することは重要である。 Java2では、ポリシーファイルを記述する事で、ユ ーザーがセキュリティを細かく設定できるようにな った。 従来はローカル(安全)か外部のコード(危険)かで区 別する極端なもの。 背景(2) 適切なポリシー設定は、安全性を高めてくれる。 一昨年の研究で、既にポリシー設定を支援する為の ツールは完成している。 研究の目的 セキュリティに疎いユーザーには、ポリシーを設 定するにあたって様々な問題がある。 過去の研究では、全てをカバーしきれていない。 本研究は、ユーザーのポリシー設定を支援する 為に、従来とは別のやり方でアプローチしていく。 ポリシーファイル ポリシーファイルは、 「~に対して~する事を許可」 という細かなセキュリティ設定の集合。 例: “http://www.cs.shinshu-u.ac.jp/” に置いてあるコ ードはマイドキュメントのファイルを読むことができる grant codeBase "http://www.cs.shinshu-u.ac.jp/" { permission java.io.FilePermission “\\Documents and Settings\\user\\My Documents\\*”, “read”; } ポリシーファイル(2) ユーザーがポリシーを設定していく上での 問題とは何か 構文的な問題(書けない) 意味的な問題(ポリシーの意味がわからない) セキュリティ的な問題(ポリシーの過不足) 特にポリシーの過不足は、セキュリティ面で の重大な欠陥となり得る。 静的チェック 過去の研究では、対象となるJavaソースフ ァイルをJavaMLに変換し、構造を調べる方 法をとった。 対象プログラムは実際に起動させない。 この方法を「静的チェック」と呼ぶ。 静的チェック(2) 従来のツールの流れは 1. 2. 3. 4. 対象プログラムのソースをチェック アクセス権の必要なメソッドを発見したら、自 動抽出 抽出された全てのメソッドを許可するような ポリシーファイルを自動生成 ユーザーが各ポリシーの必要不必要を判断 して、不必要なものは削除を行う。 静的チェック(3) 生成されるポリシーファイル 静的チェック(4) このやり方の問題点 自動生成されるのは抽出されたアクセス権が 必要なメソッド全てを許可するポリシー (適切なポリシーではない) ユーザーが生成されたポリシーの各々に対し て手動で必要か判断する。 あるポリシーが「どの時点」で「どのような事」を行う か理解していないと難しい。 プログラムの内容がわからない為困難。 動的チェック 本研究は、その点を補う事に注目した。 設定する各々のポリシーがどのようなものか 理解できれば適切なポリシーを設定しやすい。 どこでアクセス権が必要なメソッドが抽出され たかユーザーが理解できている必要がある。 動的チェック(2) 新たな方法として、JVMTIを利用した動的 チェックを提案。 JVMTI JVMTIは、JavaVM上で動作するアプリケ ーションの状態検査と実行制御の両方を 提供するプログラミングインタフェース。 JavaプログラムはJavaVMを介して実行さ れる。 JavaVMを監視する事で実行されているメソッ ドの履歴をリアルタイムで把握することが可能。 動的チェック(3) JVMTIを利用して、以下のような流れの ツールを提案した。 1. 2. 3. 4. 対象のプログラムを起動させる。 ユーザーはプログラムを普通に使用する。 使用中にアクセス権が必要なメソッドにひっ かかった場合、ユーザーにそれを許可する かどうか問う。 ユーザーの答えに対応したポリシーを構築。 動的チェック(4) 動的チェック(5) 動的チェック(6) 長所 プログラム操作に連動している為、ポリシーの 意味を理解しやすい。 短所 If分岐など、通る度に別の分岐を通る場合は 何度も使うとポリシーが異なる可能性がある。 対象プログラムの複数回起動が前提となり面 倒。 動的チェック(7) If(-----------------){ methodA(); } else{ methodB(); } 動的チェック今後の展望 変数の値を読めるようにする。 分岐の処理 例:ファイルセーブする場所の文字列 分岐で片方のルートにどれくらいの頻度で行 ったらそのポリシーで確定させるのか。 静的チェックとの複合方法を考える。
© Copyright 2024 ExpyDoc