SSLv2 を有効にしている TLS 実装の脆弱性 ― 馬も鹿も暗号化する時代のセキュリティ

no extension

脆弱性の内容

いい加減 SSL 周りの脆弱性にはうんざりなのだが, OpenSSL をはじめとする SSL/TLS 暗号通信の実装に複数のセキュリティ脆弱性あり。

CVE 脆弱性内容
CVE-2016-0800 Cross-protocol attack on TLS using SSLv2 (DROWN)
CVE-2016-0705 Double-free in DSA code
CVE-2016-0798 Memory leak in SRP database lookups
CVE-2016-0797 BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption
CVE-2016-0799 Fix memory issues in BIO_*printf functions
CVE-2016-0702 Side channel attack on modular exponentiation
CVE-2016-0703 Divide-and-conquer session key recovery in SSLv2
CVE-2016-0704 Bleichenbacher oracle in SSLv2

このうち特に CVE-2016-0800 のリスクが高いので紹介する。

CVE-2016-0800 : Cross-protocol attack on TLS using SSLv2 (DROWN)

通称 DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) 攻撃。

A cross-protocol attack was discovered that could lead to decryption of TLS sessions by using a server supporting SSLv2 and EXPORT cipher suites as a Bleichenbacher RSA padding oracle. Note that traffic between clients and non-vulnerable servers can be decrypted provided another server supporting SSLv2 and EXPORT ciphers (even with a different protocol such as SMTP, IMAP or POP) shares the RSA keys of the non-vulnerable server. This vulnerability is known as DROWN (CVE-2016-0800).

OpenSSL などで SSLv2 を有効にしている場合, SSL を使用していなくても TLS 暗号通信を中間者攻撃で攻略することができるらしい1。 ポイントは SSL サーバのみでなくサーバとネットで繋がっている他のマシンにも影響をおよぼす可能性があることだ。

CVE-2016-0702 : Side channel attack on modular exponentiation

リスクは低いが, CVE-2016-0702 についても一応紹介しておく。 通称 CacheBleed と呼ばれる side-channel 攻撃の一種である。

A side-channel attack was found which makes use of cache-bank conflicts on the Intel Sandy-Bridge microarchitecture which could lead to the recovery of RSA keys. The ability to exploit this issue is limited as it relies on an attacker who has control of code in a thread running on the same hyper-threaded core as the victim thread which is performing decryptions.

どうもこれ,2013年の GnuPG の脆弱性のバリエーションらしい。

Side-channel 攻撃は成立条件が特殊なので,一般的にリスクは高くない。 CVSSv2 基本評価値は 2.6 (AV:L/AC:H/Au:N/C:P/I:P/A:N) なので,こういう攻略法もあるといった程度に覚えておくといいだろう。

影響度(CVSS)

CVSSv2 基本評価値 7.1 (AV:N/AC:H/Au:N/C:C/I:C/A:N)

Vulnerability Note VU#583776 - Network traffic encrypted using RSA-based SSL certificates over SSLv2 may be decrypted by the DROWN attack” より

基本評価基準 評価値
攻撃元区分(AV) ネットワーク(N)
攻撃条件の複雑さ(AC) 高(H)
攻撃前の認証要否(Au) 不要(N)
情報漏えいの可能性(機密性への影響, C) 全面的(C)
情報改ざんの可能性(完全性への影響, I) 全面的(C)
業務停止の可能性(可用性への影響, A) なし(N)

CVSSv3 基本評価値 7.4 (CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N)

JVNVU#90617353: SSLv2 の暗号通信を解読可能な脆弱性 (DROWN 攻撃)」より

基本評価基準 評価値
攻撃元区分(AV) ネットワーク(N)
攻撃条件の複雑さ(AC) 高(H)
必要な特権レベル(PR) 不要(N)
ユーザ関与レベル(UI) 不要(N)
スコープ(S) 変更なし(U)
情報漏えいの可能性(機密性への影響, C) 高(H)
情報改ざんの可能性(完全性への影響, I) 高(H)
業務停止の可能性(可用性への影響, A) なし(N)

CVSS については解説ページを参照のこと。

影響を受ける製品

  • OpenSSL 1.0.1r およびそれ以前の 1.0.1 系列
  • OpenSSL 1.0.2f およびそれ以前の 1.0.2 系列

また,このバージョンの OpenSSL を利用している製品(Apache, Postfix, Nginx 等)も影響を受ける。 なお,公開されているサーバが DROWN の影響を受けているかどうかテストするサイトがある。

OpenSSL 以外にも SSLv2 が有効になっている場合は今回の脆弱性の影響を受ける可能性があり,以下の製品・バージョンについて警告されている。

  • Microsoft IIS (Windows Server) : バージョン 7 以降は既定で SSLv2 が無効化されている
  • MNetwork Security Services (NSS) : バージョン 3.13 以降は既定で SSLv2 が無効化されている

LibreSSL は DROWN の影響を受けないそうだ。

対策・回避策

OpenSSL に関しては最新バージョンで対策されている。

  • OpenSSL 1.0.1s
  • OpenSSL 1.0.2g

SSL は既に仕様上の脆弱性を抱えており,可能な限り無効にすることをお薦めする。

どうしても SSLv2 を有効にしなければならない場合,証明書を分けて,他のプロトコルと共用しないようにすること。

ブックマーク

【余談】 馬も鹿も暗号化する時代のセキュリティ

一千万規模か。 意外と少ないな。 まぁ2014年に大騒ぎになった SSL 関連の脆弱性のおかげで SSL を無効にしたところも多かろう。

SSL を無効に出来ないサイトの多くは古い PC やケータイを考慮しているのだろうけど,もう考慮の余地はないと思う。 セキュリティを気にせざるを得ない他のユーザに迷惑をかけるからだ。

Web サイトを全て暗号化すべきという意見があって,セキュリティ専門家でも賛同者が多いが,私は懐疑的だ。 現在はセキュリティ要件が2,3年単位で変化し追従できないサービスやユーザも多い。 問題なのは,サイトが乗っ取らるなどして,暗号通信下で malware の活動を許してしまうことで,セキュリティ管理のいい加減なサービスが暗号通信を行うのはむしろ有害とさえ言える。

今だに SSLv2 や SSLv3 を有効にしているサイトがあるというのなら,そのサイトはセキュリティ上は全く信用できないと断言していいと思う。 脆弱な暗号通信を使うくらいなら,いっそ暗号化していない限定機能の HTTP サイトを用意して古いマシンのユーザは(安全でないことを警告したうえで)そちらに誘導する方がよい。 個人的な感覚では Web サービス全体の 2/3 程度が暗号化できていれば充分だと思う。

馬も鹿も暗号化するこの時代。 国家や企業の戯れ言に耳を貸す気はないが,それが本当は何を守ってるのか,そろそろ真面目に考えないといけないのではないのだろうか。

photo
暗号技術入門 第3版 秘密の国のアリス
結城 浩 (著)
SBクリエイティブ 2015-08-25 (Release 2015-09-17)
Kindle版
B015643CPE (ASIN)
評価     

SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。

reviewed by Spiegel on 2015-09-20 (powered by PA-APIv5)


  1. TLS と SSLv3 で同じ証明書を使用している場合。 ↩︎