OpenSSH のまたは関連するセキュリティホールについて

tDiary+Blogkitを利用した新ページに移転しました.このページはもう更新しない予定です.

OpenSSH.com のセキュリティのページもご覧ください.

OpenSSL に複数の脆弱性

OpenSSL Security Advisory [30 September 2003]によると, 0.9.6j と 0.9.7b を含むすべての OpenSSL のバージョン (と SSLeay) に, ANS.1 のパースにおける脆弱性が発見されました. 0.9.7 のみにある脆弱性を利用すると, 任意のコードを実行できるのかもしれません. 0.9.7 を含むすべてのバージョンで DoS 攻撃が可能です. 0.9.6k, 0.9.7c で修正されています.

OpenSSL Security Advisory [4 November 2003]によると, 0.9.6kにはまだバグがあり, Windows版のOpenSSLに対してはDOSが可能だそうです. 他のプラットホーム対しては不明です. 0.9.7にはこの問題はありません. 0.9.6lが出ています.

OpenSSH においては, OpenSC を利用したスマートカードサポートにおいて, X509 証明書のパースを行ないます. 他の場合は利用していないようです(openssh-unix-devでのMarkus Friedlの返答).

移植版 OpenSSH 3.7p1, 3.7.1p1 の PAM 認証コードの中に複数の脆弱性

これは移植版だけの問題であり, OpenBSD 版にはこの問題はありません.

Portable OpenSSH Security Advisory: sshpam.advによると, 移植版 OpenSSH 3.7p1, 3.7.1p1 の新しい PAM 認証コードの中に複数の脆弱性があり. これらのバグの中のすくなくとも一つはリモートで攻撃可能です (標準的でない設定で, privsep を無効にした場合に.Solaris だけ? (zdnet.co.jp)). 3.7.1p2 にするか "UsePAM no" と設定することで, 対処できます. なお 3.7.1p2 からは PAM のサポートがデフォルトで無効となっています.

OpenSSH 3.7.1p1 までの (was: OpenSSH 3.7.1 より前のすべての) バージョンにバッファ管理の誤り

3.7.1p2 では修正された模様. 3.7.1p1 にはあるようです. 詳しくは小島さんのセキュリティホール memoに書かれています.

OpenSSH Security Advisory: buffer.advによると, 3.7.1 より前のすべてのバージョンの OpenSSH にバッファ管理の誤りがありました. この誤りが潜在的に攻撃可能なものかどうかは確かではありません. OpenSSH 3.7 ではこのうち 1 つのバグが修正されましたが, まだ残っていました. 3.7.1p1 でもいくつか修正されましたがまだ残っていました. OpenSSH 3.7.1p2 にするか, OpenSSH Security Advisory: buffer.advのパッチを当てることで修正されます.

リモートクライアントアドレス制限の回避

CERT/CC: Vulnerability Note VU#978316: Vulnerability in OpenSSH daemon (sshd)に依ると, 3.6.1 以前の OpenSSH はデフォルトでは接続先のホスト名の逆引きチェックを行なわないため, AllowUsers などで IP アドレスによる制限を行なっている場合, これを攻撃者が回避することができます. VerifyReverseMapping オプションを有効にしてチェックをすることで防げます. 今後の OpenSSH のリリースでは, チェックをデフォルトで行なうようになるそうです. また VerifyReverseMapping オプションは UseDNS という名前になります.

OpenSSH/PAM timing attack allows remote users identification

OpenSSH/PAM timing attack allows remote users identificationによると, 3.6.1p1以前のOpenSSHでPAMを利用している場合, リモートの攻撃者がシステムにそのユーザが存在するかどうか判別することができるようです. Linux-PAM をサポートするシステムにこの欠陥があります. FreeBSDにおいては異なるPAMを利用しOpenSSHもLinux-PAMとは別のPAMのサポートを使うのでこの問題は発生しなさそうです. 3.6.1p2ではこの問題を軽減する対策がされています. また PAM の設定を変更することでも対策できるようです.

Dangerous AIX linker behavior (aixgcc.adv)

Portable OpenSSH: Dangerous AIX linker behavior (aixgcc.adv)によると, AIX のリンカは, デフォルトで, システムのパスを探す前にカレントディレクトリを検索します. これは 実行可能なファイルの set[ug]id 状態に関わらず行なわれます. これは (ローカルな) 攻撃者に対して, ライブラリを置換することで権限のエスカレートを可能にします. OpenSSH 移植版 (3.6.1p1 まで) はこの動作を native なコンパイラに対しては オーバライドする設定ロジックを含んでいますが, gcc は異なるコマンドラインオプションを使っているのでオーバライドされていませんでした (その他のコンパイラでもそうかもしれません). これは OpenSSH 3.6.1p2 で修正されました. また 実行ファイルから set[gu]uidを取り除くことでも解決できます. ただし ssh-keysign から setuid を取り除くと Hostbased 認証ができなくなります.

OpenSSL: Timing-based attacks on RSA keys

