Shinpei Nakata
shinp****@gmail*****
2009年 6月 13日 (土) 22:05:24 JST
熊猫さん、 お返事ありがとうございます。 2009/6/11 Tetsuo Handa <from-****@i-lov*****>: > 熊猫です。 > > Shinpei Nakata さんは書きました: >> なるほど。まだ2.6.30のコードをみていないのですが、 >> この機能はLSMのみで実現できるようにパッチングされたという理解でいいのでしょうか? > > 2009年1月1日に(マウントポイントからの相対パス名ではなく) > ルートディレクトリからの絶対パスを取得するのに必要なLSMフックが > 追加されたことにより、 2.6.29 からその機能が実現できるようになりました。 > >> ラベルの割当はLSMの提供するKernel Objectへのvoid *securityポインタ各種が >> 担当しているかとおもいます。今回、パス名へのラベリングができているのは >> あらたにKernel Objectへパス名が追加されたのでしょうか? >> それとも、パス名を保存しておくなにかが、べつの場所に保存されたのでしょうか?? > いいえ、パス名にはラベルは割り当てません。 2.6.29 で追加されたLSMフックを > 利用して、アクセスチェックの際に毎回計算するようにしています。ですから、 > TOMOYO の場合は task_struct の cred の security ポインタは利用していますが、 > それ以外の Kernel Object の security ポインタは利用していません。 わかりました、貴重な情報ありがとうございます。 >> Stackableをつかわず、現在では独自のLSMから、それぞれのLSMフックにディスパッチする方法を >> とっています。カーネルオブジェクトのラベルは飛ばす前にスイッチしてるので >> (まだ実装は終わってませんが)おそらくうごくのかなぁと。。。 > > LSMフックを利用しているそれぞれのモジュールは、 Kernel Object の > security ポインタを独占利用できることを前提に実装されています。 > LSMフックを呼び出す直前にカレントプロセスの security ポインタを切り替える > という方法は、他のプロセスからカレントプロセスの security ポインタを参照する > 可能性があるため、正しく動作しないと思います。同時に有効にされる > LSMモジュールの数だけ security ポインタを用意してやる必要があるかと > 思います。 > ↓に linux-security-module ML で議論された内容があります。 > http://marc.info/?t=123187029200001&r=1&w=2&n=59 > http://marc.info/?t=123247387500003&r=1&w=2&n=28 > ↓今年の Linux Plumbers Conference の Security Microconf でも話題に上るかも? > http://lwn.net/Articles/319329/ なるほど。まったく気づいていませんでした。 get_securityなどのフックがあったので、必ずこっちを経由してラベル(voidポインタ)に アクセスするというわけではないのですね。 熱いMLの議論を呼んで思ったことは、LSMをマルチにするという 方法は開発者にはシンプルだし、望まれているものの、 ユーザの混乱をさけるため、いまある機能で実現できることは それでやりましょう。という流れのようですね。 LSM切換えの都度、 セキュリティラベルをすべて切り替えるのは非現実的だし、 独占利用させるための専用ポインタをkernel objectに追加すれば 「2つのLSMを組み合わせるとこういうメリットがありますよ」と示す idea-proofの実装としてはシンプルですよね。 セキュリティラベルへのアクセスがインターフェース化されてきちんとLSMフックに 存在して、それ以外からのアクセスができない状態になれば、 LSMのスイッチは可能になりそうだと考えています。 ご指摘、ありがとうございました。 ちなみに、教えていただいた資料から、"Tomoyo is ready for co-exist with SELinux..."という 記述があったのですが、これはTomoyoがパッチとしてあたった場合に共存が可能だという ことでしょうか?? nakata