2006年05月18日 (木)

freshclam のパーミッション問題で投稿したいのだけれど…

エントリ「ClamXav における freshclam に suid パーミッションのセキュリティ問題」で紹介した問題が ClamXav のサポートフォーラムのトピック「Security Issue found with Clamxav 1.0.3h」でも取り上げられていますが、作者自身がこの問題を正しく把握していないので、何が問題でどうすればよいのかを説明したいのです。

でも英語が苦手なので書いてみた投稿が意図を伝えられるものかどうかいまいちわかりません。英語が得意な人、いかがでしょうか?


まず書きたいことを日本語で書いてみます。

この問題は ClamAV の問題というよりもむしろ ClamXav のために設定された ClamAV の問題です。ClamXav 利用下では freshclam のオーナが root になっています。そして freshclam には suid bit が付けられています。このため ClamXav のための freshclam はまずは root として動作します。root として動作するのでユーザに権限がないファイルの内容が表示されてしまうのです。

もし freshclam、cvd file 群、そして freshclam.log のオーナが "clamav" だったら、たとえ freshclam に suid bit が付いていてもこの問題は発生しません。そして任意のユーザが ClamXav を使ってウィルス定義を更新することもできます。

しかし私はそうすべきではないと考えています。なぜならばシステムに侵入したクラッカーが巧みにオプションを付けて偽の cvd ファイル群にアップデートしてしまう可能性があるからです。よりよい解決策は次のようなものだと考えます。

  1. freshclam に suid bit を付けない。
  2. ClamXav は管理者権限を確認した上で cvd ファイルのアップデートを行う。
  3. ClamXav は "sudo freshclam …" を実行する。

suid bit は可能な限り用いるべきではありません。

更にベストを狙うのなら freshclam をデーモンとしてシステムの起動時に稼働させるべきです。

This problem is a problem of ClamAV for ClamXav rather than the problem of ClamAV. On ClamXav, the owner of freshclam is root. And it has suid bit. Therefore freshclam for ClamXav runs as root from the beginning. The contents of a file unauthorized than the user is displayed because it runs as root.

If the owner of freshclam, cvd files and freshclam.log is "clamav", this problem is not caused even if freshclam has suid bit. And, any user can update the virus definition by using ClamXav.

However, I think that we should not do so. Because there is a possibility for the cracker that invaded the system to be able to put the option skillfully and to update to cvd files of the imitation. A better solution that I think about is as follows.

  1. Suid bit is not put up to freshclam.
  2. After confirming the manager authority, ClamXav updates cvd files.
  3. ClamXav executes "sudo freshclam ...".

Suid bit should not be used as much as possible.

In addition, the best solution is to start freshclam as a demon when the system boot.

実は解消できるのに、どうも作者も含めてこの問題を解消できないと思っているか解消するつもりがないようなんです。作者は ClamAV を改善すべきだと言っています。これは freshclam がオプション "--config-file" で指定した設定ファイルを読み取る段階では root として動作し、その後で clamav ユーザに降格するので、降格のタイミングが遅いのだという主張です。しかしながら、降格すべきユーザが clamav であることは設定ファイルに書かれるのが通常です。ですから降格するのは設定ファイルを読んだ後であって読む前ではありません。オプション "--user" によって事前に降格すべきユーザを指定できますが、それは設定ファイルに書かれていることを一時的に変更するのが意図であって恒常的に使用されることが意図されているものではありません。ですから作者の主張は的外れです。root で実行する権限を持たない管理者でないユーザも root 権限で freshclam を起動できるように設定してある(そして設定するようにアナウンスしている) ClamXav が問題なのです。

私が最初に示したい解法は、freshclam が root としてではなく clamav として最初から動作するように設定するものです。clamav はシステムアカウントではありますが特別な権限を持っているわけではありません。むしろ管理者アカウントでもないのでシステムに対しては弱い権限しか持っていません。これだけでこの問題が解消できます。そしてベターな解法として示したいのはもっと強固なものです。ウィルス定義の更新は全てのユーザに波及することなので管理者でなければできないようにするというものです。そしてベストな解法として示したいのはそういうシステムレベルの仕事はユーザにやらせるのではなくバックグラウンドで実行されるデーモンとして freshclam を使うことです。


Posted: 03:21    | Comment | Trackback


以下、類似エントリです。