pacsec2007のTOMOYO Linux講演

お疲れ様です。>関係者の人々

資料も早速公開されていた。
http://sourceforge.jp/projects/tomoyo/document/PacSec2007-ja-demo.pdf
一点よく分からない点を発見。

SELinuxにおけるドメインのジレンマ
どうやって区別する?
  sshdから起動された安全なから起動された安全な/bin/sh
  シェルコードから起動された危険な/bin/sh
  Apache -> PHP -> system() --> /bin/sh

実は区別できません
   /bin/shなどのオブジェクトは一度になどのオブジェクトは一度に”1個”のラベルしか持つことができない
   ラベルベースのセキュリティに於いては時間軸の概念が無い

まず、TOMOYOだと「区別」できるのはわかります。
sshdからの/bin/sh
sshd-/bin/sh ドメイン
PHPのシェルコードから起動された/bin/sh
/sbin/httpd-/bin/shドメイン
で動く。
/sbin/httpd-/bin/shドメインは、事前に学習してなければ、
何も権限を持たないので、何も出来ない、
という理屈だと想像します。

SELinuxだと、次のようになります(ポリシ設定によります)。
sshdから起動された/bin/sh
→ ユーザによって、別々のドメインが割り当てられる
rootならばsysadm_t、ynakamならuser_tドメイン

Apacheのシェルコードから起動された/bin/sh
Apacheドメインをそのまま引継ぎ、httpd_tドメイン

SELinuxでも、呼び出され方によって、
/bin/shドメインは、別になります。

TOMOYO Linuxは、
「学習していない履歴でプログラムを起動すると、そのプログラムは全て拒否な別ドメインで起動」
SELinuxは、
ドメインを定義してないプログラムを起動すると、親ドメインを引き継ぐ」
という違いが現れてますね。

SELinuxも、
ドメイン遷移してない実行をすると、実行拒否」
とかできても面白そうだけど、それやるとSELinuxじゃなくなっちゃいそう。

SELinux
ドメインはポリシーを用いて事前に定義されている ドメインはポリシーを用いて事前に定義されている
階層構造を持たないためフラットである

というのがあった。
SELinuxの場合、確かに「ドメインの名前」はフラットで履歴を含んでないけど、
ドメインの割り当てられ方」はフラットではないです。