[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NetBSD Security Advisory 2003-011: off-by-one error inrealpath(3)



佐藤@東京理科大学です。

 ごめんなさい、先週はちょっと忙しくて
 手が回ってませんでした。

 2003-010 と 2003-011 です。
 
 -011 は rev 1.10 ベースですが、いくつか typo が
 あるようなので、so@ に問い合わせ中です。

--
| 佐藤 広生@東京理科大学 <hrs@eos.ocn.ne.jp>
NetBSD セキュリティー勧告 日本語訳
=============================================================================
NetBSD Security Advisory 2003-010 (2003/08/04)
 * remote panic in OSI networking code
=============================================================================

 このメールは, netbsd-announce に流れた

  Subject: NetBSD Security Advisory 2003-010: remote panic in OSI networking code
  From: NetBSD Security Officer <security-officer@NetBSD.org>
  Date: Mon, 4 Aug 2003 14:12:47 -0400
  Message-Id: <20030804181247.GA21067@vex>

 を、www.NetBSD.ORG 翻訳プロジェクトが日本語訳したものです。

 原文は PGP 署名されていますが、この日本語訳は PGP 署名されていません。
 修正パッチ等の内容が改ざんされていないことを確認するために PGP 署名の
 チェックを行なうには、原文を参照してください。

------------------------------- ここから ------------------------------------


		 NetBSD Security Advisory 2003-010
		 =================================

トピック:	OSI ネットワークコードを使ってリモートからパニックを
		引き起こすことができる問題
		(remote panic in OSI networking code)

バージョン:	NetBSD-current:	2003 年 5 月 26 日より前のソース
		NetBSD 1.6.1:	影響あり
		NetBSD 1.6:	影響あり
		NetBSD-1.5.3:	影響あり
		NetBSD-1.5.2:	影響あり
		NetBSD-1.5.1:	影響あり
		NetBSD-1.5:	影響あり

影響範囲:	OSI ネットワークに接続されているシステムをリモートから
		クラッシュさせることが可能。
		(remote system crash possible on OSI connected systems)

修正日:		NetBSD-current:		2003 年 5 月 26 日
		NetBSD-1.6 branch:	2003 年 5 月 26 日 (1.6.2 は修正ずみ)
		NetBSD-1.5 branch:	2003 年 5 月 28 日


概要 - Abstract
===============

特殊な細工を施した OSI ネットワークパケットを送ることで、OSI ネットワークに
接続されたシステムをリモートからクラッシュさせることが可能です。


技術的な詳細 - Technical Details
================================

OSI ネットワークカーネル (sys/netiso) には、エラーが発生した際に、
OSI パケットの送出元にエラーを通知する関数が含まれています。この関数は
パケットヘッダー用の mbuf を用意するのですが、それを BSD のネットワーク
スタックに必要な "PKTHDR" mbuf を使うように変換する処理を、ずっと以前から
行なっていませんでした。

 訳注: パケットヘッダー情報は通常、mbuf チェーンの先頭にある mbuf の
       m_flags に M_PKTHDR を設定し、その mbuf に pkthdr 構造体という形で
       格納されます。

そうやって用意されたパケットをネットワークドライバが (mbuf チェーンの
先頭にある、pkthdr フィールドを含まない mbuf の不正な情報を使って)
送ろうとすると、pkthdr フィールドが存在しないことに起因する
パニック (カーネルが "options DEBUG" ありで構築されていた場合) や、
さまざまな形でのクラッシュが発生します。


回避方法と解決策 - Solutions and Workarounds
============================================

システムに弱点が存在するか確かめるには、次のようにします。

OSI は、あまり利用されないネットワークスタックです。したがって、
この勧告の問題はほとんどの NetBSD ユーザーには影響ないでしょう。
'ifconfig -a | grep iso' を実行した時に、iso アドレスが
設定されているインターフェースが表示されなければ、システムに弱点はありません。

勧告の冒頭に書かれている影響のあるバージョンのカーネルで、OSI アドレスを
使用するように設定されているものには、弱点が存在します。

回避方法:  OSI アドレスを設定しない、設定されている OSI アドレスを無効にする、
あるいは ``options OSI'' を付けないで構築したカーネルで起動してください。
いずれの方法でも、OSI を使った通信を無効にすることが可能です。

次に示す手順は、ソースツリーを更新してカーネルを再構築し、
新しいバージョンのカーネルをインストールすることで、カーネルを
アップグレードする方法を説明したものです。

* NetBSD-current:

	2003 年 5 月 25 日より前の NetBSD-current は、
	2003 年 5 月 26 日、もしくはそれ以降の NetBSD-current に
	アップグレードする必要があります。

	CVS ブランチ netbsd-current (別名 HEAD) において
	更新が必要なファイルは、次のとおりです。
		sys/netiso/clnp_er.c

	CVS を使ってファイルを更新し、カーネルを
	再構築・再インストールするには、次のコマンドを実行してください。

		% cd src
		% cvs update -d -P sys/netiso

		% cd sys/arch/ARCH/conf
		% config KERNCONFFILE
		% cd ../compile/KERNCONFFILE
		% make clean depend;make

		% su
		# cp netbsd /
		# reboot


* NetBSD 1.6, 1.6.1:

	NetBSD 1.6.1 のバイナリー配布物には、このセキュリティー上の弱点が
	含まれています。

	2003 年 5 月 25 日より前の NetBSD 1.6 のソースは、
	2003 年 5 月 26 日、もしくはそれ以降の NetBSD 1.6 のソースに
	アップグレードする必要があります。

	NetBSD 1.6.2 には、この弱点に対する修正が含まれる予定です。

	CVS ブランチ netbsd-1-6 において更新が必要なファイルは、
	次のとおりです。
		sys/netiso/clnp_er.c

	CVS を使ってファイルを更新し、カーネルを
	再構築・再インストールするには、次のコマンドを実行してください。

		% cd src
		% cvs update -d -P -r netbsd-1-6 sys/netiso

		% cd sys/arch/ARCH/conf
		% config KERNCONFFILE
		% cd ../compile/KERNCONFFILE
		% make clean depend;make

		% su
		# cp netbsd /
		# reboot

	もしくは、次の修正パッチ (オフセット誤差が表示されるかも知れません) を
	適用するという方法も有効です。
		ftp://ftp.NetBSD.org/pub/NetBSD/security/patches/SA2003-010-osi.patch

	修正パッチを適用するには、次のようにカーネルを
	再構築・再インストールして、再起動してください。

		# cd src
		# patch < /path/to/SA2003-010-osi.patch

		% cd sys/arch/ARCH/conf
		% config KERNCONFFILE
		% cd ../compile/KERNCONFFILE
		% make clean depend;make

		% su
		# cp netbsd /
		# reboot


* NetBSD 1.5, 1.5.1, 1.5.2, 1.5.3:

	NetBSD 1.5.3 のバイナリー配布物には、このセキュリティー上の弱点が
	含まれています。

	2003 年 5 月 27 日より前の NetBSD-1.5、NetBSD-1.5.1、
	NetBSD-1.5.2、NetBSD-1.5.3 のいずれかのソースを
	使っているシステムは、2003 年 5 月 28 日、もしくはそれ以降の
	NetBSD-1.5.* のソースにアップグレードする必要があります。

	CVS ブランチ netbsd-1-5 において更新が必要なファイルは、
	次のとおりです。
		sys/netiso/clnp_er.c

	CVS を使ってファイルを更新し、カーネルを
	再構築・再インストールするには、次のコマンドを実行してください。

		% cd src
		% cvs update -d -P -r netbsd-1-5 sys/netiso

		% cd sys/arch/ARCH/conf
		% config KERNCONFFILE
		% cd ../compile/KERNCONFFILE
		% make clean depend;make

		% su
		# cp netbsd /
		# reboot

	もしくは、次の修正パッチ (オフセット誤差が表示されるかも知れません) を
	適用するという方法も有効です。
		ftp://ftp.NetBSD.org/pub/NetBSD/security/patches/SA2003-010-osi.patch

	修正パッチを適用するには、次のようにカーネルを
	再構築・再インストールして、再起動してください。

		# cd src
		# patch < /path/to/SA2003-010-osi.patch

		% cd sys/arch/ARCH/conf
		% config KERNCONFFILE
		% cd ../compile/KERNCONFFILE
		% make clean depend;make

		% su
		# cp netbsd /
		# reboot


謝辞 - Thanks To
================

Ignatios Souvatzis 氏


改訂履歴 - Revision History
===========================

	2003-08-04	初版公開


詳細と参考資料 - More Information
=================================

新しい情報が判明した場合、セキュリティー勧告は更新されることがあります。
PGP 署名されたこの勧告の最新版は、次の場所から入手できます。
  ftp://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2003-010.txt.asc

NetBSD および NetBSD のセキュリティーに関する情報は、次の場所から入手できます。
http://www.NetBSD.org/
http://www.NetBSD.org/Security/


Copyright 2003, The NetBSD Foundation, Inc.  All Rights Reserved.
Redistribution permitted only in full, unmodified form.

$NetBSD: NetBSD-SA2003-010.txt,v 1.8 2003/08/04 16:02:47 david Exp $
NetBSD セキュリティー勧告 日本語訳
=============================================================================
NetBSD Security Advisory 2003-011 (2003/08/04)
 * off-by-one error in realpath(3)
=============================================================================

 このメールは, netbsd-announce に流れた

  Subject: NetBSD Security Advisory 2003-011: off-by-one error in realpath(3)
  From: NetBSD Security Officer <security-officer@NetBSD.org>
  Date: Mon, 4 Aug 2003 14:16:30 -0400
  Message-Id: <20030804181630.GG21067@vex>

 を、www.NetBSD.ORG 翻訳プロジェクトが日本語訳したものです。
 (日本語訳は NetBSD-SA2003-011.txt,v 1.10 に基づいています)。

 原文は PGP 署名されていますが、この日本語訳は PGP 署名されていません。
 修正パッチ等の内容が改ざんされていないことを確認するために PGP 署名の
 チェックを行なうには、原文を参照してください。


------------------------------- ここから ------------------------------------



		 NetBSD Security Advisory 2003-011
		 =================================

トピック:	realpath(3) における「一つ違い (off-by-one)」エラー
		(off-by-one error in realpath(3))

バージョン:	NetBSD-current:	2003 年 8 月 4 日より前のソース
		NetBSD 1.6.1:	影響あり
		NetBSD 1.6:	影響あり
		NetBSD-1.5.3:	影響あり
		NetBSD-1.5.2:	影響あり
		NetBSD-1.5.1:	影響あり
		NetBSD-1.5:	影響あり

影響範囲:	リモートからのバッファーオーバーランおよび、
		root 権限の不正使用の可能性
		(Possible remote buffer overrun/root compromise)

修正日:		NetBSD-current:		2003 年 8 月 4 日
		NetBSD-1.6 branch:	2003 年 8 月 5 日 (1.6.2 は修正ずみ)
		NetBSD-1.5 branch:	2003 年 8 月 6 日


概要 - Abstract
===============

ライブラリー関数 realpath(3) に、1 バイトのバッファーオーバーラン
を引き起こす可能性のある、文字列操作の誤りが含まれていました。
realpath(3) は ftpd(8) などの重要性の高いネットワークデーモンで
使われているため、この弱点はリモートから悪用できる危険性があります。

注意: wu-ftpd サーバー (NetBSD のベースシステムには含まれていません) の
      配布物にある realpath(3) に由来する関数には、同じエラーが
      含まれています。この問題に関する情報は、ここ数日の間に
      公開されており、wu-ftpd に対する悪用コードも公開されています。
      おそらく、他のサービス用の悪用コードも存在するでしょう。
      もし影響を受けるサービスを提供しているなら、至急修正パッチを
      適用することをおすすめします。


技術的な詳細 - Technical Details
================================

http://www.kb.cert.org/vuls/id/743092

NetBSD ベースシステムにおいて、realpath(3) を使っているバイナリーは
次のとおりです。

/bin/systrace
/usr/libexec/ftpd (*)
/sbin/mount
/sbin/umount
/usr/sbin/mountd (*)
/usr/bin/ssh
/usr/sbin/sshd (*)
/usr/libexec/sftp-server (*)
/usr/sbin/bootpd (*)

(*) という印のあるバイナリーはネットワークインターフェースを
listen するため、弱点をリモートから悪用することが可能です。


回避方法と解決策 - Solutions and Workarounds
============================================

この弱点を修正するには、libc をアップグレードする必要があります。

次に示す手順は、ソースツリーを更新して libc バイナリーを再構築し、
新しいバージョンの libc をインストールすることで、libc を
アップグレードする方法を説明したものです。

ただし、次にあげるような静的にリンクされたバイナリーもすべて、
再構築しなければならないことに注意してください。

- - 1.5, 1.6 ベースのシステムにおける、/sbin および /bin 以下にあるバイナリー
- - NetBSD-current システムにおける、/rescue 以下にあるバイナリー
- - pkgsrc を使って構築した、静的にリンクされたバイナリー

また、libc をアップグレードしてからマシンを再起動しない場合は、
実行中のデーモンを再起動する必要があります。

* NetBSD-current:

	2003 年 8 月 3 日より前の NetBSD-current は、
	2003 年 8 月 4 日、もしくはそれ以降の NetBSD-current に
	アップグレードする必要があります。

	CVS ブランチ netbsd-current (別名 HEAD) において
	更新が必要なファイルは、次のとおりです。
		lib/libc/gen/getcwd.c

	CVS を使ってファイルを更新し、libc と rescue を
	再構築・再インストールするには、次のコマンドを実行してください。
		# cd src
		# cvs update -d -P lib/libc/gen/getcwd.c

		# cd lib/libc
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../../rescue
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		(この後システムを再起動するか、影響のあるデーモンを再起動する)

* NetBSD 1.6, 1.6.1:

	NetBSD 1.6 および NetBSD 1.6.1 のバイナリー配布物には、この
	セキュリティー上の弱点が含まれています。

	2003 年 8 月 4 日より前の NetBSD 1.6 のソースは、
	2003 年 8 月 5 日、もしくはそれ以降の NetBSD 1.6 のソースに
	アップグレードする必要があります。

	NetBSD 1.6.2 には、この弱点に対する修正が含まれる予定です。

	CVS ブランチ netbsd-1-6 において更新が必要なファイルは、
	次のとおりです。
		lib/libc/gen/getcwd.c

	CVS を使ってファイルを更新し、libc と静的リンクされたバイナリーを
	再構築・再インストールするには、次のコマンドを実行してください。

		# cd src
		# cvs update -d -P -r netbsd-1-6 lib/libc/gen/getcwd.c

		# cd lib/libc
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../../sbin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../bin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		(この後システムを再起動するか、影響のあるデーモンを再起動する)

	もしくは、次の修正パッチ (オフセット誤差が表示されるかも知れません) を
	適用するという方法も有効です。
		ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-011-realpath.patch

	修正パッチを適用するには、次のように libc と静的リンクされたバイナリーを
	再構築・再インストールして、再起動してください。

		# cd src
		# patch < /path/to/SA2003-011-realpath.patch

		# cd lib/libc
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../../sbin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../bin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		(この後システムを再起動するか、影響のあるデーモンを再起動する)


	* バイナリーパッチ

	バイナリーパッチを適用するには、次の手順を行ないます。
	ARCH の部分は、あなたが実行している NetBSD のアーキテクチャー
	(たとえば i386 など) に置き換えてください。

	ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-011-realpath/netbsd-1-6/ARCH-realpath.tgz
	cd / && tar xzvpf /path/to/ARCH-realpath.tgz

	この tar ファイルは、次のファイルの新しいものを展開します。
		/usr/lib/libc.so.12.83.2
		/usr/lib/libc.so.12 (libc.so.12.83.2 へのシンボリックリンク)
		/usr/lib/libc.a
		/usr/lib/libc_p.a
		/usr/lib/libc_pic.a
		/sbin/mount
		/sbin/mountd

	この後、この新しい libc を使うようにシステムを再起動するか、
	影響のあるデーモンを再起動します。その場合も、古い libc と
	静的リンクされているバイナリーをすべて再構築しなければならない
	ことに注意してください。
	

* NetBSD 1.5, 1.5.1, 1.5.2, 1.5.3:

	NetBSD 1.5, NetBSD 1.5.1, NetBSD 1.5.2, NetBSD 1.5.3 の
	バイナリー配布物には、このセキュリティー上の弱点が含まれています。

	2003 年 8 月 5 日より前の NetBSD 1.5 のソースは、
	2003 年 8 月 6 日、もしくはそれ以降の NetBSD 1.5 のソースに
	アップグレードする必要があります。

	CVS ブランチ netbsd-1-5 において更新が必要なファイルは、
	次のとおりです。
		lib/libc/gen/getcwd.c

	CVS を使ってファイルを更新し、libc と静的リンクされたバイナリーを
	再構築・再インストールするには、次のコマンドを実行してください。

		# cd src
		# cvs update -d -P -r netbsd-1-5 lib/libc/gen/getcwd.c

		# cd lib/libc
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../../sbin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../bin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		(この後システムを再起動するか、影響のあるデーモンを再起動する)

	もしくは、次の修正パッチ (オフセット誤差が表示されるかも知れません) を
	適用するという方法も有効です。
		ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-011-realpath.patch

	修正パッチを適用するには、次のように libc と静的リンクされたバイナリーを
	再構築・再インストールして、再起動してください。

		# cd src
		# patch < /path/to/SA2003-011-realpath.patch

		# cd lib/libc
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../../sbin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		# cd ../bin
		# make USETOOLS=no cleandir dependall
		# make USETOOLS=no install

		(この後システムを再起動するか、影響のあるデーモンを再起動する)


謝辞 - Thanks To
================

CERT


改訂履歴 - Revision History
===========================

	2003-08-04	初版公開
	2003-08-06	バイナリーパッチの追加


詳細と参考資料 - More Information
=================================

新しい情報が判明した場合、セキュリティー勧告は更新されることがあります。
PGP 署名されたこの勧告の最新版は、次の場所から入手できます。
  ftp://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2003-011.txt.asc

NetBSD および NetBSD のセキュリティーに関する情報は、次の場所から入手できます。
http://www.NetBSD.org/
http://www.NetBSD.org/Security/


Copyright 2003, The NetBSD Foundation, Inc.  All Rights Reserved.
Redistribution permitted only in full, unmodified form.

$NetBSD: NetBSD-SA2003-011.txt,v 1.10 2003/08/08 09:29:01 itojun Exp $