2014年4月19日土曜日

MewとOpenSSLとstunnelのアップデート(Hearbleedバグ対応 途中編)

OpenSSLのHeartbleed(心臓出血)バグが見つかり、情報流出のニュースも出てきました。

OpenSSLは、大雑把にいうと、ユーザのクライアントコンピュータ(PCなど)が、WebサーバやメールサーバとhttpsやSSLというプロトコルで通信する場合に、ネットワーク経路上のデータを暗号化してくれるソフトウェアです。
今回見つかったバグでは、暗号化されている通信の内容や、秘密鍵を盗聴される可能性があるということです(OpenSSLの該当バージョン(1.01から 1.01f)が使われている場合)。

OpenSSLは、サーバ側(Webサーバやメールサーバ)で使用される場合と、クライアント側(PC, Mac, Linux機など)で使用される場合があります。ですので、サーバ側とクライアント側の、それぞれに対して攻撃される可能性があり、特に今回は、ユーザ情報が集まるサーバ側への攻撃と情報流出がニュースになっています。

サーバ側の対策は、そのサーバの運営者が対応してくれるまでは、ユーザとしては使用を控えるというような消極的なことしか、対応の方法がありません。
よく使用するサービスの場合は、対応状況を確認して、脆弱性のないバージョンになったことを確認したあと、パスワードを変更するようにするとよいと思います。

ところで、ユーザ側は何も対策しなくてもいいかというとそういうこともなく、サーバ側がクラックされたり、悪意のあるサーバを立てられて誘導されたりすると、そこに接続することになるユーザ側のクライアント機もOpenSSLを使用しているとクラックされる可能性があります。

Macの場合、デフォルトの状態ではHeatbleedバグを持つOpenSSLは使用されていないようです。残念ながら、私は、EmacsのMewというメールクライアントを使用しており、MacPortsでOpenSSLとそれを使いやすくしてくれるstunnelというソフトウェアを導入していました。

しかし、MacPortsで、OpenSSLとstunnelをアップグレードしたのですが、Mewが動かなくなってしまいました。今回のアップグレードで、stunnelが5.01になっていましたが、Mewのソースコード(mew-ssl.el)を見ると、Mewはstunnelのバージョン3と4に対応しており、stunnelのバージョンが5だと、バージョン3と認識されるようなコードになっていました。私はそれ以上、自分で修正できるような知識はありませんので、Mewがstunnel 5に対応するまでは、stunnel 4を使用するようにしました。といっても、MacPortsで、stunnel 5をdeactivateして、stunnel 4をactivateしただけです。
stunnel 4でも、使用されるOpenSSLはバグフィックスバージョンなので、当面はこのままでもよいかなと思っています。(Running with OpenSSL 1.0.1g)

$ stunnel -version
stunnel 4.47 on i386-apple-darwin10.8.0 platform
Compiled with OpenSSL 1.0.1e 11 Feb 2013
Running  with OpenSSL 1.0.1g 7 Apr 2014
Update OpenSSL shared libraries or rebuild stunnel
Threading:PTHREAD SSL:ENGINE Auth:none Sockets:SELECT,IPv6

Global options:
debug           = daemon.notice
pid             = /opt/local/var/run/stunnel/stunnel.pid
RNDbytes        = 64
RNDfile         = /dev/urandom
RNDoverwrite    = yes

Service-level options:
ciphers         = ALL:!SSLv2:!aNULL:!EXP:!LOW:-MEDIUM:RC4:+HIGH
curve           = prime256v1
session         = 300 seconds
sslVersion      = TLSv1 for client, all for server
stack           = 65536 bytes
TIMEOUTbusy     = 300 seconds
TIMEOUTclose    = 60 seconds
TIMEOUTconnect  = 10 seconds
TIMEOUTidle     = 43200 seconds
verify          = none

また、Mewもバージョンアップの準備が進んでいる( http://www.mew.org/Beta/, https://github.com/kazu-yamamoto/Mew, http://www.mew.org/pipermail/mew-dist/2014-April/029344.html )ようですので、正式版になったらバージョンアップする予定です。

0 件のコメント:

コメントを投稿