2012年11月11日

Linux Security Modules に変化の兆しが出てきました。

いろいろと Linux 利用者を悩ませてきたLSMですが、変化の時が近づきつつあるようです。

熊猫の9年間の試行錯誤を纏めて LinuxCon North America と Linux Security Summit で発表した、 ARIA ワールド満開(嘘)なプレゼン資料も貼っておきます。アクセス制御に興味のある方に読んでほしいなぁ。

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

2012年10月20日

AKARI 1.0.28 (重要なバグフィックス)が公開されました。

AKARI 1.0.27 以前をカーネル 2.6.28 以前( RHEL 4/5 などが該当)で使用している場合、ある種のプログラムを実行した後にカーネルパニックが発生するという不具合が見つかりました。この問題は悪意が無くとも発生するので、攻撃される心配のない安全な環境で解析用途で使用している場合であっても、アップデートするようにしてください。

http://sourceforge.jp/projects/tomoyo/lists/archive/users/2012-October/000975.html

posted by 熊猫さくら at 22:53| Comment(0) | TrackBack(0) | AKARI

2012年07月15日

Microsoft Office から PDF 形式で保存する場合に注意すること

Office 2007 にはプライバシー情報を削除する機能が搭載されていますが、公開用に PDF 形式で保存する場合、その機能を利用しても埋め込みオブジェクトのパス名など削除されない情報があります。

