攻撃コードの検証

http://slashdot.jp/security/article.pl?sid=08/02/11/0012230
カーネルにrootに昇格できる穴が出たとのこと。
検証コードも公開されている。
http://www.milw0rm.com/exploits/5092
Fedora 8のSELinuxでどうなるか、調べてみた。

普通のtargetedポリシのログインユーザからのroot昇格

検証コードを実行したら、rootになれた。
で、id -Z
してみると。。
rootかつ、unconfined_tドメインなので、
王大人:「死亡確認」

ただ、これは想定内。
ログインユーザにはあえて甘い設定にしてあるのがtargetedポリシなのだから。

キオスクパソコンユーザでroot昇格

さて、こちらはどうか。
キオスクパソコンユーザとは、安全な一般ユーザを設定したもの。
ログインユーザは、SELinux的に「xguest_t」ドメインで動作する。
詳しくは、Dan Walsh氏のブログを参考のこと。
http://danwalsh.livejournal.com/

検証コードを実験したら。。。
そもそも実行ができない。理由は、xguest_tは、
ホームディレクトリの実行権限がないため。
これじゃつまらないので、設定を甘く。
setsebool allow_xguest_exec_content on
これで、ホームディレクトリを実行できる。
で、また検証コードを実行。お、rootになれたぞ。
しかし、、、
id -Zしてみると、SELinuxドメインはxguest_tのまま。
で、破壊活動もできず。
というわけで、キオスクユーザーならば
SELinuxは効果あり」
SELinuxのキオスク万歳!!

このような、カーネルのlocal exploitは結構見つかるので、
ログインユーザーもやっぱり、unconfined_tじゃなくて別のドメインで動かした
ほうがいいよなぁ。

SELinux無効化は可能か?

今回の検証コードは単にrootシェルを立ち上げるだけだった。
がんばってSELinuxを無効化することはできるんだろうか??
ちょっと試してみたけど、SELinuxの無効化はできなかった。
直接selinux_enforcing変数の上書きはできなかった。
/dev/kmemを開く手もあるようだが、これはキオスクユーザーの権限では開けない。
SELinux万歳!

と思ったが、もっと頑張れば、無効化できるかもしれない。。。
あまりやりすぎると、何かの法律に引っかかってしまうのかしら。

続:SELinux無効化

あっさり、できてしまった orz

ただし、デフォルトのSELinuxキオスクでは、
「そもそもホームディレクトリ上でプログラムの実行ができないから、攻撃コードを実行できない」
ので、SELinuxの意味はある。

実行を許す環境では、SELinuxを使おうが、死亡確認。
SELinuxのenforcing/permissiveモードの切り替えオプションを外して
コンパイルすれば、たぶん死亡しないと思う。