FreeBSD セキュリティ勧告 日本語版 ============================================================================= FreeBSD-SA-03:08.realpath (2003-08-03) * Single byte buffer overflow in realpath(3) ============================================================================= このメールは, announce-jp に流れた Subject: ANNOUNCE: FreeBSD Security Advisory FreeBSD-SA-03:08.realpath [REVISED] From: FreeBSD Security Advisories Date: Tue, 5 Aug 2003 05:02:39 -0700 Message-Id: <200308051202.h75C2dqp072226@freefall.freebsd.org> X-Sequence: announce-jp 1157 を日本語訳したものです。 原文は PGP 署名されていますが、この日本語訳は PGP 署名されていません。 修正パッチ等の内容が改ざんされていないことを確認するために PGP 署名の チェックを行なうには、原文を参照してください。 日本語訳およびミラーサイト利用の詳細については、文末の「A. FreeBSD セキュリティ勧告 日本語版について」をご覧ください。 [翻訳者: 佐藤 広生 ] --(ここから) ============================================================================= FreeBSD-SA-03:08.realpath Security Advisory The FreeBSD Project トピック: realpath(3) における 1 バイトのバッファオーバフロー問題 (Single byte buffer overflow in realpath(3)) 分類: core モジュール: libc 告知日: 2003-08-03 クレジット: Janusz Niewiadomski , Wojciech Purczynski , CERT/CC 影響範囲: 4.8-RELEASE および 5.0-RELEASE を含む、 すべての FreeBSD リリース 2003 年 5 月 22 日 17 時 11 分 44 秒 (世界協定時) より 前の FreeBSD 4-STABLE 修正日: 2003-08-03 23:46:24 UTC (RELENG_5_0) 2003-08-03 23:43:43 UTC (RELENG_4_8) 2003-08-03 23:44:12 UTC (RELENG_4_7) 2003-08-03 23:44:36 UTC (RELENG_4_6) 2003-08-03 23:44:56 UTC (RELENG_4_5) 2003-08-03 23:45:41 UTC (RELENG_4_4) 2003-08-03 23:46:03 UTC (RELENG_4_3) 2003-08-03 23:47:39 UTC (RELENG_3) FreeBSD に固有か: NO 0. 改訂履歴 - Revision History v1.0 2003-08-03 初版公開 v1.1 2003-08-04 lukemftpd に関する情報を更新 I. 背景 - Background realpath(3) 関数は、余分な ``/'' 文字、``/./'' や ``/../'' を 使った参照、シンボリックリンクによる参照などが含まれるパス名を正規化し、 一意な絶対パス名を決定するために使用されます。realpath(3) 関数は、 FreeBSD の標準 C ライブラリに含まれている関数です。 II. 問題の詳細 - Problem Description realpath(3) の中の解決したパス名の長さを計算する部分に、 「一つ違い(off-by-one)」エラーが存在します。そのため、解決したパス名が ちょうど 1024 文字の長さで、最低でも 2 個のディレクトリ区切り文字を 含んでいた場合、realpath(3) に渡されたバッファには、NUL 文字の 1 バイト分だけ余計に書き込まれてしまいます。 III. 影響範囲 - Impact realpath(3) を使っているアプリケーションに、サービス妨害攻撃や リモートからのコードの実行、高い権限の不正使用などが可能なセキュリティ上 の弱点が存在する「可能性が」あります。個々のアプリケーションにおける 影響範囲は、realpath 関数に渡されるパス名がどこから供給されているか (訳注: 信頼できない外部からか、信頼できる設定ファイルからか、など)、 realpath 関数の出力バッファがスタック上でどこに位置しているか、 そのアプリケーションがどのアーキテクチャで動作しているかといった 要因に強く依存しています。 FreeBSD ベースシステムには、realpath(3) を使っているアプリケーションが いくつか含まれています。悪影響が考えられるのは、次の 2 個の アプリケーションです。 (1) FTP サーバの実装のひとつである lukemftpd(8) は、MLST と MLSD コマンドの処理に realpath(3) を使用しています。この弱点は 悪用可能であり、スーパユーザ権限でコードを実行できる危険性があります。 lukemftpd(8) は、4.7-RELEASE および、2002 年 1 月 20 日 21 時 13 分 33 秒から 2002 年 11 月 12 日 17 時 32 分 47 秒 (いずれも世界協定時) の 間の 4-STABLE において、デフォルトでインストールされていました (ただし、 デフォルトでは有効になっていません)。これ以外のリリースでは、デフォルトで 構築もインストールもされません。 (4.7-RELEASE に添付されている /etc/inetd.conf の例のように) lukemftpd に `-r' オプションが指定されている場合、このセキュリティ上の弱点を 悪用することで、(スーパユーザ権限ではなく) 認証を受けたユーザの権限で コードを実行することが可能になります。 (2) OpenSSH に含まれる sftp-server(8) は、chdir コマンドの処理に realpath(3) を使っています。この弱点は悪用可能であり、認証を受けた ユーザの権限でコードを実行できる危険性があります。 いずれの場合も realpath(3) の弱点を悪用して、正しく認証を受けた ユーザの権限で任意のコードを実行できる可能性があります。 ただしこれは、シェルアクセスを提供しないといった「閉鎖的」な サーバ上でのみ、実際の問題となると思われます。 次にまとめたのは、4.8-RELEASE の時点の FreeBSD Ports Collection で realpath(3) を使っていると思われるアプリケーションのリストです。 ただし、これらのアプリケーションは監査を受けたわけではなく、実際に 弱点が存在するかどうかは未確認です。FreeBSD Ports Collection には この他にも、4.8-RELEASE 以降に追加されたアプリケーションや、 静的にリンクされたアプリケーションなど、realpath(3) を使用する アプリケーションが存在するかも知れません。 BitchX-1.0c19_1 Mowitz-0.2.1_1 XFree86-clients-4.3.0_1 abcache-0.14 aim-1.5.234 analog-5.24,1 anjuta-1.0.1_1 aolserver-3.4.2 argus-2.0.5 arm-rtems-gdb-5.2_1 avr-gdb-5.2.1 ccache-2.1.1 cdparanoia-3.9.8_4 cfengine-1.6.3_4 cfengine2-2.0.3 cmake-1.4.7 comserv-1.4.3 criticalmass-0.97 dedit-0.6.2.3_1 drweb_postfix-4.29.10a drweb-4.29.2 drweb_sendmail-4.29.10a edonkey-gui-gtk-0.5.0 enca-0.10.7 epic4-1.0.1_2 evolution-1.2.2_1 exim-3.36_1 exim-4.12_5 exim-ldap-4.12_5 exim-ldap2-4.12_5 exim-mysql-4.12_5 exim-postgresql-4.12_5 fam-2.6.9_2 fastdep-0.15 feh-1.2.4_1 ferite-0.99.6 fileutils-4.1_1 finfo-0.1 firebird-1.0.2 firebird-1.0.r2 frontpage-5.0.2.2623_1 galeon-1.2.8 galeon2-1.3.2_1 gdb-5.3_20030311 gdb-5.2.1_1 gdm2-2.4.1.3 gecc-20021119 gentoo-0.11.34 gkrellmvolume-2.1.7 gltron-0.61 global-4.5.1 gnat-3.15p gnomelibs-1.4.2_1 gprolog-1.2.16 gracula-3.0 gringotts-1.2.3 gtranslator-0.43_1 gvd-1.2.5 hercules-2.16.5 hte-0.7.0 hugs98-200211 i386-rtems-gdb-5.2_1 i960-rtems-gdb-5.2_1 installwatch-0.5.6 ivtools-1.0.6 ja-epic4-1.0.1_2 ja-gnomelibs-1.4.2_1 ja-msdosfs-20001027 ja-samba-2.2.7a.j1.1_1 kdebase-3.1_1 kdelibs-3.1 kermit-8.0.206 ko-BitchX-1.0c16_3 ko-msdosfs-20001027 leocad-0.73 libfpx-1.2.0.4_1 libgnomeui-2.2.0.1 libpdel-0.3.4 librep-0.16.1_1 linux-beonex-0.8.1 linux-divxplayer-0.2.0 linux-edonkey-gui-gtk-0.2.0.a.2002.02.22 linux-gnomelibs-1.2.8_2 linux-mozilla-1.2 linux-netscape-communicator-4.8 linux-netscape-navigator-4.8 linux-phoenix-0.3 linux_base-6.1_4 linux_base-7.1_2 lsh-1.5.1 lukemftpd-1.1_1 m68k-rtems-gdb-5.2_1 mips-rtems-gdb-5.2_1 mod_php4-4.3.1 moscow_ml-2.00_1 mozilla-1.0.2_1 mozilla-1.2.1_1,2 mozilla-1.2.1_2 mozilla-1.3b,1 mozilla-1.3b mozilla-embedded-1.0.2_1 mozilla-embedded-1.2.1_1,2 mozilla-embedded-1.3b,1 msyslog-1.08f_1 netraider-0.0.2 openag-1.1.1_1 openssh-portable-3.5p1_1 openssh-3.5 p5-PPerl-0.23 paragui-1.0.2_2 powerpc-rtems-gdb-5.2_1 psim-freebsd-5.2.1 ptypes-1.7.4 pure-ftpd-1.0.14 qiv-1.8 readlink-20010616 reed-5.4 rox-1.3.6_1 rox-session-0.1.18_1 rpl-1.4.0 rpm-3.0.6_6 samba-2.2.8 samba-3.0a20 scrollkeeper-0.3.11_8,1 sh-rtems-gdb-5.2_1 sharity-light-1.2_1 siag-3.4.10 skipstone-0.8.3 sparc-rtems-gdb-5.2_1 squeak-2.7 squeak-3.2 swarm-2.1.1 tcl-8.2.3_2 tcl-8.3.5 tcl-8.4.1,1 tcl-thread-8.1.b1 teTeX-2.0.2_1 wine-2003.02.19 wml-2.0.8 worker-2.7.0 xbubble-0.2 xerces-c2-2.1.0_1 xerces_c-1.7.0 xnview-1.50 xscreensaver-gnome-4.08 xscreensaver-4.08 xworld-2.0 yencode-0.46_1 zh-cle_base-0.9p1 zh-tcl-8.3.0 zh-tw-BitchX-1.0c19_3 zh-ve-1.0 zh-xemacs-20.4_1 IV. 回避方法 - Workaround 一般的に適用できるような回避方法はありません。 OpenSSH の sftp-server(8) は、/etc/ssh/sshd_config にある 次の行の先頭に `#' を追加してコメントアウトすることで、 無効にすることができます。 Subsystem sftp /usr/libexec/sftp-server lukemftpd(8) は、デフォルトの ftpd(8) に置き換えることで 問題を回避することが可能です。 V. 解決策 - Solution (訳注: 次のいずれか一つに従ってください。) 1) 弱点を持った FreeBSD システムを、最新の 4,8-STABLE か、 もしくは修正日以降の RELENG_5_1 (5.1-RELEASE), RELENG_4_8 (4.8-RELEASE-p1), RELENG_4_7 (4.7-RELEASE-p11) セキュリティブランチのいずれかにアップグレードする。 2) 現在のシステムに修正パッチを適用する。 a) 以下の場所から修正パッチをダウンロードし、PGP ユーティリティを使って PGP 署名を検証します。この修正パッチは、FreeBSD 5.0-RELEASE および FreeBSD 4.x のすべてのリリースに適用可能なことが確認されているものです。 # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:08/realpath.patch # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:08/realpath.patch.asc b) 修正パッチを適用します。 # cd /usr/src # patch < /path/to/patch (訳注: /path/to/patch の部分は修正パッチのパス名に置き換えてください) c) に書かれている 手順にしたがってシステムを再構築します。 注意: (Ports Collection に含まれるものや、サードパーティ製のものなどの) ベースシステムに含まれておらす、かつ、静的にリンクされた アプリケーションは、すべて再構築しなければなりません。 更新されたライブラリが実際に使われるようにするためには、影響を受ける アプリケーションはすべて再起動する必要があります。システムの再起動は 必須ではありませんが、それがおそらく最も簡単な方法です。 VI. 修正の詳細 - Correction details FreeBSD において今回修正された各ファイルのリビジョン番号は、以下のとおりです。 ブランチ リビジョン パス名 - ------------------------------------------------------------------------- RELENG_3 src/lib/libc/stdlib/realpath.c 1.6.2.1 RELENG_4_3 src/UPDATING 1.73.2.28.2.32 src/lib/libc/stdlib/realpath.c 1.9.4.1 src/sys/conf/newvers.sh 1.44.2.14.2.22 RELENG_4_4 src/UPDATING 1.73.2.43.2.45 src/lib/libc/stdlib/realpath.c 1.9.6.1 src/sys/conf/newvers.sh 1.44.2.17.2.36 RELENG_4_5 src/UPDATING 1.73.2.50.2.44 src/lib/libc/stdlib/realpath.c 1.9.8.1 src/sys/conf/newvers.sh 1.44.2.20.2.28 RELENG_4_6 src/UPDATING 1.73.2.68.2.42 src/lib/libc/stdlib/realpath.c 1.9.10.1 src/sys/conf/newvers.sh 1.44.2.23.2.31 RELENG_4_7 src/UPDATING 1.73.2.74.2.14 src/lib/libc/stdlib/realpath.c 1.9.12.1 src/sys/conf/newvers.sh 1.44.2.26.2.13 RELENG_4_8 src/UPDATING 1.73.2.80.2.3 src/lib/libc/stdlib/realpath.c 1.9.14.1 src/sys/conf/newvers.sh 1.44.2.29.2.2 RELENG_5_0 src/UPDATING 1.229.2.14 src/lib/libc/stdlib/realpath.c 1.11.2.1 src/sys/conf/newvers.sh 1.48.2.9 - ------------------------------------------------------------------------- VII. 参考資料 - References A. FreeBSD セキュリティ勧告 日本語版について 日本語訳は FreeBSD 日本語ドキュメンテーションプロジェクト (doc-jp) が 参考のために提供するものです。過去の日本語版セキュリティ勧告は http://www.FreeBSD.org/ja/security/ にまとめられています。 ただし翻訳者および doc-jp は、その内容についていかなる保証も いたしませんのでご注意ください。日本語訳についてのご意見、ご要望、 お問い合わせ等は doc-jp@jp.FreeBSD.org までお願いします。 この勧告の中で紹介されている WWW サイト http://www.FreeBSD.org/ および FTP サイト ftp://ftp.FreeBSD.org/ には, 日本のミラーサイトが存在します。 ネットワークの混雑を緩和するため、まずはミラーサイトの利用を 考慮するようお願いします。 日本のミラーサイトを利用するには、 http://www.FreeBSD.org/ を http://www.jp.FreeBSD.org/www.freebsd.org/ に、 ftp://ftp.FreeBSD.org/ を ftp://ftp.jp.FreeBSD.org/ に、 それぞれ置き換えてください。 他の地域を含むミラーサイトに関する詳細は http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html (英文) http://www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/mirrors.html (日本語訳) にまとめられています。 $hrs: announce-jp/FreeBSD-SA/03:08,v 1.7 2003/08/10 10:33:38 hrs Exp $