「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を無効にした場合の影響
パソコンへの影響
- 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