2010年11月11日

2010年04月01日

TOMOYO Linux 1.7.2 が公開されました。

http://sourceforge.jp/projects/tomoyo/lists/archive/users/2010-April/000743.html

今までの TOMOYO はユーザランドプログラムの修正が不要というのが売りだった訳ですが、多くの要望が寄せられた「 Apache のバーチャルホストや mod_perl などへの対応」のために、今回ユーザランドプログラム向けのAPIが追加されました。

バーチャルホスト対応

Apache 用モジュール向けAPIの使い方は、海外さんの mod_selinux を参考にさせていただきました。ありがとうございます。

posted by 熊猫さくら at 22:57| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年12月20日

お知らせ: TOMOYO Linux 1.7.1 にメモリリークの不具合が発見されました。

TOMOYO Linux 1.7.0 に存在していた、環境変数のアクセス許可のチェック時に if 節で環境変数を使えない( allow_env PATH if exec.envp["PATH"]="/" のような指定ができない)という不具合を修正する際に、メモリリークするバグが新たに埋め込まれていたことが判明しました。環境変数のアクセス許可のチェック機能が有効な場合、1回のプログラム実行要求につき4KBのメモリがリークしていくため、そのうちメモリ不足に陥ってしまいます。
http://sourceforge.jp/projects/tomoyo/lists/archive/users/2009-December/000718.html

カーネル 2.6.31 にメモリリーク検出機能( CONFIG_DEBUG_KMEMLEAK )がマージされたことに伴い、 TOMOYO 1.7.0 では TOMOYO 独自のメモリ使用量カウンタを廃止したのですが、実は CONFIG_DEBUG_KMEMLEAK の扱いに苦労しています。

というのも、メモリリーク検出機構が有効化されるまでに発生するメモリ割り当て処理を記憶しておくためのトレース用バッファが不足して自動的に無効化されてしまう(そのため、本人は有効にしているつもりでも実際には機能していないので検出できない)とか、 SLAB アロケータを選択した状態で特定のデバッグオプションと組み合わせて使うと(無限再帰呼び出しにより)スタックオーバーフローが発生して起動不可能に陥るとかしているためです。デバッグオプションをなるべく有効にしながらメモリリークの検出も行うというのは試行錯誤が必要でした。

一昨日リリースされた 2.6.33-rc1 では有効な状態で起動できるようになり、 TOMOYO の処理の中でメモリリークが起こっているらしいことが判明しました。しかし、スタックトレースの出力が示している関数の中の何処が間違っているのか悩みました。スタックトレースはアクセス制御が有効でも無効でも呼ばれる関数の中で割り当てられた4KBのメモリが解放されていないと報告しており、4KBのメモリを割り当てている箇所は1つしかありません。しかし、デバッグ文を挿入して割り当てと解放の回数をカウントしてみても問題点を見つけられなかったため、誤検出ではないかと思いました。ところが、テストプログラムを作成しても再現できないため、他の TOMOYO の関数ではないかと疑い始めました。そして、アクセス制御を有効にしないとメモリリークが発生しないことを突き止め、環境変数のチェックを行う関数で発生していることが判明したのが昨夜のことです。環境変数のチェックを行う関数に対して明示的に noinline 指定をしていなかったために、コンパイラがアクセス制御が有効でも無効でも呼ばれる関数の中に inline 展開してしまったことにより、アクセス制御が有効でも無効でも呼ばれる関数の側ではなく環境変数のチェックを行う関数の側に問題があることに気づくのに手間取ってしまいました。はぅ〜、難しいなぁ。

2.6.33-rc1 への対応を追加した tar ball を TOMOYO 1.7.1p1 としてアップロードしましたのでご利用ください。

問題のあるファイルccs-patch-1.7.1-20091111.tar.gz
修正されたファイルccs-patch-1.7.1-20091220.tar.gz
( MD5: 8888488e0e704c4302480a0af476426c )

バイナリパッケージは現在再作成中です。

posted by 熊猫さくら at 18:00| Comment(0) | TrackBack(1) | TOMOYO Linux

2009年11月11日

TOMOYO Linux 1.7.1 が公開されました。

http://sourceforge.jp/projects/tomoyo/lists/archive/users/2009-November/000686.html

http://kumaneko-sakura.sblo.jp/article/22916756.html で MD5 のハッシュ値を選ぶ方法を示しましたが、今回は以下のようなプログラムを作成して自動化してみました。

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>