OpenSSL Security Advisory [17 March 2003]によると, OpenSSL v0.9.7a and 0.9.6i に脆弱性が発見されました. デフォルトで無効になっている RSA Blinding をしていない場合, timing attack (RSA の秘密鍵をその処理時間で推測しようとする攻撃. ,暗号の解読より) によって RSA 秘密鍵を推測される可能性があります. ただし実際に推測するのは難しいようです. OpenSSH にも影響します. 現在の snapshot では OpenSSL の実装にかかわらず, timing attack を避けるためのルーチン (RSA_blinding_on ()) を呼ぶようにしています (openssh-unix-dev: Re: Enable RSA blinding)).

暗号 AES (Rijndael) と Serpent に弱点があるかも

SSH でも使われている ブロック暗号 AES (OpenSSH で SSH2 で使われるデフォルトの暗号に含まれている) と Serpent (OpenSSH では使われていない. lshでは使える) に弱点があるかもしれないということです. はっきりするまで, これらの暗号を使わないようにしたほうがよいでしょう.

ftp.openbsd.org の OpenSSH パッケージにトロイの木馬

ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/以下の OpenSSH 3.2.2p1,3.4p1,3.4 のパッケージにトロイの木馬が仕掛けられていました. 現地時間 (MDT) の 7/30 か 31 に置き換えられ, 8/1 午前 7 時 (日本時間 8月1日 夜10時) に復元されました. この間に, ミラーサイトがミラーしてしまった例もあるようです. 参考: OpenSSH Security Advisory: Trojaned Distribution Files,新山さんによる OpenSSH Security Advisory (adv.trojan) の翻訳

OpenSSL 0.9.6e 以前,0.9.7beta2 以前のセキュリティホール

OpenSSL 0.9.6d 以前,0.9.7beta2 以前のセキュリティホールがOpenSSL Security Advisory [30 July 2002],CERT Advisory CA-2002-23 Multiple Vulnerabilities In OpenSSLで報告されています. 0.9.6eにはasn1_lib.cへのパッチ(その1)asn1_lib.cへのパッチ(その2)を当てなければいけないようです(セキュリティホールmemoの情報による). 0.9.6f にはインストール時の問題があります. OpenSSH も影響を受ける場合があります(64bit環境, OpenSCを利用している場合, など. 他の場合もあるかも). OpenSSL 0.9.6g などを入手するかパッチを当てて再インストールし, OpenSSH で static にリンクしている場合は再インストールしたほうがよいと思われます.

SSH2 の challenge-response 認証 (SKEY や BSD_AUTH 認証, キーボードインタラクティブ経由のPAM認証) に脆弱性

Internet Security Systems Security Advisory OpenSSH Remote Challenge VulnerabilityOpenSSH Security Advisory (adv.iss), CERT Advisory CA-2002-18 OpenSSH Vulnerabilities in Challenge Response Handlingによれば, SSH2 の challenge-response 認証 (SKEY や BSD_AUTH 認証, キーボード対話を使った PAM 認証) に脆弱性があり, DoS や root 権限の取得に使えます. OpenSSH 2.3.1 以降に問題があります. 影響を受ける OS として OpenBSD 3.0,OpenBSD 3.1,FreeBSD-Current が挙げられています. 特権分離 (PrivilegeSeparation) を利用していれば, 問題ありません. もしくは sshd_config で ChallengeResponseAuthentication no, PAMAuthenticationViaKbdInt no (version によっては KbdInteractiveAuthentication no) としておけば問題ありません. (参考: 荻野 itojun 純一郎さんの 2002/7/3 BSD-BOF でのスライド BSD security update - BIND, OpenSSH中のPage 5: OpenSSH vulnerability以降)

OpenBSD と BSD/OS システムでの BSD_AUTH アクセスコントロール処理の弱点

