2007年6月24日

[selinux-users:01921] Re: MACとconfinementという用語について

 熊猫です。

> SELinuxとしては,
> 「理論的には、strictポリシ使えば全部強制できるからOK」ということなのでしょう。
だとしたら AppArmor も(現状では /etc/init.d スクリプトでポリシーを読み込んでいるので
/sbin/init 開始時から制御するようにはなっていませんが)カーネルにビルトインにして

/sbin/init の開始時から強制するようにすればOKですね。
(でも、 SuSE はラベルベースのアクセス制御ではなくパス名ベースのアクセス制御を採用したので
/sbin/init の開始時から強制しようとすると苦労するでしょうね。
TOMOYO が SuSE に対応した時に苦労したのは、テンポラリファイルの多さでしたから。)

> コマンドラインパラメータや環境変数などには、
> 呼び出し元プロセスのドメインのラベルをつけるべきな気もしますね。
ラベルを付けられますか?そのラベルを他のプロセスの中にまで残せますか?
呼び出し先のプロセスが sscanf(argv[1], ...) した時点で失われてしまうと思いますが。
> NSAのMLに聞いてみたいです。
> #十分整理して聞かないと怖いですが
SELinux を使えばBLPモデルのように「機密度の低い方から高い方にしか情報が流れない」という主張が納得いきません。
権限を与えられたプログラムが期待されたとおりに期待されたとおりの動作だけをした場合だけ
「情報フローを制御できる」と呼んでいいと思います。下記のケースは
権限を与えられたプログラムが期待されたのとは異なる動作をしていますが、
これでも情報フローを制御できていると呼べるのでしょうか?
私の思っているのは情報フローとは別物(ビットフロー?)なのかもしれません。
何を以って「情報フローを制御できる」と呼び、「情報フローを制御できる」ことで「何を保証できる」のでしょうね?

/usr/bin/passwd の動作するドメインに対しては /etc/shadow に割り当てられている
ラベルの読み込みを許可していることでしょう。

ここで、 /usr/bin/passwd が /bin/cat という名前で実行された場合には
/bin/cat として動作するような仕様になっている場合を考えます。
( /usr/bin/passwd が busybox のような multi call binary として
インストールされているか、あるいは /usr/bin/passwd がそのような機能を持つ
トロイの木馬である場合です。)

クラッカーが /usr/bin/passwd を実行する際に、 argv[0] に /bin/cat を argv[1] に /etc/shadow を渡すことにより、
/bin/cat として動作してしまうため /etc/shadow の内容を漏洩させてしまいます。
これは明らかに避けるべき事態だと思いますが、情報フロー制御として問題ないのでしょうか?

また、 argv[0] に /usr/bin/passwd を指定している場合でも、
/usr/bin/passwd がトロイの木馬であった場合やバグがあった場合には
/etc/shadow の内容を漏洩させてしまうことが可能です。
「どこかから読み込む」と「(コンソールを含めて)どこかに書き出す」ことができる
全てのプログラムは想定外の漏洩経路を持っていると思います。
それでも情報フロー制御として問題ないのでしょうか?

投稿者 xml-rpc : 2007年6月24日 00:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/60633
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。