int main(int argc, char *argv[]) {
	struct timeval tv;
	char buffer[1024];
	memset(buffer, 0, sizeof(buffer));
	chdir("/ccs/");
	gettimeofday(&tv, NULL);
	while (1) {
		FILE *fp = popen("tar -zcf /usr/src/rpm/SOURCES/ccs-patch-1.7.1-20091111.tar.gz --exclude .svn -- *; md5sum /usr/src/rpm/SOURCES/ccs-patch-1.7.1-20091111.tar.gz", "r");
		if (!fp)
			break;
		fgets(buffer, sizeof(buffer) - 1, fp);
		pclose(fp);
		printf("%s", buffer);
		if (buffer[0] == buffer[1] && buffer[1] == buffer[2] && buffer[2] == buffer[3])
			break;
		tv.tv_sec++;
		settimeofday(&tv, 0);
	}
	return 0;
}

さすが自動化すると速いです。4文字連続一致というなかなか出ない値を数秒とか数分とかでゲットできました。(笑)

posted by 熊猫さくら at 22:12| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年09月03日

TOMOYO Linux 1.7.0 が公開されました。

http://sourceforge.jp/projects/tomoyo/lists/archive/users/2009-September/000654.html

今回は政権交代並みの大きな変化かもしれません。久しぶりの大冒険でした。(笑)

posted by 熊猫さくら at 22:32| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年07月03日

お知らせ: TOMOYO Linux 1.6.7 / 1.6.7p1 / 1.6.8 に特定環境下でバッファオーバーフローする不具合が発見されました。

4096 バイト割り当てられてられているとコメントで書かれている配列が、実際には 4000 バイトしか要求していなかったため、主に組込み環境で使われているメモリアロケータである SLOB を使っていた場合 4000 バイトちょうどしか割り当てられず、バッファオーバフローする可能性があることが判明しました。
http://sourceforge.jp/projects/tomoyo/lists/archive/users/2009-July/000632.html

起動できなくなったり重すぎてハングアップしてしまうようなデバッグオプション以外は普段から有効にしているため、配列の上限を超えてアクセスした場合には検出できるようになっているのですが、使っていた SLAB アロケータと SLUB アロケータでは 4000 バイトの要求であっても 4096 バイトを割り当てるため、デバッグオプションでは検出することができませんでした。(泣)

なお、プロジェクトで配布しているバイナリパッケージに関しては SLOB アロケータを使っていないため、この不具合が顕在化することはありません。

ホットフィックスをアップロードしましたのでご利用ください。

問題のあるファイルccs-patch-1.6.7-20090401.tar.gz
ccs-patch-1.6.7-20090410.tar.gz
ccs-patch-1.6.8-20090528.tar.gz
修正されたファイルccs-patch-1.6.8-20090703.tar.gz
( MD5: 1114ea8c201d78b044c87f2127932b8e )
posted by 熊猫さくら at 23:32| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年06月10日

TOMOYO Linux 2.2.0 を含んだ Linux カーネル 2.6.30 がリリースされました。

奇跡は起こせるんですね。新しい扉が遂に開きました。

長らく対立の時代が続いてきましたが、これからは共存・共栄の時代を目指しましょう。

いつも心に木之本さくらを。Linux「はにゃ〜ん♪」化計画、いよいよ本格スタート?

posted by 熊猫さくら at 21:01| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年05月31日

ケロちゃんチェックの動画

セキュアOS塾−03でまっちゃだいふくさんから言及のあった、SSHブルートフォース対策ですが、せっかくサーバ上に置いてあるのだから、リンクを張っておきましょう。

PacSec2008 で使用した資料は「振る舞いに基づくSSHブルートフォース対策」からダウンロードすることができます。
この資料の中で紹介されているデモの内、「ケース1:対話型シェルセッション」「ケース2:対話型シェルセッション」「ケース3:非対話的シェルセッション」については、動画で観ることができるようになっています。

( Windows で再生できないという方は、VMware 用 Movie Decoderをインストールしてください。)

posted by 熊猫さくら at 21:14| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年05月28日

TOMOYO Linux 1.6.8 が公開されました。

http://sourceforge.jp/projects/tomoyo/lists/archive/users/2009-May/000602.html

パス名ベースのアクセス制御とラベルベースのアクセス制御との論争を通じて、パス名ベースのアクセス制御でないと実現できないセキュリティも存在することが明らかになったことと思います。

既存ファイルの読み書き実行の可否を制限する上ではパス名ベースよりもラベルベースの方が上手に制限することができます。しかし、セキュリティは読み書き実行の可否だけで決まるものではありません。どのように使われるか(どのように振る舞うか)を考慮することもセキュリティの一部です。ファイルの名前が変化すると、どのように使われるかも変化します。そして、ファイルの名前の変化を制限する上では、ラベルベースよりもパス名ベースの方が上手に制限することができます。