OpenSSH 3.2.2 には以下の問題があります. パスワードデータベースに netgroups を利用しta YP (NIS) を使うシステムでは, sshd が 要求されたユーザ名に対して ACL の検査を行う際に特定の条件の元で異なるユーザのパスワードデータベースエントリを使う可能性があります. これが意味することは, 拒否されるべきユーザが認証に成功するかもしれない一方で許可されているユーザが締め出されるかもしれない, ということです. (参考: http://www.openbsd.org/errata.html#sshbsdauth,日本語版)

Kerberos/AFS support に弱点

Kerberos/AFS support 付きでコンパイルされた sshd を KerberosTgtPassing ないし AFSTokenPassing を有効にして実行すると, ローカルまたはリモートのユーザが root の特権を取れます. この機能はProtocol version 1でのみ有効にでき, デフォルトでは無効です. PrivilegeSeparationを使っている場合には, 特権を取ることはできません. ローカルには OpenSSH 3.1 までのすべてのリリース,リモートでは OpenSSH 2.9.9 より前のリリースに弱点があります. UsePrivilegeSeparationを有効にしている場合は特権を取られません.OpenSSH Security Advisory (adv.token2,修正版)で示されているパッチをあてる必要があります.

OpenSSH でリンクしている zlib ライブラリに弱点

OpenSSH でリンクしているzlib ライブラリに弱点がありました (弱点の詳細). zlib 1.1.4 にて修正されています. zlib を OpenSSH にダイナミックリンクしている場合は zlib を, スタティックリンクしている場合は zlib と OpenSSH を入れ換える必要があります. セキュリティホールメモでの記載

channnel.c 中の境界の判定で「一つ違い」 (off-by-one) エラー

OpenSSH 2.0 から 3.0.2 までのすべての version において, channel.c の関数 channel_lookup () の境界判定部にエラーがありました. 想定されているものより 1 つ多いチャンネルを転送させることができ, その分のメモリが確保されていません. SSH Protocol version 2 を使用している場合にのみ, この弱点があります. この問題を利用して, 弱点のある OpenSSH のサーバにログインできるユーザがそのサーバを攻撃することができます. 要は root (ないし sshd を動かしているユーザ) の権限を取れます. あるいは弱点のある OpenSSH のクライアントを悪意を持った SSH のサーバが攻撃することができます. 3.1 以降にアップグレードするかOpenSSH Security Advisory (adv.channelalloc)中のパッチを当てることで回避できます.

最近の sshd に対する攻撃についての CERT の文書

CERT Advisory CA-2001-35 Recent Activity Against Secure Shell Daemonsが出ています.

UseLogin の問題

OpenSSH 3.0.2 より前のリリースではサーバの設定で UseLogin オプションを有効しにていた場合に弱点がありました. local ユーザが login プロセスに対して環境変数を sshd の権限で設定できるというものです.デフォルトで UseLogin オプションは有効になっていません.

CRC32 Compensation Attack Detector のセキュリティホールを利用した攻撃についての CERT/CC の勧告

OpenSSH 2.3 より前のリリースにある, CRC32 Compensation Attack Detector のセキュリティホールを利用した攻撃について,CERT/CC の勧告が出ています.参考: David A. Dittrich 氏の解説,hsj さんの exploit code,SSH Vulnerability Scan

authorized_keys2 の問題

OpenSSH 2.5 から OpenSSH 2.9.9 より前のリリースでは, authorized_keys2 で別の鍵に対するオプションが鍵に反映されてしまう問題があります. IP アドレスでのアクセス制限を行なう"from="オプションもこの問題の対象で, 制限が正しく行なわれない可能性があります. OpenSSH Security Advisory (adv.option). OpenSSH 2.9.9 で修正されました.

FreeBSD 4.4-RC 以前の OpenSSH の問題

FreeBSD 4.4-RC 以前に付属する OpenSSH は, root 権限を保持したまま login class capability database の処理を行ってしまう問題があるそうです. 小島さんによる解説

Timing Analysis

Timing Analysis of Keystrokes and Timing Attacks on SSHという文書が出ています (小島さんによる要約).

Timing Analysis を無効にするパッチ

SSH.com 社の見解など

SSH.com 社は現実的な脅威ではないとの見解を示しています. 全部は読んでいないのですが, このキー入力解析とネットワーク利用状況の情報を組みあわせるとより危険なのではないかと思われます. たとえば, ssh でログインした先のホストでさらに別のホストに ssh でログインする場合, (端末へのペーストや alias や補完などを使っていないとすると)"ssh"とホスト名の文字列のキー入力のタイミングとホストに ssh のセッションを張りに行ったという情報が手に入るので推測がやりやすくなるのではないでしょうか.

cookies ファイルを消せる問題

OpenSSH 2.9 以前 (移植版では OpenSSH 2.9p1 以前, OpenSSH 2.9p2 以降では修正されている) で, ssh で接続できるユーザならば他のユーザのX の転送のために必要なファイルである cookies ファイルを消せます.(X の転送用のファイルでなくても, リンクがはれるディレクトリ中の名前が cookies であるファイルなら消せます). X の転送用の cookies ファイルを消されたユーザは新たに X の転送を行うことができなくなります. ftp://ftp.openbsd.org/pub/OpenBSD/patches/2.9/common/006_sshcookie.patchを適用することで対処できます. 移植版については実際に対処されたことを確認しました (cookies ファイルを生成しなくなった). 簡単なまとめをセキュリティホール memo メーリングリストに投稿しました.

情報源

パスワードの長さや使われている文字を推測できる問題

OpenSSH 2.5.0 より前の version ではパスワード認証の際のパケットを盗聴することで, パスワードの長さやパスワードに使われている文字を推定できる弱点があるようです. BUGTRAQ Mailing List に報告されたリポート. OpenSSH 2.3.0 以前の version を使ってパスワード認証をするのをやめましょう.

agent や X11 の転送を強要することができる問題

OpenSSH 2.3.0 より前の version では悪意のあるサーバが agent や X11 の転送を強要することができる弱点があります. BUGTRAQ Mailing List に報告されたリポート. Version を上げるかリポート中のパッチを当てましょう.

文責:春山 征吾 (HARUYAMA Seigo)
email: haruyama@unixuser.org

$id:$