Russell Cocker氏とのミーティング

SELinux界隈の超有名ハッカー・Russell Cocker氏が来日しており、ミーティングをセッティングすることになった。
細かいことは置いておいて、ミーティングの内容メモ

■ [利用例] SambaでMCSを使う
Sambaはサーバプロセス毎にプロセスが生成されるので、サーバプロセス毎にラベル付けを行うことができる。
で、認証をPAMを使って行うようにすれば、サーバプロセスにはユーザに関連付けられたカテゴリが付与される。ここでユーザ ⇔ カテゴリの対応付けはsemanageコマンドで設定可能

■ MCSでSELinuxコマンドの制御
Q. MCSはunconfined_tドメインを制御することを意図しているのか?
A. Yes
とのことだったので、それに関連して。
MCSでは load_policy, setenforce, setsebool パーミッションに対する制御が行われていないので、setenforce 0と叩くと全部のアクセス制御が無効になってしまわないかという疑問。
Russellはこれに対し、/selinux/enforce に SystemHigh カテゴリを設定することで回避可能との事。確かに、libselinux は /selinux 経由で設定を行うので、この方法で大丈夫。
起動スクリプトで設定すれば、セキュリティポリシの「封印」のようなことも可能。組込みやアプライアンス向けには面白い使い方だ。

■ MCSでの新規生成ファイルのラベル付けについて
プロセスには上限/下限のカテゴリが設定されるが、MCSのアクセス制御に使われるのは上限カテゴリ。
FC5の標準的な設定では、下限カテゴリは設定されていない。つまり、Unauthorizedな状態になっている。で、新しくファイルを生成した場合には、プロセスの下限カテゴリが設定される。
これがどういった結果を引き起こすかというと、カテゴリが設定されたファイルをエディタ等で編集中にバックアップファイルが生成されると、そのファイルはUnauthorizedな状態に設定されてしまう。バックアップファイルを経由して権限の無い人に情報が漏洩する可能性がある。
例えば、viでhogeというファイルを編集中に .hoge.swp というファイルが作られるが、このファイルにはカテゴリが設定されないので情報漏えいの可能性がある。
対策としては、プロセスの上限/下限カテゴリを同一にする。
例えば↓のような設定を行う。

% semanage login -a -r s0:c0 kaigai
% semanage login -a -r s0:c1 omo
% semanage login -a -r s0:c2 himainu
% semanage login -l
Login Name SELinux User MLS/MCS Range
__default__ user_u s0
himainu user_u s0:c2
kaigai user_u s0:c0
omo user_u s0:c1
root root SystemLow-SystemHigh

% ssh kaigai@localhost
kaigai@localhost's password:
% touch testfile
% ls -Z

  • rw-r--r-- kaigai users user_u:object_r:user_home_t:s0:c0 testfile
Q. 標準で下限カテゴリがUnauthorizedなのは互換性を重視しているためか?

A. Yes
とのことなので、環境によって設定を行っておくべきだろう。

■ xattr on jffs2 サポートについて
組込み領域でのSELinuxには3つの要素で対応することが必要という話題
私は(1)busybox (2)メモリ使用量 (3)jffs2のxattrサポート が必要との立場
Russellは過去にiPAQSELinuxを動作させており、Porting NSA Security Enhanced Linux to Hand-held devicesというOLS2003の論文を紹介される。
o bysybox
これはRussell Cokerが大昔(2.4.xカーネルの頃)に作ったもの。現在のSELinuxで上手く動作するかな?とのことだったが、psやchconなど幾つかのコマンドで動作しない他は、ls -Zなど問題なく動作する模様

o メモリ使用量の削減
2.6.14でAttribute→Typeへのリバースマッピングによる、カーネルメモリの使用量削減パッチがマージされた。これにより、ポリシーのメモリ使用量は大幅に減っている。
但し、Russell自身はポリシー自体をシンプルにすることで、ポリシーの大きさを減らせばいいじゃんと言っている。まぁ、用途の限定された組み込み分野では、あまりリッチなポリシーは不要かも。
Russellの作ったiPAQ用のポリシは70KBくらい。

o jffs2でのxattrサポート
これは私がやっている作業。
Russellはこんな作業が進んでいたのねと驚いた様子。XATTRのname/valueペアを扱う方法はExt2/3の実装に似ていて、複数のinodeからname/valueペアを共有する方法については"good"とのこと。
他の参加者曰く「ファイルシステムの話になるとは思わなかった。」(^^;

Q. 君の会社はSELinux入りの組み込み機器を製品化したいと思っているのか。
A. いや、個人的な興味。ザウルスにSELinux入れたいと思ってる。

Q. ザウルスってe-Bayで買えるかな?
A. それは分からないが、秋葉原に行けば確実に買えるはず ;-)

ミーティング用の会議室を20:00迄で抑えておいたのだが、時間になった瞬間に部屋の照明を落とされた。こんなんアリか。

この後、Russell氏はじめミーティングに参加した面々で食事に。場所は田町駅前の富士見焼きそば ゆぐち。焼きそばのコシが強くて非常に美味。