Tetsuo Handa
from-****@i-lov*****
2009年 6月 11日 (木) 10:41:49 JST
熊猫です。 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/