Tetsuo Handa
from-****@I-lov*****
2006年 7月 7日 (金) 21:49:53 JST
熊猫です。 SuSE の 2.6.16.13-4 カーネルで initrd の作成とブートローダへの登録を行う スクリプト付きの rpm の作成方法をやっと見つけたので、夕方に差し替えました。 > > ・シンボリックリンクのままドメインを定義できるようにする機能が導入されました。 > これは、busybox環境にはいいですね。 はい。 http://d.hatena.ne.jp/hshinji/20060520 を見て実装した方が良いと考えました。 技術的な話をすると、 execve() には filename と argv[] と envp[] を 渡せますが、たまに argv[0] の内容によって振る舞いを変化させる プログラムが存在します。 busybox はその一例です。 TOMOYO Linux のドメイン遷移は filename の内容に基づいて行われます。 たいていの場合、 filename と argv[0] は同じ内容なので問題無いのですが、 バイナリラッパのように意図的に filename と argv[0] で異なる内容を 指定する場合があります。例えば、 filename に /sbin/busybox への シンボリックリンクである /bin/ls を、 argv[0] に /sbin/busybox への シンボリックリンクである /bin/cat を指定した場合、 /bin/ls のドメインで /bin/cat として振る舞うというちぐはぐな状況が 発生します。攻撃者が意図的に filename と argv[0] で異なる内容を 指定できれば、穴になってしまうわけです。 これは TOMOYO Linux 1.1.3 固有の問題ではなく、 filename の内容だけに基づいて 状態遷移を行う全ての実装に存在しうる問題です。 この問題をどうするかは次期バージョンへの検討課題にしたいと思います。 > > ・監査ログ機能を使うかどうか選択できるようにしました。 > セキュリティ面では問題があると思いますが、組み込み向けには、コンパイル時 > ではなく、なんらかの動的スイッチを用意してあるほうがありがたいです。 /proc/ccs/status の MAX_GRANT_LOG= および MAX_REJECT_LOG= で動的に有効/無効を 切り替えることができます。(例: /root/ccstools/setlevel MAX_REJECT_LOG=256) 常に MAX_GRANT_LOG=0 MAX_REJECT_LOG=0 として利用する環境の場合には 監査ログのためのコードが無駄になるので 1.1.3 ではコンパイル時に 除外できるようにしました。