実行履歴に基づいたセキュリティポリシーの半自動生成

実行履歴に基づいたセキュリテ
ィポリシーの半自動生成
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();
}
動的チェック今後の展望

変数の値を読めるようにする。


分岐の処理


例:ファイルセーブする場所の文字列
分岐で片方のルートにどれくらいの頻度で行
ったらそのポリシーで確定させるのか。
静的チェックとの複合方法を考える。