CVE-2014-3566 SSL 3.0 脆弱性 POODLE

提供: セキュリティ
移動: 案内検索
スポンサーリンク

SSL v3.0 プロトコルに POODLE (CVE-2014-3566) と呼ばれる脆弱性が発見されました。OpenSSLの実装の問題ではありませんが、OpenSSLを使用している環境であれば、TLS_FALLBACK_SCSVをサポートしたOpenSSLのバージョンにアップデートをするのが望ましいです。

読み方

POODLE
ぷーどる
OpenSSL
おーぷんえすえすえる

概要

POODLE とは、 Padding Oracle On Downgraded Legacy Encryption の略称です。中間者攻撃により、padding oracle side-channel 攻撃を行い、暗号文を解読できます。

POODLE は、Secure Sockets Layer (SSL) バージョン 3.0 を使用している場合に影響します。Transport Layer Security(TLS)では、影響をうけません。

SSL 3.0は、18才になり、未だに幅広くサポートされています。 ほとんどのブラウザでSSL 3.0はサポートされています。 ブラウザは、古いプロトコルバージョンで接続の失敗をリトライします。 ネットワークの攻撃者は、コネクションを失敗させ、SSL 3.0を使用させ、この問題を利用します。

SSL 3.0のサポート、もしくは、SSL 3.0でのCBCモードの暗号を無効にすることで、この問題への防御は十分です。しかし、十分な互換性の問題が残ります。そのため、TLS_FALLBACK_SCSV のサポートを推奨します。TLS_FALLBACK_SCSV のメカニズムは、失敗したコネクションのリトライを引き起こす問題を解決し、SSL 3.0を使用するブラウザから攻撃者を防ぎます。また、TLS 1.2, 1.1, 1.0 からのダウングレードを防ぎます。

Google Chrome や Google のサーバは、2014年の2月から TLS_FALLBACK_SCSV をサポートしています。

この脆弱性で問題になっているのは、DES-CBCです。DES-CBC3(3DES)は、利用しても問題ありません。

OpenSSL 1.0.1j

OpenSSL 1.0.1j で TLS_FALLBACK_SCSV のサポートが追加されました。

SSL 3.0 Fallback protection

Severity: Medium

OpenSSL has added support for TLS_FALLBACK_SCSV to allow applications
to block the ability for a MITM attacker to force a protocol
downgrade.
  • OpenSSL 1.0.1 は 1.0.1j へアップグレードします。
  • OpenSSL 1.0.0 は 1.0.0o へアップグレードします。
  • OpenSSL 0.9.8 は 0.9.8zc へアップグレードします。

SSL 3.0を無効にした場合の影響

パソコンへの影響

ガラケーへの影響

  • AU KDDI の一部の機種が https のサイトへアクセスできなくなります。
  • NTT ドコモ の一部の機種が https のサイトへアクセスできなくなります。
  • ソフトバンクモバイルは問題ないようです。

対応方法

Apache httpd + mod_ssl

SSLProtocol All -SSLv2 -SSLv3

Apache httpd 2.4の場合は、SSLv3の設定を消すだけでOKです。

SSLProtocol All -SSLv3

nginx

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

node.js

var https = require('https'), fs = require('fs');
 
https.createServer({
  // SSLv2, SSLv3, TLSv1, TLSv1.1 and TLSv1.2
  secureProtocol: 'SSLv23_method',
 
  // disable SSLv3
  secureOptions: constants.SSL_OP_NO_SSLv3,
 
  cert: fs.readFileSync(path.join(__dirname, 'ssl', 'server.crt')),
  key: fs.readFileSync(path.join(__dirname, 'ssl', 'server.key')),
}, function (req, res) {
  res.end('Hello');
}).listen(443);

調査方法

httpsサーバで利用できる暗号スィートをリストアップするには、sslscannmapを使うと簡単です。

nmap

$ nmap --script ssl-enum-ciphers accounts.google.com -p 443

sslscan

$ sslscan accounts.google.com

OpenSSLコマンドを使用して、選択されるアルゴリズムを調べる例です。

$ echo ''|openssl s_client -connect accounts.google.com:443 \
-ssl3 -cipher AES:DES:DES3:RC4 2>&1 |grep Cipher
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
    Cipher    : ECDHE-RSA-RC4-SHA
$ echo ''|openssl s_client -connect www.amazon.co.jp:443 \
-ssl3 -cipher AES:DES:DES3:RC4 2>&1 |grep Cipher
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
    Cipher    : ECDHE-RSA-AES128-SHA

関連項目




スポンサーリンク