NetBSD Security Advisory 2003-004 ================================= トピック: zlib の gzprintf() の書式文字列におけるセキュリティー上の弱点 (Format string vulnerability in zlib gzprintf()) バージョン: NetBSD-current: 2003 年 3 月 5 日より前のソース NetBSD 1.6: 影響あり NetBSD-1.5.3: 影響あり NetBSD-1.5.2: 影響あり NetBSD-1.5.1: 影響あり NetBSD-1.5: 影響あり pkgsrc: zlib-1.1.4nb1 より前の devel/zlib package は影響あり 影響範囲: gzprintf() 呼び出しているアプリケーションの権限を 不正に獲得できる (ただし、そのようなアプリケーションは ベースシステムに含まれていない)。 (Privilege escalation in applications call using gzprintf(). (There are none in the base system.)) 修正日: NetBSD-current: 2003 年 3 月 6 日 NetBSD-1.6 ブランチ: 2003 年 3 月 6 日 (1.6.1 は修正ずみ) NetBSD-1.5 ブランチ: 2003 年 3 月 6 日 pkgsrc devel/zlib: zlib-1.1.4nb1 で修正 概要 - Abstract =============== zlib の gzprintf 関数は、ユーザーから渡されたデータの境界チェックを 行なっていません。この関数がアプリケーション中でどう使われているかにも よりますが、悪意を持って作成されたデーターを渡すことで バッファーオーバーフローを発生させ、そのアプリケーションを 実行しているユーザーの権限で、任意のコードを実行できる可能性があります。 NetBSD システムに含まれるプログラムに、gzprintf 関数を使っているものは 含まれていません。しかし、pkgsrc を含むサードパーティー製ソフトウェアの 中には、この関数を使っているものが存在するかも知れません。 技術的な詳細 - Technical Details ================================ zlib を使っているプログラムは数多くあります。しかし、その大部分は 復元 (decompression) 機能のみを使っています。gzprintf 関数は圧縮機能を 持った printf 関数であり、これが使われることは比較的稀です。 また、zlib がネットワークで使用される場合は、一般にローカルホストから ネットワーク経由でデーターを圧縮して送る目的で使われます。したがって、 このバグをリモートから悪用可能なアプリケーションは、ほとんどないでしょう。 ただし、ローカルから不正に高い権限を得るためにこれが利用される可能性は 否定できません。NetBSD のベースシステムに gzprint 関数を使っている バイナリーは含まれていませんが、アプリケーションの権限を不正に得るために、 誰かがこの弱点を持ったアプリケーションを自分のユーザーの権限で 実行することは、十分に考えられることです。 NetBSD セキュリティーオフィサーは、弱点を持った pkg のリストを作成するために pkgsrc コードの監査を行なっています。その成果物は audit-packages データーベースに記録され、このセキュリティー勧告にも反映される予定です。 また、zlib を提供していないオペレーティングシステムのために、 サードパーティー製の配布ファイルの多くが、それぞれ独自に zlib を 含んでいることに注意する必要があるでしょう。NetBSD pkgsrc では、 そのようなアプリケーションに configure スクリプトが存在する場合、 それが NetBSD に含まれている修正ずみの zlib を正しく検出するように してあります。 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0107 回避方法と解決策 - Solutions and Workarounds ============================================ 次に示す手順は、ソースツリーを更新して再構築し、新しいバージョンの zlib をインストールすることで、zlib ライブラリーをアップグレード する方法を説明したものです。 * NetBSD-current: 2003 年 3 月 5 日より前の NetBSD-current は、 2003 年 3 月 6 日、もしくはそれ以降の NetBSD-current に アップグレードする必要があります。 CVS ブランチ netbsd-current (別名 HEAD) において 更新が必要なファイルは、次のとおりです。 lib/libz/gzio.c CVS を使ってファイルを更新し、libz を 再構築・再インストールするには、次のコマンドを実行してください。 # cd src # cvs update -d -P lib/libz/gzio.c # cd lib/libz # make USETOOLS=no cleandir dependall # make USETOOLS=no install * NetBSD 1.6: NetBSD 1.6 のバイナリー配布物には、このセキュリティー上の弱点が 含まれています。 2003 年 3 月 5 日より前の NetBSD 1.6 は、 2003 年 3 月 6 日、もしくはそれ以降の NetBSD 1.6 に アップグレードする必要があります。 NetBSD 1.6.1 には、この弱点に対する修正が含まれる予定です。 CVS ブランチ netbsd-1-6 において 更新が必要なファイルは、次のとおりです。 lib/libz/gzio.c CVS を使ってファイルを更新し、libz を 再構築・再インストールするには、次のコマンドを実行してください。 # cd src # cvs update -d -P -r netbsd-1-6 lib/libz/gzio.c # cd lib/libz # make USETOOLS=no cleandir dependall # make USETOOLS=no install もしくは、次の修正パッチを適用します (オフセット誤差があるかも知れません)。 ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-004-zlib-1.6.patch 修正パッチを適用して libz を再構築・再インストールするには、 次のコマンドを実行してください。 # cd src/lib/libz # patch < /path/to/SA2003-004-zlib-1.6.patch # make USETOOLS=no cleandir dependall # make USETOOLS=no install * NetBSD 1.5, 1.5.1, 1.5.2, 1.5.3: NetBSD 1.5.3 のバイナリー配布物には、このセキュリティー上の弱点が 含まれています。 2003 年 3 月 5 日より前の NetBSD-1.5, 1.5.1, 1.5.2, 1.5.3 は、 2003 年 3 月 6 日、もしくはそれ以降の NetBSD-1.5.* に アップグレードする必要があります。 CVS ブランチ netbsd-1-5 において 更新が必要なファイルは、次のとおりです。 lib/libz/gzio.c CVS を使ってファイルを更新し、再構築・再インストールするには、 次のコマンドを実行してください。 # cd src # cvs update -d -P -r netbsd-1-5 lib/libz/gzio.c # cd lib/libz # make cleandir dependall # make install もしくは、次の修正パッチを適用します (オフセット誤差があるかも知れません)。 ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-004-zlib-1.5.patch 修正パッチを適用して libz を再構築・再インストールするには、 次のコマンドを実行してください。 # cd src/lib/libz # patch < /path/to/SA2003-004-zlib-1.5.patch # make cleandir dependall # make install 謝辞 - Thanks To ================ Bill Squier 氏: 修正パッチを作成してくれました。 Lubomir Sedlacik 氏: この弱点が問題であることを指摘してくれました。 改訂履歴 - Revision History =========================== 2003-03-26 初版公開 2003-03-27 Thomas Lotterer 氏の指摘により CVE URL を修正 詳細と参考資料 - More Information ================================= 新しい情報が判明した場合、セキュリティー勧告は更新されることがあります。 PGP 署名されたこの勧告の最新版は、次の場所から入手できます。 ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2003-004.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-004.txt.asc,v 1.3 2003/03/29 03:49:08 yyamano Exp $ $Id: NetBSD-SA2003-004.txt.asc,v 1.3 2003/03/29 03:49:08 yyamano Exp $