PDF 形式で保存する( http://www.atmarkit.co.jp/fwin2k/win2ktips/908offpdf/offpdf.html )際に、ファイル名を指定するダイアログに表示されている「オプション」ページを開き、「アクセシビリティ用のドキュメント構造タグ」チェックを外すと削除されるようです。

pdf-options.png

なんというか、「攻撃者のためのアクセシビリティ用のドキュメント構造タグ」あるいは「情報漏えい促進のためのドキュメント構造タグ」と呼んだ方が正確かも?

http://forums.adobe.com/thread/405476

posted by 熊猫さくら at 09:57| Comment(0) | TrackBack(0) | Windows

2012年06月20日

CaitSith という名前の由来について

LinuxCon North America 2012 で CaitSith の発表をすることになったので、ドキュメントの整備と動作テストが終わってから書こうと思っていた記事を投入します。

今までのアクセス制限モジュールはプロセスの視点からルールを書くため、特定のプロセスの動作を制限するルールを書くことは簡単でした。しかし、特定の資源へのアクセスを制限するには全てのプロセスの動作を制限しなくてはならないため面倒でした。資源の視点からルールを書くことができれば、そんな必要も無くなります。 CaitSith はプロセス視点でも資源視点でもお好きなようにルールを書けるので、「でっかい自分ルール」を実現できます。

さらに、 CaitSith ではホワイトリスト方式だけでなくブラックリスト方式でルールを書くこともできるようになっており、デフォルトでは許可も拒否もしない「あらあらうふふ」状態な動作をします。

最初は TOMOYO 1.9 にするつもりでしたが、だんだん変更点が大きくなってきたので TOMOYO 3.0 にすることも考えました。しかし、考え方や使い方があまりにも違うので、そのまま TOMOYO という名称を付けると混乱すると判断し、新しい名前を割り当てることにしました。

サクッと1時間ほど考えて、最初は "Access Limiter Implementation Checking Interested Attributes" "Access Limiter Implementation Checking Interested Actions" "Access Limiter Implementation Checking In-kernel Attributes" の何れかの頭文字となる ALICIA さんにしようと決めました。しかし、「 Linux ALICIA 」で検索したところ、既に "Advanced LInux Crash-dump Interactive Analyzer" の略としての ALICIA さんが存在しており、しかも同じ Linux カーネルという分野なので、これでは無理だと判断しました。

そこでまた1時間ほど考えて、 "Characteristic action inspection tool. See if this helps." "Characteristic access inspection tool. See if this helps." "Characteristic access inspector to See if this helps." の何れかの頭文字となる CaitSith さんにしようと決めました。制限したい操作だけを制限するので、セキュリティの専門家には不人気かと思いますが、セキュリティの専門家ではない利用者からの需要はあるかもしれないので、調査の意味合いを込めて See if this helps. になりました。

posted by 熊猫さくら at 17:14| Comment(0) | TrackBack(0) | CaitSith

2012年05月30日

Fedora 17 ネットワークインストール時の注意点

Fedora 17 のネットワークインストーラは、環境によっては「次へ」ボタンが表示されないことがあるようです。以下は熊猫の PC 上の VMware Workstation 上に Fedora-17-i386-netinst.iso からインストールしようとした時の画面です。
fedora17-net-installer.png
画面外には表示されているので、 Tab キーを使ってフォーカスを移動してください。

以下は同じ条件で Fedora-17-i686-Live-Desktop.iso からインストールしようとした時の画面です。
fedora17-live-installer.png

どうしても最小インストールをしたいと言うのでなければ、 Live 版を使う方が正解かと思います。

https://bugzilla.redhat.com/show_bug.cgi?id=826351

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

2012年05月18日

DRBD モジュールが突然動かなくなったときにチェックすること

Linux 3.4 では、 call_usermodehelper() の引数で指定されている UMH_* 定数の値が変更されています。 UMH_* 定数の代わりにハードコードされた整数を指定しているソースコードは、 Linux 3.4 以降では期待通りに動かなくなります。

現時点では、この修正は Ubuntu にバックポートされています。この修正は他のいくつかのディストリビューションにもバックポートされることが予想されます。
call_usermodehelper() を含むコードを使用する場合、 UMH_* 定数を使用するように修正されているかどうか確認するようにしてください。

一例として、 DRBD モジュールでは call_usermodehelper() でハードコードされた整数を指定していたため、バグ報告が出ています。
https://bugs.launchpad.net/ubuntu/+source/drbd8/+bug/1000355

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

2012年05月13日

Thunderbird でメールが突然消えたときにチェックすること

Linux にあまり関係ない話ですが、 Windows 版だけでなく Linux 版でも再現できるバグだったので、ここに載せておきます。

Thunderbird で受信したメールを整理しようとしてフォルダを作成していた時に、 Thunderbird では受信したメールを保存するフォルダの名前が「受信トレイ」と表示されていたので、「それなら Inbox という名前のフォルダを作成しても大丈夫だろう。もし駄目ならエラーメッセージが表示されて作成できないようになっているだろうから。」と思って、 Inbox というフォルダ名を指定したところ、既に存在する Inbox フォルダの内容が消滅してしまうという恐ろしいバグを踏んでしまいました。(証拠動画: http://www.youtube.com/watch?v=No3lyZNk9Hc

https://bugzilla.mozilla.org/show_bug.cgi?id=749909 にて進行中ですが、その中にナレッジベースへのリンクが登場したので、貼っておきます。

http://kb.mozillazine.org/Disappearing_mail

こういう情報は事前に知っておかないと間に合わないでしょうから・・・今回のバグには無力そうな気がしますが・・・。

posted by 熊猫さくら at 20:11| Comment(0) | TrackBack(0) | Linux

2012年05月02日

tail -f が機能しない時にチェックすること

近頃のディストリビューションで採用されているバージョンの tail コマンドは inotify を使っているため、環境によっては tail -f が希望通りに機能しないことがあるようです。 Ubuntu 12.04 の LiveCD から tail -f を試してみたのですが、動きませんでした。

# tail -f /var/log/tomoyo/reject_000.txt /var/log/tomoyo/reject_001.txt /var/log/tomoyo/reject_002.txt /var/log/tomoyo/reject_003.txt

strace で確認すると、特定のファイルディスクリプタの読み込みでブロックしていることが判ります。

# strace -p `pidof tail`
Process 4418 attached - interrupt to quit
read(7,^C <unfinished ...>
Process 4418 detached

ls で確認すると、そのファイルとは anon_inode:inotify であることが判ります。

# ls -l /proc/`pidof tail`/fd/
total 0
lrwx------ 1 root root 64 May 2 11:40 0 -> /dev/pts/0
lrwx------ 1 root root 64 May 2 11:40 1 -> /dev/pts/0
lrwx------ 1 root root 64 May 2 11:40 2 -> /dev/pts/0
lr-x------ 1 root root 64 May 2 11:40 3 -> /var/log/tomoyo/reject_000.log
lr-x------ 1 root root 64 May 2 11:40 4 -> /var/log/tomoyo/reject_001.log
lr-x------ 1 root root 64 May 2 11:40 5 -> /var/log/tomoyo/reject_002.log
lr-x------ 1 root root 64 May 2 11:41 6 -> /var/log/tomoyo/reject_003.log
lr-x------ 1 root root 64 May 2 11:41 7 -> anon_inode:inotify

inotify を使わせないようにするには、 ---disable-inotify という隠しオプションを使います。 - が3つ連続していることに注意してください。

# tail ---disable-inotify -f /var/log/tomoyo/reject_000.txt /var/log/tomoyo/reject_001.txt /var/log/tomoyo/reject_002.txt /var/log/tomoyo/reject_003.txt

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=583198

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

2012年04月22日

メモ: EOL した CentOS 4 用の yum 設定

CentOS 4 は EOL を迎えたわけですが、既にミラーサーバ上から消滅しているので、 yum 設定の更新が必要です。

# yum -y update
Setting up Update Process
Setting up repositories
not using ftp, http[s], or file for repos, skipping - 4 is not a valid release or hasnt been released yet
Cannot find a valid baseurl for repo: update
Error: Cannot find a valid baseurl for repo: update

具体的には、 baseurl 行にサーバとして vault.centos.org を指定します。

# sed -i -e 's/^mirrorlist=/#mirrorlist=/' -e 's/^#baseurl=/baseurl=/' -e 's@mirror.centos.org/centos@vault.centos.org@' -e 's/$releasever/4.9/' -- /etc/yum.repos.d/CentOS-Base.repo
posted by 熊猫さくら at 15:57| Comment(0) | TrackBack(0) | Linux

2012年04月17日

ベンチマーク測定に Debian/Ubuntu の lmbench/3.0-a9-1 を使用する場合の注意点

最初の報告から1ヶ月経ったけどまだ何の反応も無いので、犠牲者をこれ以上増やさないようにするために、先に周知します。

lmbench パッケージには、プログラム実行に要する遅延時間を測定する lat_proc というプログラムが入っていますが、 Debian/Ubuntu の lmbench-3.0-a9 をパッケージでインストールした場合には正しい結果が得られません。

これは、存在しない /var/tmp/lmbench/hello というプログラムを lat_proc が実行しようとするため、 execve() が失敗してしまうことが原因です。(失敗してもエラーメッセージ1つ出さないという作りはどうかと思いますが。(汗))

TOMOYO で解析すると、 sh -c を実行しているのに hello プログラムのためのドメインが作成されていないことが確認できます。

   43:  0     /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmbench
   44:  0         /bin/cp
   45:  0         /bin/date
   46:  0         /bin/hostname
   47:  0         /bin/mkdir
   48:  0         /bin/mount
   49:  0         /bin/netstat
   50:  0         /bin/rm
   51:  0         /bin/sleep
   52:  0         /bin/sync
   53:  0         /bin/tar
   54:  0         /bin/uname
   55:  0         /sbin/ifconfig
   56:  0         /usr/bin/awk
   57:  0         /usr/bin/expr
   58:  0         /usr/bin/touch
   59:  0         /usr/bin/uptime
   60:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_file_rd
   61:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_mem
   62:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_mmap_rd
   63:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_pipe
   64:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_tcp
   65:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/bw_unix
   66:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_connect
   67:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_ctx
   68:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_fs
   69:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_http
   70:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_mmap
   71:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_pagefault
   72:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_pipe
   73:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_proc
   74:  0             /bin/sh
                          *** ↑ hello プログラムのドメインが存在しない ***
   75:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_rpc
   76:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_select
   77:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_sig
   78:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_syscall
   79:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_tcp
   80:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_udp
   81:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lat_unix
   82:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmdd
   83:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/lmhttp
   84:  0         /usr/lib/lmbench/bin/i686-pc-linux-gnu/msleep
   85:  0         /usr/lib/lmbench/scripts/os

lmbench-3.0-a9.tgz から作成すると正しい結果が得られていることが判ります。

  182:  0     /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmbench
  183:  0         /bin/cp
  184:  0         /bin/date
  185:  0         /bin/hostname
  186:  0         /bin/mkdir
  187:  0         /bin/mount
  188:  0         /bin/netstat
  189:  0         /bin/rm
  190:  0         /bin/sleep
  191:  0         /bin/sync
  192:  0         /bin/tar
  193:  0         /bin/uname
  194:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_file_rd
  195:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_mem
  196:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_mmap_rd
  197:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_pipe
  198:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_tcp
  199:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/bw_unix
  200:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_connect
  201:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_ctx
  202:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_fs
  203:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_http
  204:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_mmap
  205:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_pagefault
  206:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_pipe
  207:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_proc
  208:  0             /bin/sh
  209:  0                 /tmp/hello
                          *** ↑ hello プログラムのドメインが作られている ***
  210:  0             /tmp/hello
  211:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_rpc
  212:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_select
  213:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_sig
  214:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_syscall
  215:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_tcp
  216:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_udp
  217:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lat_unix
  218:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmdd
  219:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/lmhttp
  220:  0         /root/lmbench-3.0-a9/bin/i686-pc-linux-gnu/msleep
  221:  0         /sbin/ifconfig
  222:  0         /usr/bin/awk
  223:  0         /usr/bin/expr
  224:  0         /usr/bin/touch
  225:  0         /usr/bin/uptime

ということで、 lmbench/3.0-a9-1 を使う場合、事前に hello プログラムを /var/tmp/lmbench/hello にコピーするか、あるいは、 lmbench-3.0-a9.tgz からコンパイルしたものを使用するようにしてください。(これ以外にも不具合があるかもしれないので、修正が完了するまでは lmbench-3.0-a9.tgz からコンパイルする方がおススメです。)

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666072

posted by 熊猫さくら at 20:29| Comment(0) | TrackBack(0) | Linux