2014年11月18日火曜日

OpenSSL1.0.1_16 + stone2.3e における SSLv3 関連の問題について

仙石氏(sengoku@gcd.org) の  stone は、私が好んで使う SSLwrapperの中で、TLSに対応するパッチを行う必要のないものとして、重宝している。

このところ POODLE 攻撃に対応する作業を行っているが、それ以前に夏の「HeartBleed」騒ぎで、長らく  OpenSSL1.0.1への移行を遅らせていたサーバ周りも、止む得ず更新することになっているが、SSL3.0使用禁止、というかインプリメンテーションから削除されているライブラリをリンクして以来、stone の監視ログでは、下記のようなエラーが繰り返し出ていた。

4000000054661be82e43fc8c Nov 15 00:12:30.776188 34380739584 Debug level: 1
@4000000054661be82e452954 Nov 15 00:12:30.776267 34380739584 SSL_CTX_new error
@4000000054661be92f846bcc Nov 15 00:12:31.797085 34380739584 start (2.3e) [36272]
@4000000054661be92f84e8cc Nov 15 00:12:31.797191 34380739584 Debug level: 1
@4000000054661be92f85c774 Nov 15 00:12:31.797278 34380739584 SSL_CTX_new error
@4000000054661bea30b5621c Nov 15 00:12:32.817076 34380739584 start (2.3e) [36274]
@4000000054661bea30b5df1c Nov 15 00:12:32.817182 34380739584 Debug level: 1
@4000000054661bea30b6a26c Nov 15 00:12:32.817258 34380739584 SSL_CTX_new error
@4000000054661beb31e8d90c Nov 15 00:12:33.837209 34380739584 start (2.3e) [36276]
@4000000054661beb31ea195c Nov 15 00:12:33.837327 34380739584 Debug level: 1
@4000000054661beb31ea5bc4 Nov 15 00:12:33.837418 34380739584 SSL_CTX_new error
@40000000546aec8e36c82d74 tcpserver: status: 0/40
これらは、stone が もともと SSL3.0対応のコードを残しているためで、現在の FreeBSDのセキュリティパッチが完了したOpenSSL環境では異常終了してしまう。

幸い、run オプション 以下を加えれば TLS1.0のみとすればSSLv3をサポートした状態で起動するのを回避できることが判明した。

-z tls1

このオプションを加えるだけでエラーが出なくなった。仙石さんもお忙しいのだろうが、SSL3.0を使うクライアントはいずれ消滅させられてしまうだろうから、コンパイルオプション以前にコードから削除してしまった方がいいのではなかろうか。 私が管理するサーバ側ライブラリも、libresslに移行するという荒業を行うか躊躇っているけれど、バグが残っているOpenSSLに頼るくらいなら、検証サーバでテストして移行してしまった方が、精神衛生上よいかもしれない。