Webサーバで考えてみましょう。 Apache は index.html というファイル名であれば、そのファイルの内容をクライアントに開示します。反対に、 .htpasswd というファイル名であればそのファイルの内容をクライアントに開示しません。

もしも、 readme.txt という名前で .htpasswd へのハードリンクを作成されたり、あるいは .htpasswd という名前から passwd.txt という名前にリネームされたりしてしまうと、本来開示すべきではない内容を開示してしまうことになります。そのため、 TOMOYO Linux では、ハードリンクの作成時やリネーム時には、「ハードリンク元/ハードリンク先」「変更前の名前/変更後の名前」のように2つのパス名をセットにして制限をしています。

では、 readme.txt という名前で .htpasswd へのシンボリックリンクを作成された場合はどうでしょう?Webサーバに対しては .htpasswd へのアクセスを許可するのですから、本来開示すべきではない内容を開示してしまうことになります。今までの TOMOYO Linux では、シンボリックリンクの作成時には、シンボリックリンクの参照先をチェックしていなかったので、この問題を防げませんでした。

そこで、今回のリリースでは、「シンボリックリンクを作成する際にシンボリックリンクの参照先を制限する」機能が追加されました。これにより、例えば .htpasswd へのシンボリックリンクの作成を防ぐことができるようになりました。

posted by 熊猫さくら at 23:39| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年04月08日

TOMOYO Linux 2.2.0 を含んだ Linux カーネル 2.6.30-rc1 がリリースされました。

一時期「 Web 2.0 」なんていう言葉が流行ったようですが、その後も Web アプリケーションに関するセキュリティ問題は尽きませんねぇ。

熊猫さくらは、最初からこうなることをスラドで予想していました。

そもそも、HTMLという「指示された通りに動く言語」を使っているから振り込め詐欺に騙される隙を与えてしまうのであって、HTMLを使わないようにすれば Web システムのユーザが被害にあう原因の多くを解消できるはずです。

「帳票入力アプリケーションの見直しについて」では、sshプロトコルを使うことを提案しました。まぁ、ファイアウォールの設定によりsshプロトコルを利用できないからhttpプロトコルを渋々使っているという場合もあるでしょう。でも、httpプロトコルを使ってHTML形式以外のデータをやり取りしてはいけないという規則はありません。

「ブラウザ」という「接続相手に指示された通りに動く」システムを使い続ける限り、このセキュリティホールは根絶できないでしょう。 SELinux では接続相手に応じた権限切り替えを行おうという計画が進行中のようですが、大多数のユーザは Windows 上で動作するブラウザを使っていますから、 Web システムのユーザを保護するのは難しいでしょう。根本的な解決策は、「接続相手に命令されるがままに動作する」システムを使わずに、「内容を理解し納得した上で自分が命令した通りに動作する」システムを使うことだと思います。

こちらこちらでは、HTMLを使わないことでトラフィックを大幅に削減できて、環境にも優しいシステムを作れることを書きました。

TOMOYO Linux 2.2.0 を含んだ Linux カーネル 2.6.30-rc1 がリリースされました。 TOMOYO Linux はsshセッションを制御するのにも威力を発揮します。もう一度、HTMLを使わないシステムを真面目に検討してみませんか?

posted by 熊猫さくら at 12:07| Comment(1) | TrackBack(1) | TOMOYO Linux

2009年04月01日

TOMOYO Linux 1.6.7 が公開されました。

http://lists.sourceforge.jp/mailman/archives/tomoyo-users/2009-April/000584.html

↓ MD5 の中に c が7回も登場。ちょっと珍しいかも?

  • ccs-patch-1.6.7-20090401.tar.gz MD5: ccc30ec17223625cdfc44df87ec1f623
  • ccs-tools-1.6.7-20090401.tar.gz MD5: dda77d0ea6a7fedd3f494f4338a8a952

作り方は http://kumaneko-sakura.sblo.jp/article/22916756.html です。

posted by 熊猫さくら at 21:34| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年03月27日

TOMOYO Linux 2.2.0 が Linus's git tree にマージされました。

2.6.30 としてリリースされるのは6月末〜7月上旬になると思います。

posted by 熊猫さくら at 06:40| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年02月18日

TOMOYO Linux が linux-next git tree にマージされました。

2.6.29 のリリース後(4月頃)になると思われていた linux-next へのマージですが、既に2/13( security-testing git tree にマージされた翌日)に行われていました。

