SSL 3.0 の脆弱性 (POODLE) 対策

2017-01-04

概要

SSLv3.0 プロトコルの脆弱性(CVE-2014-3566)が発見されております

「POODLE(Padding Oracle On Downgraded Legacy Encryption)」と命名されたこの脆弱性は、SSL 3.0で使用されるCBC暗号アルゴリズムに問題があるもの。脆弱性が悪用された場合、攻撃者が傍受したHTTPSトラフィックから、暗号化されたトラフィックの一部(認証Cookieなど)が解読される恐れがある。

Googleでは、SSL 3.0は約15年前のプロトコルで、TLS 1.2/1.1/1.0といった後継のプロトコルも普及しているが、現在でも多くのサイトでSSL 3.0が使われていると説明。また、HTTPSサーバーのバグにより接続ができない場合、ブラウザーは古いバージョンのプロトコルで接続を試みるため、攻撃者がこうした機能を利用してSSL 3.0の脆弱性を悪用する恐れがあるとしている。

POODLE: SSLv3.0 脆弱性 (CVE-2014-3566)
SSL 3.0に深刻な脆弱性(itmedia)

サーバーサイドでの対策は、SSL3.0を無効化します
Apacheでは以下の設定でSSL3.0を無効化できます
Apache2.2系では、①、②の設定を、Apache2.4系なら③の設定でOKです
筆者のApache2.2系のサーバーは、①の設定で対応しています

# vi /etc/httpd/conf.d/ssl.conf

# ① 全てのSSLプロトコルを有効にして、SSL2.0,SSL3.0のみ無効にする
SSLProtocol All -SSLv2 -SSLv3

# ② 全てのSSLプロトコルを無効にして、TLSv1,TLSv1.1,TLSv1.2のみ有効にする
SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

# ③ Apache2.4X系では、SSL2.0は初期で対応してないので、SSL3.0のみ無効します
SSLProtocol All -SSLv3

VirtualHostにて運用している場合、上記の設定(ssl.conf)が、
ディレクティブより先に有効なるように設定するか、各VirtualHostのディレクティブ内に記述する必要があるので、VirtualHost毎に設定します
<VirtualHost 192.168.24.153:443>
ServerName cms.example1.jpl:443
DocumentRoot /var/www/vhost/cms/html
ErrorLog /var/www/vhost/cms/logs/cms-ssl-error_log
TransferLog /var/www/vhost/cms/logs/cms-ssl-access_log

LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 #VirtualHost毎に設定する
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/vhost/cms/ssl_key/cert.pem
SSLCertificateKeyFile /etc/httpd/vhost/cms/ssl_key/key.pem
</VirtualHost>

設定が有効化の確認は、SSL3.0 SSL2.0のみを有効にしてアクセスすると以下の様なエラーがブラウザに表示されます
ssl3_01

 

 

 

OPEN SSLコマンドで確認方法

SSL2.0, SSL3.0が有効か無効になっているかをCUIで確認するにはOpenSSLのコマンドを利用して以下のオプションで確認できます。

openssl s_client -connect [サーバー証明書のコモンネーム]:[ポート番号] -ssl3
例)openssl s_client -connect www.hoge.com:443 -ssl3

コマンドを叩いて、 以下のようにエラーになれば無効になっています
1519:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52/src/ssl/s2_pkt.c:427:

# SSL2 の場合、以下のようにエラーになれば無効になっています
$ openssl s_client -connect ex1.m-yabe.com:443 -ssl2
CONNECTED(00000003)
1519:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52/src/ssl/s2_pkt.c:427:
# SSL3 の場合、以下のようにエラーになれば無効になっています
$ openssl s_client -connect ex1.m-yabe.com:443 -ssl3
CONNECTED(00000003)
1518:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52/src/ssl/s3_pkt.c:1125:SSL alert number 40
1518:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52/src/ssl/s3_pkt.c:546:

スポンサーリンク