KaiGai Kohei
kaiga****@kaiga*****
2010年 10月 11日 (月) 13:56:47 JST
海外です。 >> これも、正式採用を目指すのでしょうか。 > > いいえ、 AKARI はメインラインにマージされることはあり得ません。 > LSMの人たちがLSMを悪用/乱用されないようにするために行った修正 > ( http://lkml.org/lkml/2007/7/14/91 http://lkml.org/lkml/2010/2/26/239 )に > 対して、「そんな修正を行ったところでカーネルモードで動作するコードなら誰でも > LSMをハイジャックできるのだから無駄無駄ぁ」ということを実際のコードで証明 > してしまっている訳ですから。 > 一応フォローしておくと、モジュールのロード時に「安全と認めたカーネルモジュール だけをロードできる」という事になっているので、出所の怪しいモジュールはそもそも カーネルに入れてもらえない事になります。 もっとも、システムのセキュリティ管理者が、そういったカーネルのお作法を確信犯的 に無視するモジュールをロードしてしまえばお仕舞いなので、LSMをビルトイン関数専用 にしても、あまり意味のある修正ではないですね。確かに。 ちらっとシンボル解決の部分を見ましたが、苦労の跡が偲ばれます。 ただ、プラットフォームによっては変態的な関数ポインタのフォーマットを持っているので、 注意が必要です。 (もう5年も前の事なので細部がちょっとあやふやですが…。) 昔、Itanitum (ia64) というプロセッサを扱っていたんですが、そこでは関数ポインタが 以下のようなフォーマットを持っていました。 struct { unsigned long segment; /* kernel text なら 0xa0000000 00000000 固定 */ unsigned long addr; /* いわゆる、/proc/kallsyms に出るような値 */ } p; で、関数ポインタの指すアドレスは &p.addr なんですが、その一つ前のワードに適切な セグメント値が入っていないと、正しく関数をコールできません。 この辺はまぁ、、、自力でシンボル解決する以上、致し方ないというか…。 以上、マメ知識でした。 -- KaiGai Kohei <kaiga****@kaiga*****>