問題がなければ、 2.6.30 (7月頃)に間に合うかもしれません。

posted by 熊猫さくら at 19:48| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年02月12日

TOMOYO Linux が security-testing git tree にマージされました。

まだメインライン( Linus's git tree )に入ったわけではないので、お間違えのなきように。

http://lists.sourceforge.jp/mailman/archives/jsosug-users/2009-February/000068.html
posted by 熊猫さくら at 20:13| Comment(0) | TrackBack(0) | TOMOYO Linux

2009年02月02日

TOMOYO Linux 1.6.6 が公開されました。

バレンタインデーに合わせてリリースしようと思っていたら、 1.6.0 で混入したバグが見つかってしまったので、 1.6.5 に対するバグフィックスのみを行ったものを 1.6.6 としてリリースしました。

hshinji さん、ありがとうございました。

posted by 熊猫さくら at 21:40| Comment(1) | TrackBack(1) | TOMOYO Linux

2009年01月01日

TOMOYO Linux に必要な LSM フックの追加がマージされました。

2.6.28-git4にて、 TOMOYO のパス名ベースのアクセス制御をするのに必要なフックが追加されました。
パス名を導出するためのインタフェースを巡って長いこと議論と試行錯誤が続いていましたが、ようやくインタフェースについて確定しました。これは、 TOMOYO Linux のマージへ向けての大きな一歩となるでしょう。

posted by 熊猫さくら at 22:50| Comment(0) | TrackBack(0) | TOMOYO Linux

2008年12月10日

お知らせ: TOMOYO Linux 1.6.5 に深刻な不具合が発見されました。

アクセスログの上限を指定する MAX_GRANT_LOG および MAX_REJECT_LOG パラメータが機能していなかったため、アクセスログを読みだすために /usr/sbin/ccs-auditd を実行していない場合、全てのメモリがアクセスログのために割り当てられてしまうことにより、システムがハングアップしてしまいます。

ホットフィックスをアップロードしましたのでご利用ください。

問題のあるファイルccs-patch-1.6.5-20081111.tar.gz
( MD5: bb0dd502eb08a93c9567e26acdb449b3 )
修正されたファイルccs-patch-1.6.5-20081210.tar.gz
( MD5: 00707fe168fe4c9a84e4f05ab423bfae )

バイナリパッケージはこれから再作成していきます。

posted by 熊猫さくら at 23:19| Comment(0) | TrackBack(0) | TOMOYO Linux

2008年12月04日

セキュアOSの落とし穴

http://Kumaneko-Sakura.sblo.jp/article/22921019.html で「 SELinux を以ってしても防げない落とし穴」について言及しましたが、誰も気が付いてくれないようなので補足します。

セキュアOSを使えば、従来は1人で行うしかなかった管理者業務を複数人で分担して行うことができるようになります。つまり、 Alice さんには sshd の管理を、 Bob さんには httpd の管理を、 Carol さんには sendmail の管理をしてもらうことも可能なわけです。

もし、 Alice さんが意地悪だったら(それって Malice さん?)、 ssh サーバを起動するときに以下のようなコマンドラインを入力するかもしれません。

[alice@server.example.com ~] # /usr/sbin/sshd -o 'Banner /etc/shadow'

Malice さん、もとい、 Alice さんには「 sshd の管理」という役割が与えられているので、上記のコマンドラインは許可されます。すると、何が起こるでしょう?

[evil@gateway.example.com ~] $ ssh root@server.example.com
root:$1$d8kgaeX7$PqJEIeNsGAGPw4WwiVy0C/:14217:0:99999:7:::
bin:*:14189:0:99999:7:::
daemon:*:14189:0:99999:7:::
adm:*:14189:0:99999:7:::
lp:*:14189:0:99999:7:::
sync:*:14189:0:99999:7:::
shutdown:*:14189:0:99999:7:::
halt:*:14189:0:99999:7:::
mail:*:14189:0:99999:7:::
news:*:14189:0:99999:7:::
uucp:*:14189:0:99999:7:::
operator:*:14189:0:99999:7:::
games:*:14189:0:99999:7:::
gopher:*:14189:0:99999:7:::
ftp:*:14189:0:99999:7:::
nobody:*:14189:0:99999:7:::
rpm:!!:14189:0:99999:7:::
dbus:!!:14189:0:99999:7:::
mailnull:!!:14189:0:99999:7:::
smmsp:!!:14189:0:99999:7:::
nscd:!!:14189:0:99999:7:::
vcsa:!!:14189:0:99999:7:::
rpc:!!:14189:0:99999:7:::
sshd:!!:14189:0:99999:7:::
rpcuser:!!:14189:0:99999:7:::
nfsnobody:!!:14189:0:99999:7:::
pcap:!!:14189:0:99999:7:::
haldaemon:!!:14189:0:99999:7:::
xfs:!!:14189:0:99999:7:::
kumaneko:$1$Y1sTeizV$y59KJ5302WPGh9rw8kGU50:14217:0:99999:7:::
root@server.example.com's password:

認証されていないユーザに対して、パスワードのハッシュ値を公開してしまいました。せっかく root ユーザであっても「 cat /etc/shadow 」でパスワードのハッシュ値を読まれることが無いようにポリシーを設定していたとしても、誰でもパスワードのハッシュ値を読める状態を実現できてしまったわけです。これは「セキュリティ上問題あり」ですよね?

従来は1人で行うしかなかった管理者業務を複数人で分担して行うようにする以上、自分なら試さないであろう馬鹿げた指定が行われる可能性を考慮しなければなりません。強制アクセス制御は「資源へのアクセスの可否」を制御することはできますが、「アクセスが許可された資源がどのように利用されるか」については保証できません。「アクセスが許可された資源がどのように利用されるか」は「プログラムとユーザの正しさ」にも依存しています。ですから、「適切なラベルが割り当てられていても、適切なポリシーが定義されていても、それだけで十分とは限らない」ことを忘れないでください。

posted by 熊猫さくら at 22:01| Comment(0) | TrackBack(0) | TOMOYO Linux

2008年11月16日

TOMOYO Linux 1.6.5 が公開されました。

PacSec2008 準備で報告が遅くなりましたが、11/11に TOMOYO Linux 1.6.5 をリリースしました。

TOMOYO Linux 1.0 の公開からもう3年になるのですね。ネーミングで騒がれ、2ちゃんねるで人格を否定され、ラベル陣営に叩かれました。それでも、まだ生きています。

今回はいろいろな不具合修正が含まれています。また、メインライン提案用バージョンへの移植を容易にするための仕様変更も含まれています。

変更点はこちらこちらにあります。

スラッシュドットにて「(便利で)くだらないUnix技は?」というエントリがあったので、SELinux を以ってしても防げない落とし穴という書き込みをしました。
SELinux の人が見たら怒るだろうなぁ。でも、実際問題、「ファイルやソケットなどにラベルを付けることはできるけれども、バイト列にラベルを付けることはできない」のですから、「ラベルベースであれば機密度の高い方から低い方へ情報が流れないように制限できる」なんていう考え方は、まるで某サブプライムローンにしか思えません。

"Why TOMOYO Linux?"The role of "pathname based access control" in security.では、「ラベルを維持するだけでは十分なセキュリティは実現できない」ということを書きました。でも、未だに「 TOMOYO や AppArmor から学ぶところは何もない」という考え方が残っているのは残念です。

posted by 熊猫さくら at 13:23| Comment(0) | TrackBack(0) | TOMOYO Linux

2008年10月27日

PacSec2008 にてケロちゃんチェックの話をすることになりました。

セキュリティ・スタジアム 2004で攻撃側をとことん疲れ果てさせ、情報学ワークショップ 2005で論文として登場し、セキュリティホール memo BoF 2006で笑いを誘った「ケロちゃんチェック」ネタを、国際会議であるPacSec 2008ですることになりました。

昨年の Ottawa Linux Symposium 2007 にて「 TOMOYO Linux を Black Hat に提案してみてはどうか」と薦められていたこともあり、 Black Hat Japan 2008 に応募しましたが、採用されませんでした。

PacSec 2008 の募集締め切りが Black Hat Japan 2008 の採否通知前であったため、同一ネタの2重発表になってしまうのを避ける必要があったので、悩んだ末に PacSec 2008 への応募は諦めていたのですが、セキュリティホール memo メーリングリストで募集期間が延長されていたことを知り、早速応募しました。

以下はケロちゃんチェックに関連するリンク(一部)です。

昨年度までは「対話的にコマンドを入力するシェルセッションへの適用」しかできませんでしたが、 TOMOYO Linux 1.6 で execute_handler と task.state が搭載されたことにより、現在では「 scp や sftp への適用」および「 TCP ポートフォワーディングへの適用」も可能になっています。

はぅ〜〜。緊張するよ〜〜〜。

posted by 熊猫さくら at 21:25| Comment(0) | TrackBack(0) | TOMOYO Linux