piyolog

piyokangoの備忘録です。セキュリティの出来事を中心にまとめています。このサイトはGoogle Analyticsを利用しています。

OpenSSLの脆弱性CVE-2016-800(DROWN)やCVE-2016-0702(CacheBleed)についてまとめてみた

2016年3月1日(現地時間)、OpenSSL プロジェクトは脆弱性の愛称「DROWN」や「CacheBleed」を含む8件の脆弱性情報を公開し、これら影響を受けるものの修正を行った最新版をリリースしました。ここでは関連情報をまとめます。

脆弱性情報概要

2016年3月1日公開のパッチで修正された脆弱性
CVE Severity Title Fixed
CVE-2016-0800 High Cross-protocol attack on TLS using SSLv2 (DROWN) 1.0.1s, 1.0.2g
CVE-2016-0705 Low Double-free in DSA cod 1.0.1s, 1.0.2g
CVE-2016-0798 Low Memory leak in SRP database lookups 1.0.1s, 1.0.2g
CVE-2016-0797 Low BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption 1.0.1s, 1.0.2g
CVE-2016-0799 Low Fix memory issues in BIO_*printf functions 1.0.1s, 1.0.2g
CVE-2016-0702 Low Side channel attack on modular exponentiation(CacheBleed) 1.0.1s, 1.0.2g
CVE-2016-0703 High Divide-and-conquer session key recovery in SSLv2 1.0.2a, 1.0.1m, 1.0.0r, 0.9.8zf
CVE-2016-0704 Moderate Bleichenbacher oracle in SSLv2 1.0.2a, 1.0.1m, 1.0.0r, 0.9.8zf
  • CVE-2016-0703/0704は2015年3月15日リリース版でCVE-2015-0293対応によるリファクタリングで修正されていた。
  • 0.9.8系、1.0.0系は2015年12月31日でサポートが終了しており、もし影響を受ける場合も修正版はリリースされない。

CVE-2016-0800 DROWN Attackに関する情報

  • DROWNの由来:Decrypting RSA with Obsolete and Weakened eNcryptionの頭文字をとったもの。
  • CVSS(v2):7.1(Base)/ AV:N/AC:H/Au:N/C:C/I:C/A:N via CERT
  • 脆弱性ロゴ:(CC0)あり
発見者による情報
攻撃前提条件
  • SSLv2がサーバー側で利用可能な設定となっている。(あるいはSSLv2が利用可能なサーバーと同じ秘密鍵を使用している)
  • 中間者攻撃が可能な環境に接続している。

CVE-2016-0800はOpenSSLに限定されず、SSLv2が有効な環境において影響を受ける可能性が有り、発見者の公開情報には次の製品が記載されている。

  • Microsoft IIS (IIS 7 から既定設定でSSLv2は無効化されている)
  • NSS (2012年リリースの3.13からSSLv2が無効化されている)
  • Apache
  • Postfix
  • nginx

ベンダからの情報は次の通り。

ベンダ アドバイザリ等
Redhat DROWN - Cross-protocol attack on TLS using SSLv2 - CVE-2016-0800
Akamai Akamai and the DROWN Vulnerability
Amazon CVE-2016-0800 Advisory
CloudFlare the DROWN Attack and CloudFlare
Cisco Multiple Vulnerabilities in OpenSSL Affecting Cisco Products: March 2016
攻撃による影響
  • 秘匿された通信内容が盗聴される恐れ。

CVE-2016-0702 CacheBleedに関する情報

攻撃前提条件
  • OpenSSLの処理を行った同一CPU上で実行している
攻撃による影響
  • 同一CPU上の処理プロセスが復元される恐れ。(例えばRSA秘密鍵取得が可能な模様)

OpenSSLの脆弱性影響範囲

DROWN

次のOpenSSLが影響を受ける。ただし、CVE-2016-0703/0704は2015年3月15日リリース版で影響を受けなくなっている。

  • OpenSSL 1.0.1r、およびそれ以前
  • OpenSSL 1.0.2f、およびそれ以前
CacheBleed

次のOpenSSLが影響を受ける。

  • OpenSSL 1.0.1r、およびそれ以前
  • OpenSSL 1.0.2f、およびそれ以前

発見者は0.9.7h以降の全てのバージョンが影響を受ける可能性を指摘している。

OpenSSL: Our attack code has been tested with OpenSSL 1.0.2f. We believe that all OpenSSL versions from 0.9.7h up to and including versions 1.0.1r and 1.0.2f are vulnerable.

OpenSSLのバージョン確認方法

次のコマンドを実行する。

openssl version

DROWNの影響調査

発見者のサイト上に確認ツールが設置されています。これは2016年2月時点で取得された情報に基づき結果が表示されます。

影響を受ける場合、次のように表示される。

Alexa Top 10000の内、影響を受けるサイトも列挙されている。

LibreSSLへの影響

今回公開されたOpenSSLのバグに関して、LibreSSLは影響を受けないとアナウンスしている。

ただし、CacheBleedの公開情報にはLibreSSLも影響を受ける記述が存在する。

LibreSSL: We have verified that version 2.3.1 is vulnerable. We believe that all LibreSSL versions, up to and including 2.1.9, 2.2.5 and 2.3.1 are vulnerable.

対策

OpenSSLを最新版へ更新する。

  • OpenSSL 1.0.1系 → OpenSSL 1.0.1s
  • OpenSSL 1.0.2系 → OpenSSL 1.0.2g
回避策

CVE-2016-0800(DROWN)の回避策として、SSLv2の無効化が可能かを検討する。