NetBSD Security Advisory 2003-009 ================================= トピック: sendmail の prescan() のアドレス解析部分における バッファーオーバーラン (sendmail buffer overrun in prescan() address parser) バージョン: NetBSD-current: 2003 年 3 月 30 日より前のソース NetBSD 1.6: 影響あり NetBSD-1.5.3: 影響あり NetBSD-1.5.2: 影響あり NetBSD-1.5.1: 影響あり NetBSD-1.5: 影響あり pkgsrc: sendmail-8.12.9 より前のものは影響あり 影響範囲: リモートから root 権限が不正使用される可能性がある。 (Remote root compromise) 修正日: NetBSD-current: 2003 年 3 月 30 日 NetBSD-1.6 branch: 2003 年 3 月 30 日 (1.6.1 は修正ずみ) NetBSD-1.5 branch: 2003 年 4 月 1 日 pkgsrc: sendmail-8.12.9 で修正 概要 - Abstract =============== - CERT 勧告からの引用: sendmail には、攻撃者が sendmail サーバーの制御をリモートから 乗っ取ることができるような、セキュリティー上の弱点が存在します。 sendmail のアドレス字句解析コードは、email アドレスの長さをきちんと チェックしていません。そのため、特殊な細工を施したアドレスを含む email メッセージを使うことで、スタックオーバーフローを発生させる ことが可能です。この問題は、Michal Zalewski 氏によって発見されました。 このセキュリティー上の弱点は、CA-2003-07 で解説されているものとは 異なるものです。 このセキュリティー上の弱点は、NetBSD SA2003-002 のものとも 異なります。 技術的な詳細 - Technical Details ================================ http://www.cert.org/advisories/CA-2003-12.html 回避方法と解決策 - Solutions and Workarounds ============================================ sendmail を実行しているサイトは、可能な限り早くアップグレードしましょう。 現時点でアップグレードが不可能な場合は、sendmail サービスを停止させることを おすすめします。 システム上で sendmail が実行されているかどうか調べるには、 次のコマンドを実行します。 # /etc/rc.d/sendmail status 現在実行されている sendmail プロセスを停止させるには、次のコマンドを 実行します。 # /etc/rc.d/sendmail stop sendmail が次回の再起動時に実行されないようにするには、次のコマンドを 実行します。 # echo "sendmail=NO" >>/etc/rc.conf.d/sendmail アップグレードが完了した後、次回の再起動時に実行されるようにするには、 /etc/rc.conf.d/sendmail の最後にある sendmail=NO という行を削除してください。 バイナリーパッチの適用手順は、下の NetBSD-1.6 用の項で説明しています。 次に示す手順は、ソースツリーを更新して再構築し、新しいバージョンの sendmail をインストールすることで、sendmail バイナリーをアップグレード する方法を説明したものです。 * NetBSD-current: 2003 年 3 月 30 日より前の NetBSD-current は、 2003 年 3 月 31 日、もしくはそれ以降の NetBSD-current に アップグレードする必要があります。 CVS ブランチ netbsd-current (別名 HEAD) において 更新が必要なファイルは、次のとおりです。 gnu/dist/sendmail/sendmail CVS を使ってファイルを更新し、sendmail を 再構築・再インストールするには、次のコマンドを実行してください。 # cd src # cvs update -d -P gnu/dist/sendmail/sendmail # cd gnu/usr.sbin/sendmail # make USETOOLS=no cleandir dependall # make USETOOLS=no install * NetBSD 1.6: NetBSD 1.6 のバイナリー配布物には、このセキュリティー上の弱点が 含まれています。 2003 年 3 月 30 日より前の NetBSD 1.6 のソースは、 2003 年 3 月 31 日、もしくはそれ以降の NetBSD 1.6 のソースに アップグレードする必要があります。 NetBSD 1.6.1 には、この弱点に対する修正が含まれる予定です。 CVS ブランチ netbsd-1-6 において 更新が必要なファイルは、次のとおりです。 gnu/dist/sendmail/sendmail CVS を使ってファイルを更新し、sendmail を 再構築・再インストールするには、次のコマンドを実行してください。 # cd src # cvs update -d -P -r netbsd-1-6 gnu/dist/sendmail/sendmail # cd gnu/usr.sbin/sendmail # make USETOOLS=no cleandir dependall # make USETOOLS=no install * バイナリーパッチ バイナリーパッチを適用するには、次の手順を行ないます。 ARCH の部分は、あなたが実行している NetBSD のアーキテクチャー (たとえば i386 など) に置き換えてください。 ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2003-009-sendmail/netbsd-1-6/ARCH-sendmail.tgz cd / && tar xzvf /path/to/ARCH-sendmail.tgz この tar ファイルは、新しい /usr/libexec/sendmail/sendmail を展開し、 弱点を持ったバイナリーを上書きします。 * NetBSD 1.5, 1.5.1, 1.5.2, 1.5.3: NetBSD 1.5.3 のバイナリー配布物には、このセキュリティー上の弱点が 含まれています。 2003 年 4 月 1 日より前の NetBSD-1.5、NetBSD-1.5.1、 NetBSD-1.5.2、NetBSD-1.5.3 のいずれかのソースを 使っているシステムは、2003 年 4 月 2 日、もしくはそれ以降の NetBSD-1.5.* のソースにアップグレードする必要があります。 CVS ブランチ netbsd-1-5 において 更新が必要なファイルは、次のとおりです。 gnu/dist/sendmail/sendmail CVS を使ってファイルを更新し、sendmail を 再構築・再インストールするには、次のコマンドを実行してください。 # cd src # cvs update -d -P -r netbsd-1-5 gnu/dist/sendmail/sendmail # cd gnu/usr.sbin/sendmail # make cleandir dependall # make install 謝辞 - Thanks To ================ Michal Zalewski 氏および CERT: 問題の指摘をしてくれました。 Andrew Brown 氏: 修正パッチを提供してくれました。 改訂履歴 - Revision History =========================== 2003-04-04 初版公開 2003-04-06 バイナリーパッチを追加 2003-04-07 バイナリーパッチのパスの修正および、 tar の `p' フラグの追加 詳細と参考資料 - More Information ================================= 新しい情報が判明した場合、セキュリティー勧告は更新されることがあります。 PGP 署名されたこの勧告の最新版は、次の場所から入手できます。 ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2003-009.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-009.txt.asc,v 1.2 2003/04/13 18:05:00 yyamano Exp $ $Id: NetBSD-SA2003-009.txt.asc,v 1.2 2003/04/13 18:05:00 yyamano Exp $