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を無効にした場合の影響
パソコンへの影響
- WindowsのInternet Explorer 6 (IE6) が https のサイトへアクセスできなくなります。
ガラケーへの影響
- 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サーバで利用できる暗号スィートをリストアップするには、sslscanかnmapを使うと簡単です。
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
関連項目
- OpenSSL
- sslscan
- Transport Layer Security (SSL/TLS)
- nmap
- sslscan
ツイート