NetBSD Security Advisory 2006-016 ================================= トピック: IPv6 ソケットのオプションがシステムクラッシュを引き起こす可能性 (IPv6 socket options can crash the system) バージョン: NetBSD-current: 2006 年 5 月 23 日より前のソース NetBSD 3.0: 影響あり NetBSD 2.1: 影響あり NetBSD 2.0.*: 影響あり NetBSD 2.0: 影響あり 影響範囲: ローカルユーザーからシステムをクラッシュさせることが可能 (Any local user can crash the system) 修正日: NetBSD-current: 2006 年 5 月 23 日 NetBSD-3-0 ブランチ: 2006 年 5 月 24 日 (3.0.1 には修正が含まれる予定) NetBSD-3 ブランチ: 2006 年 5 月 24 日 NetBSD-2-1 ブランチ: 2006 年 5 月 24 日 (2.1.1 には修正が含まれる予定) NetBSD-2-0 ブランチ: 2006 年 5 月 24 日 (2.0.4 には修正が含まれる予定) NetBSD-2 ブランチ: 2006 年 5 月 24 日 概要 - Abstract =============== IPv6 ソケットオプションは、解析の際に十分な検査が行なわれていないため、 システムクラッシュの原因となる場合があります。この問題は、ローカルの 一般ユーザーから悪用することが可能です。 技術的な詳細 - Technical Details ================================ IPv6 ソケットでは、IPv4 射影アドレスを使うことができます。つまり、 IPv4 パケットは IPv6 ソケットを経由して送ることも可能です。 IPv6 パケットを送る場合、NetBSD カーネルは ip6_savecontrol() 関数を 呼び出して、SO_TIMESTAMP ソケットオプションを処理します。 しかしこの関数は本来、IPv6 ソケットのオプションのみを処理対象と しているものであり、IPv4 射影ソケットであるかどうかのチェックを 行ないません。そのようなソケットに SO_TIMESTAMP オプションをセットすると、 後に呼び出される ip6_pullexthdr() 関数が mbuf チェーンをたどってしまい、 システムパニックが発生します。 上記のようなコード実行が発生するには、(グローバルな) sysctl MIB net.inet6.ip6.v6only が 0 であるか、(ソケット単位の) IPV6_V6ONLY ソケットオプションが 0 になっている必要があります。 回避方法と解決策 - Solutions and Workarounds ============================================ NetBSD では、デフォルトで net.inet6.ip6.v6only が 1 (無効) に 設定されています。ただし、一般ユーザーからソケット単位で IPV6_V6ONLY オプションを設定することは可能です。 唯一の回避方法は、options BIND_V6ONLY を付けてカーネルを 再構築することです。 すべてのバージョンの NetBSD は、修正ずみのカーネルソースを入手して、 カーネルを再構築・再インストールし、システムを再起動する必要があります。 修正ずみのソースは、NetBSD CVS リポジトリーから入手することが可能です。 次に示す手順は、カーネルをアップグレードする方法を簡単にまとめたものです。 手順にある以下のキーワードは、適宜置き換えてください。 ARCH (uname -m で表示される) アーキテクチャー名 KERNCONF カーネル設定ファイルのファイル名 CVS を使ってファイルを更新し、カーネルを再構築・再インストールするには、 次のコマンドを実行してください。 # cd src # cvs update -d -P sys/netinet6/ip6_input.c # ./build.sh kernel=KERNCONF # mv /netbsd /netbsd.old # cp sys/arch/ARCH/compile/obj/KERNCONF/netbsd /netbsd # shutdown -r now 詳しい手順については、次の URL を参照してください。 http://www.NetBSD.org/guide/en/chap-kernel.html 謝辞 - Thanks To ================ Christian Biere 氏: 問題の発見者 KAME プロジェクトの神明 達哉 氏: 修正の提供者 Rui Paulo 氏: 修正の実装 改訂履歴 - Revision History =========================== 2006-06-08 初版公開 詳細と参考資料 - More Information ================================= 新しい情報が判明した場合、セキュリティー勧告は更新されることがあります。 PGP 署名されたこの勧告の最新版は、次の場所から入手できます。 ftp://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2006-016.txt.asc NetBSD および NetBSD のセキュリティーに関する情報は、次の場所から入手できます。 http://www.NetBSD.org/ http://www.NetBSD.org/Security/ Copyright 2006, The NetBSD Foundation, Inc. All Rights Reserved. Redistribution permitted only in full, unmodified form. $NetBSD: NetBSD-SA2006-016.txt,v 1.2 2006/06/08 16:21:43 adrianp Exp $ $Id$