「CVE-2014-3566 SSL 3.0 脆弱性 POODLE」の版間の差分

提供: セキュリティ
移動: 案内検索
(関連項目)
 
行1: 行1:
[[SSL]] v3.0 プロトコルに POODLE (CVE-2014-3566) と呼ばれる脆弱性が発見されました。
+
[[SSL]] v3.0 プロトコルに POODLE (CVE-2014-3566) と呼ばれる脆弱性が発見されました。[[OpenSSL]]の実装の問題ではありませんが、[[OpenSSL]]を使用している環境であれば、TLS_FALLBACK_SCSVをサポートした[[OpenSSL]]のバージョンにアップデートをするのが望ましいです。
  
 
'''読み方'''
 
'''読み方'''
行11: 行11:
  
 
POODLE は、[[Secure Sockets Layer]] (SSL) バージョン 3.0 を使用している場合に影響します。[[Transport Layer Security]](TLS)では、影響をうけません。
 
POODLE は、[[Secure Sockets Layer]] (SSL) バージョン 3.0 を使用している場合に影響します。[[Transport Layer Security]](TLS)では、影響をうけません。
 
  
 
SSL 3.0は、18才になり、未だに幅広くサポートされています。
 
SSL 3.0は、18才になり、未だに幅広くサポートされています。
行21: 行20:
  
 
Google Chrome や Google のサーバは、2014年の2月から TLS_FALLBACK_SCSV をサポートしています。
 
Google Chrome や Google のサーバは、2014年の2月から TLS_FALLBACK_SCSV をサポートしています。
 +
 +
この脆弱性で問題になっているのは、DES-CBCです。DES-CBC3([[DES暗号|3DES]])は、利用しても問題ありません。
  
 
== OpenSSL 1.0.1j ==
 
== OpenSSL 1.0.1j ==
行72: 行73:
 
   res.end('Hello');
 
   res.end('Hello');
 
}).listen(443);
 
}).listen(443);
 +
</syntaxhighlight>
 +
== 調査方法 ==
 +
[[https]]サーバで利用できる暗号スィートをリストアップするには、[[sslscan]]か[[nmap]]を使うと簡単です。
 +
=== nmap ===
 +
<syntaxhighlight lang="bash">
 +
$ nmap --script ssl-enum-ciphers accounts.google.com -p 443
 +
</syntaxhighlight>
 +
=== sslscan ===
 +
<syntaxhighlight lang="bash">
 +
$ sslscan accounts.google.com
 +
</syntaxhighlight>
 +
 +
[[OpenSSL]]コマンドを使用して、選択されるアルゴリズムを調べる例です。
 +
<syntaxhighlight lang="bash">
 +
$ 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
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== 関連項目 ==
 
== 関連項目 ==
行77: 行100:
 
* [[sslscan]]
 
* [[sslscan]]
 
* [[Transport Layer Security]] (SSL/TLS)
 
* [[Transport Layer Security]] (SSL/TLS)
 +
* [[nmap]]
 +
* [[sslscan]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2014年10月24日 (金) 00:46時点における最新版

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

関連項目