FreeBSD セキュリティ勧告 日本語版 ============================================================================= FreeBSD-SA-01:63 (2001-12-06) * OpenSSH UseLogin directive permits privilege escalation [REVISED] ============================================================================= このメールは, announce-jp に流れた Subject: ANNOUNCE: FreeBSD Security Advisory FreeBSD-SA-01:63.openssh From: FreeBSD Security Advisories Date: Fri, 7 Dec 2001 04:30:11 -0800 (PST) Message-Id: <200112071230.fB7CUB066488@freefall.freebsd.org> X-Sequence: announce-jp 862 を日本語訳したものです. 原文は PGP 署名されていますが, この日本語訳は PGP 署名されていません. 修正パッチ等の内容が改ざんされていないことを確認するために PGP 署名の チェックを行なうには, 原文を参照してください. 日本語訳および, ミラーサイト利用の詳細については, 文末の「A. FreeBSD セキュリティ勧告 日本語版について」をご覧ください. [翻訳者: 佐藤 広生 ] --(ここから) ============================================================================= FreeBSD-SA-01:63 Security Advisory FreeBSD, Inc. トピック: OpenSSH の UseLogin 指示子に起因する root 権限の不正使用問題 (OpenSSH UseLogin directive permits privilege escalation) [REVISED] 分類: core/ports モジュール: openssh 告知日: 2001-12-02 改訂日: 2001-12-06 クレジット: Markus Friedl 影響範囲: FreeBSD 4.3-RELEASE, 4.4-RELEASE 修正日以前の FreeBSD 4.4-STABLE 修正日以前の Ports Collection 修正日: 2001-12-03 00:53:28 UTC (RELENG_4) 2001-12-03 00:54:18 UTC (RELENG_4_4) 2001-12-03 00:54:54 UTC (RELENG_4_3) 2001-12-02 06:52:40 UTC (openssh port) FreeBSD に固有か: NO 0. 改訂履歴 - Revision History v1.0 2001-12-02 初版公開 v1.1 2001-12-06 修正パッチの適用方法の説明を修正 I. 背景 - Background OpenSSH は, SSH1 および SSH2 セキュアシェルプロトコル実装の一つです. これは暗号化と認証を備えたネットワークアクセスを実現するもので, 誰でも 自由に利用することができます. OpenSSH は FreeBSD Ports Collection と FreeBSD ベースシステムの両方に含まれています. II. 問題の詳細 - Problem Description OpenSSH では, 認証に用いる暗号鍵に応じてユーザの環境変数を設定する ことができる機能があります. これらの環境変数は, サーバ上のそのユーザの ホームディレクトリにある `authorized_keys' (SSHv1) もしくは `authorized_keys2' (SSHv2) というファイルで指定します. 通常, これは そのユーザの権限で起動するシェルに渡されるだけで, 危険性は特にありません. しかし, OpenSSH サーバ 'sshd' が (sshd_config ファイル中で `UseLogin yes' という指示子を指定することで) システムの login プログラムを使うように 設定されている場合, この環境変数はスーパユーザ (訳注: root のこと) の権限で 実行される login プログラムに渡されることになります. つまり, この機能を利用して LD_LIBRARY_PATH や LD_PRELOAD といった 特定の環境変数を設定すると, そのユーザは login を利用して スーパユーザ権限で任意のコードを実行することが可能になってしまいます. FreeBSD 4.3, 4.4 を含む, 修正日以前のすべての FreeBSD 4.x が この問題による弱点を持っています. しかし, OpenSSH サーバは標準設定で システムの login プログラムを使わない設定 (`UseLogin no') と なっているため, この設定を管理者が変更していなければ, この問題による影響はありません. また, Ports Collection には 2 種類の OpenSSH が存在します. 一つは ports/security/openssh であり, BSD に特化した OpenSSH です. この port の openssh-3.0.2 より前のバージョンには, 上述した問題に起因する セキュリティ上の弱点が存在します. また, もう一つ ports/security/openssh-portable というものがありますが, こちらは `UseLogin yes' の指定に関わらず, 上述の問題の影響は受けません. III. 影響範囲 - Impact 悪意を持ち, 正当なアカウントを所有するユーザは, 公開鍵認証の機能を使って /usr/bin/login を悪用することで, スーパユーザの権限で任意のコードを実行できる危険性があります. sshd 設定ファイルで 'UseLogin' を有効にしていなければ, この問題によるセキュリティ上の弱点はありません. IV. 回避方法 - Workaround セキュリティ上の弱点を取り除くには, 次のいずれかに従ってください. 1) sshd がシステムの login プログラムを使わないように設定する. sshd サーバの設定ファイルを編集し, すべての 'UseLogin' 指示子を 'UseLogin no' に設定します. こちらが望ましい回避法です. 2) 何らかの理由で 'UseLogin' を無効にすることができない場合は, その代わりに公開鍵認証を無効化することで弱点を回避することが可能です. sshd サーバ設定ファイルを編集し, `RSAAuthentication', `DSAAuthentication', `PubKeyAuthentication' という指示子を, それぞれ `RSAAuthentication no', `DSAAuthentication no', `PubKeyAuthentication no' に変更します. FreeBSD ベースシステムに含まれる sshd (/usr/sbin/sshd) の サーバ設定ファイルは `/etc/ssh/sshd_config' にあります. また, Ports Collection に含まれる sshd のサーバ設定ファイルは `/usr/local/etc/sshd_config' です. sshd の設定ファイルを変更したら, 次のコマンドを root 権限で実行し, sshd デーモンを再起動する必要があります. # kill -HUP `cat /var/run/sshd.pid` V. 解決策 - Solution (訳注: 次のいずれかに従ってください) 1) 弱点を持ったシステムを FreeBSD 4.3-RELEASEp21, 4.4-RELEASEp1 あるいは 修正日以降の 4.4-STABLE にアップグレードするか, 現在運用中のシステムの ソースコードに修正パッチを適用して再構築します. 2) 修正日以降の FreeBSD 4.x システムの場合: 下の修正パッチは, FreeBSD 4.3-RELEASE, 4.4-RELEASE, 修正日以前の 4.4-STABLE に適用可能であることが確認されているものです. それらよりも古かったり, 既にサポートされていないバージョンの FreeBSD に 対して, これが適用可能かどうかは不明です. 以下の場所から修正パッチと PGP 署名をダウンロードし, PGP ユーティリティを 使って電子署名の確認を行ないます. # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:63/sshd.patch # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:63/sshd.patch.asc そして, root 権限で次のコマンドを実行します # cd /usr/src/crypto/openssh # patch < /path/to/sshd.patch # cd /usr/src/secure/lib/libssh # make depend && make all # cd /usr/src/secure/usr.sbin/sshd # make depend && make all install 3) FreeBSD 4.4-RELEASE システムの場合: 実験的なものですが, アップグレードパッケージが用意されています. これはバイナリアップグレード機能の試験および, それに対する意見を 提供していただけるユーザ向けのものです. このパッケージは FreeBSD 4.4-RELEASE システムにのみインストール可能で, ソースへ 修正パッチを適用することが現実的でなかったり, そうすることが ふさわしくないと考えられるシステムでの利用を考慮したものです. このアップグレードパッケージを利用する場合は, 将来のセキュリティ勧告を より良いものにするため, (肯定的・否定的のいずれであっても) security-officer@FreeBSD.org までご意見をお寄せください. インストール処理の途中で, アップグレードパッケージは 置き換えるファイルのバックアップコピーを作成します. アップグレードパッケージが削除された時, このバックアップコピーは 再インストールされてシステムは修正パッチを適用する前の状態に戻ります. またこのパッケージは, 既に sshd デーモンが実行されている場合, 自動的に デーモンの再起動を行ないます. アップグレードパッケージは, kerberosIV 配布物がインストールされているシステム用, kerberos5 配布物がインストールされているシステム用, そのいずれもインストールされていないシステム用に 3 種類用意されています. 3a) kerberosIV と kerberos5 のいずれもインストールされていないシステムの場合 # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-01.63.tgz # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-01.63.tgz.asc PGP ユーティリティを使って PGP 署名を確認します. # pkg_add security-patch-sshd-01.63.tgz 3b) kerberosIV のみがインストールされているシステムの場合 # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberosIV-01.63.tgz # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberosIV-01.63.tgz.asc PGP ユーティリティを使って PGP 署名を確認します. # pkg_add security-patch-sshd-kerberosIV-01.63.tgz 3c) kerberos5 のみがインストールされているシステムの場合 # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberos5-01.63.tgz # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberos5-01.63.tgz.asc PGP ユーティリティを使って PGP 署名を確認します. # pkg_add security-patch-sshd-kerberos5-01.63.tgz 3d) kerberosIV および kerberos5 の両方がインストールされているシステムの場合 # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberosIV-kerberos5-01.63.tgz # fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/packages/SA-01:63/security-patch-sshd-kerberosIV-kerberos5-01.63.tgz.asc PGP ユーティリティを使って PGP 署名を確認します. # pkg_add security-patch-sshd-kerberosIV-kerberos5-01.63.tgz [Ports collection] 次のいずれかに従ってください. 1) Ports Collection 全体をアップグレードして OpenSSH port を再構築する. 2) 古い (訳注: sshd の) package をシステムから削除し, 修正日以降に作成された新しい package を以下の場所から取得して インストールする. [i386] ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/security/openssh-3.0.2.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/security/openssh-3.0.2.tgz [alpha] 現時点では alpha アーキテクチャ用の package は自動生成されていません. これは, 構築のためのマシンリソースが不足しているためです. 注意: 更新された package が提供されるまで, 数日かかる可能性があります. どちらもソフトウェアのバージョン番号は同一ですので, package ファイルの作成日を確認するようにしてください. 3) sshd の新しい port スケルトンを以下の場所からダウンロードし, それらを使って port を再構築します. http://www.freebsd.org/ports/ 4) 上記 (3) の操作を自動的に行なう portcheckout ユーティリティを使います. portcheckout の port は /usr/ports/devel/portcheckout にあります. また, portcheckout の package が以下の場所から入手可能です. ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/devel/portcheckout-2.0.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/devel/portcheckout-2.0.tgz VI. 修正の詳細 - Correction details パス名 リビジョン番号 ブランチ - ------------------------------------------------------------------------- src/crypto/openssh/session.c HEAD 1.18 RELENG_4 1.4.2.11 RELENG_4_4 1.4.2.8.4.1 RELENG_4_3 1.4.2.8.2.1 src/crypto/openssh/version.h HEAD 1.9 RELENG_4 1.1.1.1.2.7 RELENG_4_4 1.1.1.1.2.5.2.1 RELENG_4_3 1.1.1.1.2.4.2.1 ports/security/openssh/Makefile 1.79 - ------------------------------------------------------------------------- ベースシステムに含まれる OpenSSH の場合, FreeBSD 版であることを示す バージョン文字列が表示されるようになっています. 次の表は, この セキュリティ上の弱点の修正が適用済みの各ブランチと, それに対応する バージョン文字列を示したものです. ブランチ バージョン文字列 - ------------------------------------------------------------------------- HEAD OpenSSH_2.9 FreeBSD localisations 20011202 RELENG_4 OpenSSH_2.9 FreeBSD localisations 20011202 RELENG_4_4 OpenSSH_2.3.0 FreeBSD localisations 20011202 RELENG_4_3 OpenSSH_2.3.0 green@FreeBSD.org 20011202 - ------------------------------------------------------------------------- sshd サーバのバージョン文字列を表示するには, 次のコマンドを実行します. % /usr/sbin/sshd -\? バージョン文字列は, クライアントがサーバに接続した時にも表示されます. 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/handbook/mirror.html (英文) http://www.FreeBSD.org/ja/handbook/mirror.html (日本語訳) にまとめられています. $hrs: announce-jp/FreeBSD-SA/01:63,v 1.7 2002/01/11 06:03:44 hrs Exp $