Red Hat は、TLS 再ネゴシエーションの中間者 (MITM) 攻撃 (CVE-2009-3555) の影響を受けますか?
問題
Transport Layer Security (TLS) は、クライアントとサーバーとの間で安全な接続を確立するために使用されるプロトコルです。TLS 再ネゴシエーションの中間者 (MITM) 攻撃が、PhoneFactor 社の Marsh Ray 氏によって発表されました。攻撃者は、この問題を利用して、選択したプレーンテキストを接頭語としてターゲットのセッションに挿入できます (http://extendedsubset.com/?p=8) (注記: リンク先の問題報告者のサイトでは、現在、この不具合に関する情報は提供されていません)。この不具合に関する詳細については、Eric Rescorla 氏の説明 (http://www.educatedguesswork.org/2009/11/understanding_the_tls_renegoti.html)) を参照してください。
環境
- Red Hat Enterprise Linux
- Red Hat Certificate System
- Red Hat Directory Server
- JBoss Enterprise Web Server
- すべての web ブラウザー
解決策
Red Hat はこの問題を認識しており、https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2009-3555 で対応しております。
報告されている問題は TLS/SSL プロトコルの不具合で、特定の実装で発生したバグではありません。したがって、この問題はすべてのプロトコル実装に影響します。Red Hat Enterprise Linux には、openssl
、nss
、および gnutls
パッケージ、そしてさまざまな Java ランタイム環境 (Sun、IBM、および OpenJDK) の Java Secure Socket Extension (JSSE) コンポーネントが含まれます。
この不具合を利用するには中間者攻撃が必要なため、この問題のセキュリティへの影響度は「中」に設定されています。
この問題に対処するため、IETF TLS ワーキンググループは、安全なセッションの再ネゴシエーションを許可する TLS プロトコルの拡張を定義しました。このプロトコルの拡張は RFC 5746 "Transport Layer Security (TLS) Renegotiation Indication Extension": http://www.rfc-editor.org/rfc/rfc5746.txt で説明されています。
Red Hat は、openssl
、openssl097a
、nss
、gnutls
、java-1.6.0-openjdk
、java-1.6.0-sun
、java-1.4.2-ibm
、java-1.4.2-ibm-sap
、java-1.5.0-ibm
、および java-1.6.0-ibm
パッケージに RFC 5746 のサポートを追加するアップデートをリリースしました。これらのアップデートについては、RFC 5746 サポートを追加するアップデートセクションで説明されています。
Red Hat は httpd
、java-1.4.2-ibm
、java-1.5.0-ibm
、java-1.6.0-ibm
、java-1.6.0-openjdk
、java-1.6.0-sun
、tomcat5
、tomcat6
、および tomcat-native
のアップデートを作成しました。このアップデートを使用すると、再ネゴシエーションの使用が無効になったり制限されるため、この不具合を軽減できます。これらのアップデートについては、問題を軽減するアップデートセクションを参照してください。
これまで、この不具合を使用する攻撃の説明は HTTPS だけを対象としていました。httpd
web サーバーの mod_ssl
および mod_nss
モジュールをともに使用すると、クライアントは常時 TLS セッションの再ネゴシエーションを実行できます。したがって、これらのモジュールを使用して HTTPS サーバーに攻撃できました。影響は、サーバーにデプロイした web アプリケーションによって異なりました。たとえば、Cross-Site Request Forgery (CSRF) 攻撃を保護すると、特定の攻撃ベクターを軽減できます。新しい TLS 拡張を強制せずに、クライアンサイドで攻撃を検出する既知の方法があります。RFC 5746 をサポートしていない web サーバーはこの攻撃のターゲットとなる可能性があります。
Red Hat は、現在、他のアプリケーションプロトコルへの攻撃は認識していませんが、今後の解析で発見される場合もあります。
RFC 5746 サポートを追加するアップデート
このセクションでは、さまざまな TLS/SSL ライブラリに RFC 5746 のサポートを追加するアップデートについて説明しています。このアップデートにより、クライアントおよびサーバーの再ネゴシエーションが保護されます。
これ以降、RFC 5746 を実装している TLS/SSL クライアントまたはサーバーについては「アップグレードした (RFC 5746 で使用) またはパッチを当てた (OpenSSL ドキュメントで使用) クライアントまたはサーバー」と表します。一方、RFC 5746 をサポートしていない TLS/SSL クライアントまたはサーバーについては「アップグレードをしていないまたはパッチを当てていないサーバー」とします。
RFC 5746 とその実装が利用可能になるまでは、複数のコンポーネントで再ネゴシエーションの使用をブロックまたは制限するために、複数のアップデートがリリースされます。これらのアップデートについては、問題を軽減するアップデートセクションを参照してください。
OpenSSL への RFC 5746 実装
OpenSSL への RFC 5746 サポートは、バージョン 0.9.8m でアップストリームに導入されました。
パッチを当てた Red Hat OpenSSL パッケージでは、再ネゴシエーションは以下のように動作します。
- パッチを当てたクライアントはパッチを当てたサーバーに接続して再ネゴシエーションを行います。
- パッチを当てたクライアントはパッチを当てていないサーバーに接続して再ネゴシエーションを行います。これは、暫定的な動作です。今後の OpenSSL アップデートでは、パッチを当てていないサーバーへの接続または再ネゴシエーションが行われないようになる可能性があります。
- パッチを当てたサーバーは、パッチを当てたクライアントに接続と再ネゴシエーションを許可します。
- パッチを当てたサーバーは、パッチを当てていないクライアントに接続を許可しますが、再ネゴシエーションは許可しません。
OpenSSL を使用するアプリケーションは、SSL または SSL コンテキスト構造に設定できる、新しく導入した 2 つのオプションを使用することでこの動作を変更できます。
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
を設定すると、パッチを当てたサーバーは、パッチを当てていないクライアントにも再ネゴシエーションを許可しますが、これにより、セキュリティの脆弱性が再発生します。SSL_OP_LEGACY_SERVER_CONNECT
は、パッチを当てたクライアントを、パッチを当てていないサーバーに接続できます。このオプションは、現在デフォルトで設定されています。
これらのオプションは、OpenSSL 機能 (これらのオプションを設定するための SSL_CTX_set_options()
または SSL_set_options()
と、これらの削除する SSL_CTX_clear_options()
または SSL_clear_options()
) によって制御することができます。
詳細については、SSL_CTX_set_options(3)
man ページの "Secure Renegotiation" セクションを参照してください。
Red Hat Enterprise Linux 3、4、 5 に対して openssl
パッケージエラータがリリースされました (2010 年 3 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0162.html
https://rhn.redhat.com/errata/RHSA-2010-0163.html
Red Hat Enterprise Linux 5 に対して openssl097a
パッケージエラータがリリースされました (2010 年 3 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0164.html
Red Hat Enterprise Virtualization に対して openssl
パッケージエラータがリリースされました (2010 年 5 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0440.html
JBoss Enterprise Web Server 1.0 バージョン 1.0.1 に openssl
のアップデートバージョンがリリースされ、カスタマーポータルからダウンロードできます。
JBoss Enterprise Application Platform 5.0 バージョン 5.0.1 に openssl
のアップデートバージョンがリリースされ、カスタマーポータルからダウンロードできます。
注意: アップデートされた OpenSSL パッケージをインストールすると、HTTPS サービスを提供する mod_ssl
モジュールを使用し、サーバー始動の再ネゴシエーションを使用するように設定された httpd
インストールは、パッチを当てていないクライアント (ユーザーの web ブラウザー) とは動作しなくなります。サーバー始動の再ネゴシエーションを使用しなくてもよくなるようにするための設定変更については、以下の mod_ssl で無効になるクライアント始動の再ネゴシエーションセクションに記載されています。新しい mod_ssl
設定ディレクティブ SSLInsecureRenegotiation を使用するとパッチを当てていないクライアントとの再ネゴシエーションが許可されるため、保護されていない再ネゴシエーションが有効になります。
Red Hat Enterprise Linux 4 および 5 に SSLInsecureRenegotiation
ディレクティブのサポートを追加する httpd
パッケージエラータがリリースされました (2010 年 3 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0168.html
https://rhn.redhat.com/errata/RHSA-2010-0175.html
JBoss Enterprise Web Server の SSLInsecureRenegotiation
ディレクティブにサポートを追加する httpd
および httpd22
パッケージエラータがリリースされました (2010 年 3 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0396.html
Solaris および Windows 版の JBoss Enterprise Web Server 1.0 httpd
パッケージがアップデートされ、カスタマーポータルからダウンロードできます。
NSS (Network Security Services) への RFC 5746 実装
NSS での RFC 5746 サポートが、バージョン 3.12.6 でアップストリームに導入されました。
パッチを当てた Red Hat NSS パッケージでは、再ネゴシエーションは以下のように動作します。
- パッチを当てたクライアントはパッチを当てたサーバーに接続して再ネゴシエーションを行います。
- パッチを当てたクライアントはパッチを当てていないサーバーに接続して再ネゴシエーションを行います。これは、 暫定的な動作です。今後の NSS アップデートでは、パッチを当てていないサーバーへの接続または再ネゴシエーションが行われないようになる可能性があります。
- パッチを当てたサーバーは、パッチを当てたクライアントに接続と再ネゴシエーションを許可します。
- パッチを当てたサーバーは、パッチを当てていないクライアントに接続を許可しますが、再ネゴシエーションは許可しません。
NSS を使用するアプリケーションは、新しく導入した 2 つのオプションを使用することでこの動作を変更できます。これらのオプションは、NSS SSL_OptionSet()
関数を使用して SSL ソケットで設定できます。
SSL_ENABLE_RENEGOTIATION
は、再ネゴシエーション動作を制御します。ここでは、以下のいずれかの値が許可されます。SSL_RENEGOTIATE_UNRESTRICTED
は、保護されていないネゴシエーションも含む、すべての再ネゴシエーションを許可します。SSL_RENEGOTIATE_NEVER
は、保護されたネゴシエーションも含む、すべての再ネゴシエーションを拒否します。SSL_RENEGOTIATE_REQUIRES_XTN
は、RFC 5746 を使用する保護された再ネゴシエーションを許可します。これは、アップストリーム NSS 3.12.6 に対するデフォルトです。SSL_RENEGOTIATE_TRANSITIONAL
はSSL_RENEGOTIATE_REQUIRES_XTN
と類似していますが、パッチを当てたクライアントがパッチを当てていないサーバーと再ネゴシエーションできます。これは、現在の Red Hat NSS パッケージのデフォルトです。
SSL_REQUIRE_SAFE_NEGOTIATION
は、保護された再ネゴシエーションが初期の TLS/SSL ハンドシェイクで必要かどうか (つまり、パッチを当てたクライアントがパッチを当てていないサーバーに接続できるか、またはパッチを当てたサーバーが、パッチを当てていないクライアントからの接続を許可するかどうか) を制御します。現在のデフォルト値は false です。
NSS ライブラリを使用してアプリケーションを修正してこれらのオプションを設定する呼び出しを追加するだけでなく、以下の環境変数を使用して、修正されていないアプリケーションに対して、デフォルト値を変更できます。
-
NSS_SSL_ENABLE_RENEGOTIATION
は、SSL_ENABLE_RENEGOTIATION
オプションのデフォルト値を変更します。有効な値は以下のようになります。- "
1
"、または "u
" (大文字と小文字は区別しない) は、SSL_RENEGOTIATE_UNRESTRICTED
にデフォルト設定します。 - "
0
" または "n
" (大文字と小文字は区別しない) は、SSL_RENEGOTIATE_NEVER
にデフォルト設定します。 - "
2
" または "r
" (大文字と小文字は区別しない) は、SSL_RENEGOTIATE_REQUIRES_XTN
にデフォルト設定します。 - "
3
"、または "t
" (大文字と小文字は区別しない) は、SSL_RENEGOTIATE_TRANSITIONAL
にデフォルト設定します。 - 注意: NSS は、
NSS_SSL_ENABLE_RENEGOTIATION
環境変数値の最初の文字だけを確認します。したがって、上に示す値の後に任意の文字列を追加できます。これにより、たとえば "1
" または "u
" を使う代わりに "unrestricted
" と設定できます。
- "
-
NSS_SSL_REQUIRE_SAFE_NEGOTIATION
は、SSL_REQUIRE_SAFE_NEGOTIATION
オプションのデフォルト値を変更します。有効な値は以下のようになります。- "
1
" で始まる値はデフォルトを True に設定します。
- "
Red Hat Enterprise Linux 4 および 5 に nss
パッケージエラータがリリースされました (2010 年 3 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0165.html
Red Hat Enterprise Virtualization に nss
パッケージエラータがリリースされました (2010 年 5 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0440.html
注意: アップデートされた NSS パッケージをインストールすると、HTTPS サービスを提供する mod_nss
モジュールを使用し、サーバー始動の再ネゴシエーションを使用するように設定された httpd
インストールは、パッチを当てていないクライアント (ユーザーの web ブラウザー) には有効ではなくなります。サーバー始動の再ネゴシエーションは、以下の mod_ssl で無効になるクライアント始動の再ネゴシエーションセクションの mod_ssl
で説明されているように設定を変更すると使用する必要がなくなります。または、以下の行を /etc/sysconfig/httpd
に追加し、httpd
サービスを再起動すると、保護されていない再ネゴシエーションが mod_nss
に対して許可されます。
export NSS_SSL_ENABLE_RENEGOTIATION=u
Red Hat Enterprise Linux 版 Red Hat Certificate System 7.3 の dirsec-nss
パッケージは、RHSA-2010:0165 でリリースされたシステムの nss
パッケージによって廃止されました。
Solaris 版 Red Hat Certificate System 7.3 で dirsec-nss
パッケージがアップデートされ (2010 年 4 月 15 日 リリース)、Red Hat Network の "Red Hat Certificate System 7.3 (for Solaris 9)" チャンネルからダウンロードできます。
https://rhn.redhat.com/rhn/software/channel/downloads/Download.do?cid=7094
Red Hat Enterprise Linux および Solaris 版 Red Hat Certificate System 7.1 の Hotfix パッケージは Red Hat サポートから取得できます。
注意: Red Hat Certificate System 7.1、7.3、および 8.0 は、デフォルトでサーバー始動の再ネゴシエーションを使用します。Certificate System サーバーと同じ時にすべてのクライアントをアップデートできない場合に、Red Hat Certificate System でサーバー始動の再ネゴシエーションを使用しないようにするために必要な設定変更については、Configuration changes to prevent server-initiated TLS session renegotiations in Red Hat Certificate System を参照してください。Red Hat Certificate System 7.3 のユーザーは、NSS パッケージのアップデートに併せて、アップデートした rhpki-ra
および rhpki-tps
パッケージを RHBA-2010:0170 からインストールする必要があります。
Solaris 版 Red Hat Directory Server 8 で dirsec-nss
パッケージがアップデートされ (2010 年 4 月 15 日リリース)、Red Hat Network の "Red Hat Directory Server 8 (for Solaris 9)" チャンネルからダウンロードできます。
https://rhn.redhat.com/rhn/software/channel/downloads/Download.do?cid=7810
Red Hat Enterprise Linux および Solaris 版 Red Hat Directory Server 7.1 の Hotfix パッケージは、Red Hat サポートから取得できます。
注意: Red Hat Directory Server にアップデートされた NSS パッケージをインストールする際の注意については、The Effects of the TLS Session Renegotiation Vulnerability on Red Hat Directory Server 7.1 および The Effects of the TLS Session Renegotiation Vulnerability on Red Hat Directory Server 8.1 を参照してください。
GnuTLS への RFC 5746 実装
GnuTLS への RFC 5746 サポートが、バージョン 2.10.0 でアップストリームに導入されました。
パッチを当てた Red Hat GnuTLS パッケージでは、再ネゴシエーションは以下のように動作します。
- パッチを当てたクライアントはパッチを当てたサーバーに接続して再ネゴシエーションを行います。
- パッチを当てたクライアントはパッチを当てていないサーバーに接続できますが、再ネゴシエーションはできません。今後の GnuTLS アップデートでは、パッチを当てていないサーバーへの接続が行われないようになる可能性があります。
- パッチを当てたサーバーは、パッチを当てたクライアントに接続と再ネゴシエーションを許可します。
- パッチを当てたサーバーは、パッチを当てていないクライアントに接続を許可しますが、再ネゴシエーションは許可しません。
GnuTLS を使用するアプリケーションを修正して、新しく導入した 2 つの関数を使用する各 GnuTLS に対するこの動作を変更します。
gnutls_safe_renegotiation_set()
関数を使用すると、保護されていない再ネゴシエーションを許可します。デフォルトでは、保護された再ネゴシエーションが必要です。gnutls_safe_negotiation_set_initial()
を使用すると、保護された初期再ネゴシエーションが必要です。
注意: 上述された関数は、Red Hat Enterprise Linux 4 および 5 の gnutls
パッケージでのみ利用できます。Red Hat Enterprise Linux 6 の gnutls
パッケージでは、再ネゴシエーション動作は、優先度文字列で特定キーワードを使用して制御できます。詳細は、gnutls_priority_init(3)
の man ページに記載されています。優先度文字列における特定キーワードは、Red Hat Enterprise Linux 4 および 5 ではサポートされていません。
Red Hat Enterprise Linux 4 および 5 の gnutls
パッケージエラータが 2010 年 3 月 25 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0166.html
https://rhn.redhat.com/errata/RHSA-2010-0167.html
Red Hat Enterprise Virtualization に gnutls
パッケージエラータがリリースされました (2010 年 5 月 25 日)。
https://rhn.redhat.com/errata/RHSA-2010-0440.html
Sun および OpenJDK Java ランタイム環境への RFC 5746 実装
RFC 5746 の Sun Java ランタイム環境 (JRE) へのサポートが、バージョン 6 のアップデート 22 と、対応する OpenJDK アップデートでアップストリームに導入されました。
パッチを当てた Sun および OpenJDK JRE パッケージでは、再ネゴシエーションは以下のように動作します。
- パッチを当てたクライアントはパッチを当てたサーバーに接続して再ネゴシエーションを行います。
- パッチを当てたクライアントはパッチを当てていないサーバーに接続できますが、再ネゴシエーションはできません。
- パッチを当てたサーバーは、パッチを当てたクライアントに接続と再ネゴシエーションを許可します。
- パッチを当てたサーバーは、パッチを当てていないクライアントに接続を許可しますが、再ネゴシエーションは許可しません。
以下のプロパティを使用すると、デフォルトの再ネゴシエーション動作を変更できます。
sun.security.ssl.allowUnsafeRenegotiation
(デフォルト値はfalse
) を使用すると、パッチを当てていないピアとの保護されていない再ネゴシエーションを許可できます。sun.security.ssl.allowLegacyHelloMessages
(デフォルト値true
) を使用すると、パッチを当てていないピアとの接続を完全に拒否します。
詳細については、以下のドキュメントを参照してください。
http://www.oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html
Red Hat Enterprise Linux 5 の java-1.6.0-openjdk
パッケージエラータが 2010 年 10 月 13 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0768.html
Red Hat Enterprise Linux 4 Extras および Red Hat Enterprise Linux 5 Supplementary に対する java-1.6.0-sun
パッケージエラータが 2010 年 10 月 14 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0770.html
Red Hat Enterprise Linux 6 の java-1.6.0-openjdk
パッケージエラータが 2010 年 11 月 10 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0865.html
IBM Java ランタイム環境への RFC 5746 実装
IBM Java ランタイム環境 (JRE) への RFC 5746 サポートが、バージョン 5.0 SR12-FP2 と 1.4.2 SR13-FP6 でアップストリームに導入されました。
パッチを当てた IBM JRE パッケージでは、再ネゴシエーションは以下のように動作します。
- パッチを当てたクライアントはパッチを当てたサーバーに接続して再ネゴシエーションを行います。
- パッチを当てたクライアントはパッチを当てていないサーバーに接続できますが、再ネゴシエーションはできません。
- パッチを当てたサーバーは、パッチを当てたクライアントに接続と再ネゴシエーションを許可します。
- パッチを当てたサーバーは、パッチを当てていないクライアントに接続を許可しますが、再ネゴシエーションは許可しません。
以下のプロパティを使用すると、デフォルトの再ネゴシエーション動作を変更できます。
com.ibm.jsse2.renegotiate
を使用すると再ネゴシエーションを有効または無効にできます。以下を含む、複数の値が認識されます。NONE
(デフォルト値) は、 RFC 5746 を実装するピアとの保護された再ネゴシエーションだけが許可されます。ALL
は、安全および安全ではない再ネゴシエーションが許可されます。
com.ibm.jsse2.extended.renegotiation.indicator
は、RFC 5746 サポートが、初期 TLS/SSL ハンドシェイク時に必要かどうかを制御します。有効な値は以下のようになります。OPTIONAL
(デフォルト値) では、初期ハンドシェイク時に RFC 5746 サポートが必要ありません。CLIENT
、SERVER
、BOTH
では、クライアントソケット、サーバーソケット、またはクライアントとサーバーソケットの両方に、それぞれ RFC 5746 サポートが必要です。
詳細については、以下のドキュメントを参照してください。
http://www.ibm.com/developerworks/java/jdk/security/50/secguides/jsse2Docs/JSSE2_RFC5746.html
Red Hat Enterprise Linux 3 Extras、Red Hat Enterprise Linux 4 Extras、および Red Hat Enterprise Linux 5 Supplementary に対する java-1.4.2-ibm
パッケージエラータが 2010 年 10 月 20 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0786.html
Red Hat Enterprise Linux 4 Extras および Red Hat Enterprise Linux 5 Supplementary に対する java-1.5.0-ibm
パッケージエラータが 2010 年 10 月 27 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0807.html
SAP 向けの Red Hat Enterprise Linux 4、5、および 6 に対する java-1.4.2-ibm-sap
パッケージエラータが 2010 年 12 月 15 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0986.html
Red Hat Enterprise Linux 4 Extras、ならびに Red Hat Enterprise Linux 5 および 6 Supplementary に対する java-1.6.0-ibm
パッケージエラータが 2010 年 12 月 15 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0987.html
注意: java-1.4.2-ibm
パッケージのアップデートは再ネゴシエーションを無効にし、JSSE コンポーネントに対するデフォルト以外の IBM JSSE2 プロバイダーにのみ RFC 5746 サポートを追加します。デフォルトの JSSE プロバイダーはこれらの修正ではアップデートされません。IBM Java 2 Runtime Environment を設定して JSSE2 プロバイダーをデフォルトで使用する方法については、IBMJSSE2 Provider Reference Guide を参照してください。
問題を軽減するためのアップデート
このセクションは、RFC 5746 が定義される前にこの不具合を軽減するするためのアップデートがリリースされたことと、それを実装するためのアップデートについて説明します。RFC 5746 のサポートを導入するアップデートと、 アップグレードしたクライアントとサーバーと間で安全な再ネゴシエーションを許可するアップデートは、上述の Updates adding RFC 5746 support セクションで説明されています。
mod_ssl
で無効になるクライアントが開始した再ネゴシエーション
httpd
パッケージがアップデートされました。このリリースでは、クライアント始動の再ネゴシエーションをすべて拒否するように mod_ssl
を変更します。これにより、mod_ssl
を使用して HTTPS サービスを提供する設定の大部分において、不具合が軽減されます。ただし、サーバー始動の再ネゴシエーションが必要な場合は、依然として攻撃は可能です。
依然としてこの問題に影響される設定は、通常、以下のようになります。
- クライアントの証明証認証が、サイトの一部に使用されていますが、デフォルトでは必要ありません。これは、"
SSLVerifyClient require
" が<Location>
または<Directory>
コンテキストセクションで設定されている場合に発生しますが、SSL サーバーで対応する<VirtualHost>
が設定されていない場合は発生しません。 - 異なる暗号スイートが、web サイトの異なる部分に必要です。暗号スイートの要件は、
SSLCipherSuite
ディレクトリを使用する各サーバーまたは各ディレクトリコンテキストに対して設定できます。
サーバー始動の再ネゴシエーションは以下によって防ぐことができます。
- サイトのレイアウトを変更すると、サイトの一部ではなく全体に対してクライアントの証明書認証が必要になります。つまり、"
SSLVerifyClient
" が<VirtualHost>
セクションに直接置かれた場合に限り使用されます。 - サイト全体で同じ暗号スイートを使用します。すべてのディレクトリおよび場所の暗号化に関する強力要件は
<VirtualHost>
セクションに設定することです。
注意: クライアントとサーバーがともに RFC 5746 をサポートしている場合は、サーバー始動の再ネゴシエーションが必要な上述の設定でも、安全に再ネゴシエーションできます。mod_ssl
は OpenSSL ライブラリを使用するため、RFC 5746 サポートを追加し、HTTPS サービスが安全な再ネゴシエーションを使用できるようにインストールする必要がある openssl
パッケージアップデートの一覧とその説明については、上述の OpenSSL への RFC 5746 実装セクションを参照してください。
Red Hat Enterprise Linux 3、4、および 5 に対する httpd
パッケージエラータが 2009 年 11 月 11 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2009-1579.html
https://rhn.redhat.com/errata/RHSA-2009-1580.html
JBoss Enterprise Web Server に対する httpd
および httpd22
パッケージエラータが 2010 年 1 月 6 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0011.html
Solaris 向け JBoss Enterprise Web Server 1.0 パッケージのアップデートがカスタマーポータルからダウンロードできます。
IBM Java ランタイム環境で無効になる再ネゴシエーション
IBM JRE バージョン 6 SR7、5.0 SR11-FP1、および 1.4.2 SR13-FP4 は、デフォルトで再ネゴシエーションを無効にします。com.ibm.jsse2.renegotiate
プロパティを使用して再ネゴシエーション動作を制御できます。デフォルト値は NONE
です (再ネゴシエーションは無効)。このプロパティの値を ALL
に設定すると、保護されない再ネゴシエーションを再度有効にできます。詳細については、以下のドキュメントを参照してください。
http://www-01.ibm.com/support/docview.wss?uid=nas258cbfcf0a5645af7862576710041f65e
これらのアップデートは、RFC 5746 サポートを追加するアップデートによって廃止されました。上述の IBM Java ランタイム環境への RFC 5746 実装セクションを参照してください。
Red Hat Enterprise Linux 4 Extras および Red Hat Enterprise Linux 5 Supplementary に対する java-1.6.0-ibm
パッケージエラータが 2009年 12 月 23 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2009-1694.html
Red Hat Enterprise Linux 4 Extras および Red Hat Enterprise Linux 5 Supplementary に対する java-1.5.0-ibm
パッケージエラータが 2010 年 3 月 3 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0130.html
Red Hat Enterprise Linux 3 Extras、Red Hat Enterprise Linux 4 Extras、および Red Hat Enterprise Linux 5 Supplementary に対する java-1.4.2-ibm
パッケージエラータが 2010 年 3 月 17 日にリリースされます。
https://rhn.redhat.com/errata/RHSA-2010-0155.html
SAP 向け Red Hat Enterprise Linux 4 および 5 に対する java-1.4.2-ibm
パッケージエラータが 2010 年 3 月 12 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0408.html
Sun および OpenJDK Java ランタイム環境で無効になる再ネゴシエーション
Sun JRE バージョン 6 Update 19 と、対応する OpenJDK JRE アップデートは、デフォルトで再ネゴシエーションを無効にします。sun.security.ssl.allowUnsafeRenegotiation
プロパティを使用すると、保護されない再ネゴシエーションを有効にできます。デフォルト値は false
です (再ネゴシエーションは無効).。
これらのアップデートは、RFC 5746 サポートを追加するアップデートによって廃止されました。上述の Sun および OpenJDK Java ランタイム環境への RFC 5746 実装 セクションを参照してください。
Red Hat Enterprise Linux 4 Extras および Red Hat Enterprise Linux 5 Supplementary に対する java-1.6.0-sun
パッケージエラータが 2010 年 3 月 31 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0337.html
Red Hat Enterprise Linux 5 の java-1.6.0-openjdk
パッケージエラータが 2010 年 3 月 31 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0339.html
Apache Tomcat で無効になる再ネゴシエーション
スタンドアロンの HTTPS サーバーとして実行するように Apache Tomcat を設定できます。TLS/SSL の場合、Tomcat HTTPS コネクターは、JRE (Sun、IBM、または OpenJDK) もしくは OpenSSL (Tomcat Native ライブラリの使用時) の JSSE コンポーネントが提供する実装を使用できます。JSSE および OpenSSL の両方は、クライアントが要求する再ネゴシエーションを透過的に処理します。また、Tomcat は、クライアントの証明書認証を使用して、特定の設定下で再ネゴシエーションすることをクライアントに求めます。設定内容はたとえば以下のようになります。
- 以下のような場合、最初の接続時にクライアント証明書は必要ありません。
- JSSE を使用する HTTPS コネクターの
clientAuth
をfalse
を設定する - OpenSSL を使用する HTTPS コネクターの
SSLVerifyClient
属性をnone
に設定する
- JSSE を使用する HTTPS コネクターの
- web アプリケーションは、アプリケーションの
web.xml
ファイルのlogin-config
セクションにCLIENT-CERT
認証方法を指定します。
以下の軽減対策が、Tomcat および Tomcat Native に適用されました。
- Tomcat 5.5.29 および 6.0.21 は、JSSE
allowUnsafeLegacyRenegotiation
を使用して HTTPS コネクターに新しい属性を追加します。この属性をfalse
(デフォルト値) に設定すると、Tomcat クライアントは、クライアントおよびサーバーが始動する再ネゴシエーションをともに拒否します。 - Tomcat Native 1.1.18 は、OpenSSL を使用する HTTPS コネクターに対して、クライアント始動の再ネゴシエーションを制限します。サーバー始動の再ネゴシエーションは許可されたままとなります。この軽減は、上述される
mod_ssl
軽減と類似しています。
これらの軽減の詳細については、Tomcat および Tomcat Native ドキュメントと、以下の脆弱性ページを参照してください。
http://tomcat.apache.org/security-5.html
http://tomcat.apache.org/security-6.html
http://tomcat.apache.org/security-native.html
注意: 別の web サーバーの後ろにある Servlet または JavaServer Pages (JSP) コンテナーとして Tomcat を使用するのは一般的です。 これは、暗号化した接続を処理し、暗号化されていないフォーマットで Tomcat にリクエストを渡します。これらの設定では、上述した Tomcat および Tomcat Native の軽減は適用されません。この問題は、web サーバー、または web サーバーが使用する TLS/SSL ライブラリで対応する必要があります。
更新された tomcat5
、tomcat6
、および tomcat-native
パッケージは、JBoss Enterprise Web Server 1.0.1 アップデートの一部として 2010 年 2 月 23 日にリリースされました。
https://rhn.redhat.com/errata/RHSA-2010-0119.html
Solaris 向け JBoss Enterprise Web Server 1.0.1 パッケージがアップデートされ、カスタマーポータルからダウンロードできます。
改訂履歴 (英語版)
- 2009-11-05 - Initial version.
- 2009-11-09 - Extended impact description.
- 2009-11-11 - Added descriptions of the
httpd
/mod_ssl
mitigations, references to RHSA-2009:1579 and RHSA-2009:1580. - 2010-02-09 - Added reference to RHSA-2010:0011.Added reference to the IETF approved renegotiation extension draft.Added IBM JRE mitigation notes and reference to RHSA-2009:1694.
- 2010-02-23 - Added reference to RFC 5746.Added Tomcat mitigation notes and reference to RHSA-2010:0119.
- 2010-03-03 - Added reference to RHSA-2010:0130.
- 2010-03-17 - Added reference to RHSA-2010:0155.
- 2010-03-25 - Added descriptions of the
openssl
,nss
, andgnutls
updates adding support for RFC 5746.Added references to RHSA-2010:0162, RHSA-2010:0163, RHSA-2010:0164, RHSA-2010:0165, RHSA-2010:0166, RHSA-2010:0167 and RHSA-2010:0168. - 2010-04-01 - Added reference to RHSA-2010:0175.Added Sun and OpenJDK JRE mitigation notes and references to RHSA-2010:0337 and RHSA-2010:0339.
- 2010-06-10 - Added references to updates for Red Hat Certificate System, Red Hat Directory Server, JBoss Enterprise Web Server and JBoss Enterprise Application Platform.Added references to RHSA-2010:0396, RHSA-2010:0408 and RHSA-2010:0440.
- 2010-10-15 - Documented RFC 5746 support in the Sun and OpenJDK JRE.Added references to RHSA-2010:0768 and RHSA-2010:0770.Listed the upstream GnuTLS version providing RFC 5746 support.
- 2010-10-29 - Documented RFC 5746 support in the IBM JRE.Added references to RHSA-2010:0786 and RHSA-2010:0807.
- 2011-01-06 - Added references to RHSA-2010:0865, RHSA-2010:0986, and RHSA-2010:0987.
- 2012-04-16 - Added link to Eric Rescorla's issue description.Clarified "Client-initiated renegotiations disabled in mod_ssl" section regarding OpenSSL packages updates that add RFC 5746 support.
Comments