============================================================================= FreeBSD-SA-01:65 Security Advisory FreeBSD, Inc. トピック: libgtop_server のバッファオーバーフロー (Buffer overflow in libgtop_server) カテゴリ: ports モジュール: libgtop 告知日: 2001-12-11 クレジット: Flavio Veloso 影響範囲: 修正日以前の ports コレクション 修正日: 2001-11-29 15:06:19 UTC FreeBSD 固有: NO I. 背景 - Background libgtop is a library for gtop, the GNOME version of the top command. The top command is a tool to display and update information about the top cpu processes. libgtop は gtop(GNOME バージョンの top コマンド)用のライブラリです。 top コマンドは、CPU 使用率が上位のプロセスの情報を定期的に更新して表示 するツールです。 II. 問題の詳細 - Problem Description The libgtop port versions prior to libgtop-1.0.12_1 contain a stack buffer overflow in libgtop_server, allowing an arbitrary amount of data from the client application (assumed to be gtop) to be read into a fixed-sized buffer. A local attacker can exploit this bug to cause libgtop_server to execute arbitrary code. libgtop_server runs with increased privileges as a member of group kmem, which allows it to read kernel memory (but not write it). A process with the ability to read from kernel memory can monitor privileged data such as network traffic, disk buffers and terminal activity, and may be able to leverage this to obtain further privileges on the local system or on other systems, including root privileges. libgtop-1.0.12_1 以前の libgtop の port には、ligbtop_server ライブ ラリに、スタックバッファオーバーフローのバグがあります。これは、gtop クライアントを偽装したアプリケーションからの任意長のデータを、固定長の バッファに読み込んでしまうというものです。ローカルの攻撃者は、このバグ を利用して libgtop_server ライブラリに任意のコードを実行させてしまう ことができます。libgtop_server は、カーネルのメモリを読むことができる (書き込むことはできません)権限を持った kmem グループ権限で動作します。 カーネルのメモリを自由に読むことのできるプロセスは、ネットワークトラ フィックやディスクの I/O バッファ、ターミナルで行われる操作などをモニタ することができます。このようにして得られた情報は、root 権限のようなより 高い権限を獲得するために利用される可能性があります。 The libgtop port is not installed by default, nor is it "part of FreeBSD" as such: it is part of the FreeBSD ports collection, which contains over 6000 third-party applications in a ready-to-install format. The ports collection shipped with FreeBSD 4.4 contains this problem since it was discovered after the release. libgtop の port はデフォルトではインストールされていませんし、"FreeBSD の一部" でもありません。これは、6000 以上のサードパーティ製のアプリ ケーションをすぐにインストールできる形で収録した FreeBSD Ports Collection の一部です。FreeBSD 4.4 のリリース後にこのバグが発見されたので、FreeBSD 4.4 と一緒にリリースされた ports コレクションにはこのバグがあります。 FreeBSD makes no claim about the security of these third-party applications, although an effort is underway to provide a security audit of the most security-critical ports. FreeBSD は、このようなサードパーティ製のアプリケーションのセキュリ ティについて、何か主張するということはありません。しかし、システムの セキュリティに大きな影響を与える ports については、セキュリティ監査を 提供するよう努力を続けています。 III. 影響範囲 - Impact A successful exploit of this stack buffer overflow would allow an attacker arbitrary access to kernel memory, possibly acquiring information allowing further increases in privileges. このスタックバッファオーバーフローを利用した攻撃が成功した場合、 攻撃者はカーネルのメモリ自由にアクセスできるようになり、権限を さらに昇格するために利用できる情報を入手する可能性があります。 No exploit is known to exist at this time, and it is not known whether this buffer overflow is exploitable even in theory. In any case, local access to the machine on which libgtop_server is running is required to attempt an attack. 現在のところ、このバッファオーバーフローを利用した exploit の存在は 知られていませんし、理論的に可能かどうかもわかっていません。いずれに せよ、攻撃するためには libgtop_server が動作しているマシンにローカル にアクセスできる必要があります。 IV. 回避方法 - Workaround 1) Deinstall the libgtop port/package if you have it installed. 1) libgtop の port や package をインストールしている場合は、これを 削除します。 OR または、 2) Remove the setgid bit from the libgtop_server executable by executing the following command as root: 2) root で以下のコマンドを実行し、libgtop_server プログラムの setgid ビットをオフにします。 # chmod g-s `which libgtop_server` V. 解決法 - Solution 1) Upgrade your entire ports collection and rebuild the port. 1) ports コレクション全体をアップグレードし、libgtop の port を リビルドします。 2) Deinstall the old package and install a new package dated after the correction date, obtained from the following directories: 2) 古い package をアンインストールし、以下の場所から入手した修正日 以降の新しい package をインストールします。 [i386] ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/devel/libgtop-1.0.12_1.tar.gz ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/devel/libgtop-1.0.12_1.tar.gz [alpha] Packages are not automatically generated for the alpha architecture at this time due to lack of build resources. パッケージをビルドするためのリソースが不足しているため、現時点では alpha アーキテクチャ用パッケージの自動生成はしていません。 NOTE: It may be several days before updated packages are available. Be sure to check the file creation date on the package, because the version number of the software has not changed. 注意: アップデートされたパッケージが利用できるようになるまで、何日か かかるかもしれません。ソフトウェアのバージョンは変わっていないので、 パッケージの生成日を確認するようにしてください。 3) Download a new port skeleton for the libgtop port from: 3) 以下の場所から、libgtop 用の新しい port スケルトンをダウンロードします。 http://www.freebsd.org/ports/ and use it to rebuild the port. そして、それを使って port をリビルドします。 4) Use the portcheckout utility to automate option (3) above. The portcheckout port is available in /usr/ports/devel/portcheckout or the package can be obtained from: 4) (3) で示した作業を自動化する portcheckout ユーティリティを使って ください。portcheckout の port は /usr/ports/devel/portcheckout で 利用できるほか、以下の場所から入手することもできます: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/devel/portcheckout-2.0.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/devel/portcheckout-2.0.tgz VI. 修正の詳細 - Correction details The following list contains the revision numbers of each file that was corrected in the FreeBSD ports collection. 以下は FreeBSD ports collection で修正されたファイルそれぞれのリビジョン 番号のリストです。 Path Revision - ------------------------------------------------------------------------- ports/devel/libgtop/Makefile 1.45 ports/devel/libgtop/files/patch-src::daemon::gnuserv.c 1.1 - ------------------------------------------------------------------------- VII. 参考文献 - References