公開日:2016/01/29 最終更新日:2020/11/17

JVNVU#95668716
OpenSSL の DH プロトコルにおける脆弱性

概要

OpenSSL には、Diffie-Hellman (DH) プロトコルに「安全素数」でない素数を使用することで、暗号化に使用する鍵を特定される脆弱性が存在します。

影響を受けるシステム

  • OpenSSL 1.0.2f より前のバージョン
  • OpenSSL 1.0.1r より前のバージョン

詳細情報

暗号化処理の不備 (CWE-325) - CVE-2016-0701
OpenSSL 1.0.2 では、RFC 5114 で指定されているパラメータを X9.42 形式で生成する機能が実装されています。この機能で生成される素数は、「安全素数」になるとは限りません。「安全素数」でない場合に攻撃可能な手法が知られており、暗号化に使用する鍵を取得される可能性があります。

さらに OpenSSL のデフォルト設定では、プロセスが終了するまで、生成された素数を再利用します。これにより、TLS のように Diffie-Hellman (DH) プロトコルを使用するアプリケーションは、攻撃者に秘密情報を特定され、すべての通信内容を復号される可能性があります。

ただし発見者はブログ投稿で、攻撃の成立条件について次のように述べています。

"requires that the attacker complete multiple handshakes in which the peer (OpenSSL in this case) uses the same private DH exponent.
同一のパラメータを使用し続けているピア (ここでは OpenSSL) に対し、ハンドシェイクを複数回行う必要がある"

アルゴリズムのダウングレード (CWE-757) - CVE-2015-3197
開発者は次のように述べています。

"A malicious client can negotiate SSLv2 ciphers that have been disabled on the server and complete SSLv2 handshakes even if all SSLv2 ciphers have been disabled, provided that the SSLv2 protocol was not also disabled via SSL_OP_NO_SSLv2.
SSLv2 で使用されるすべての暗号化方式を無効に設定していても、SSL_OP_NO_SSLv2 によって SSLv2 自体の使用を無効化していなければ、悪意のあるクライアントは SSLv2 の暗号化方式でハンドシェイクを完了することができる。"

さらに詳しい情報は、OpenSSL のセキュリティアドバイザリをご確認ください。

想定される影響

遠隔の第三者に復号のための鍵を入手され、機微な情報を取得される可能性があります。また、無効化しているはずの SSLv2 の暗号化方式で通信が行われ、既知の脆弱性の影響を受ける可能性があります。

対策方法

アップデートする
開発者が提供する情報をもとに、最新版へアップデートしてください。
開発者は本脆弱性の対策版として、OpenSSL 1.0.2f および OpenSSL 1.0.1r をリリースしています。

ワークアラウンドを実施する
次のワークアラウンドを実施することで、本脆弱性の影響を軽減することが可能です。

  • SSL_OP_SINGLE_DH_USE オプションを有効にすることで、DH プロトコルにおけるパラメータの再利用を防ぐ

ベンダ情報

ベンダ ステータス ステータス
最終更新日
ベンダの告知ページ
ジェイティ エンジニアリング株式会社 該当製品無し 2016/02/20
日本電気株式会社 該当製品あり 2020/11/17

参考情報

  1. CERT/CC Vulnerability Note VU#257823
    OpenSSL re-uses unsafe prime numbers in Diffie-Hellman protocol
  2. Into the symmetry
    OpenSSL Key Recovery Attack on DH small subgroups (CVE-2016-0701)

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

CVSS v3 CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
基本値: 7.4
攻撃元区分(AV) 物理 (P) ローカル (L) 隣接 (A) ネットワーク (N)
攻撃条件の複雑さ(AC) 高 (H) 低 (L)
必要な特権レベル(PR) 高 (H) 低 (L) 不要 (N)
ユーザ関与レベル(UI) 要 (R) 不要 (N)
スコープ(S) 変更なし (U) 変更あり (C)
機密性への影響(C) なし (N) 低 (L) 高 (H)
完全性への影響(I) なし (N) 低 (L) 高 (H)
可用性への影響(A) なし (N) 低 (L) 高 (H)
CVSS v2 AV:N/AC:M/Au:N/C:C/I:C/A:N
基本値: 8.8
攻撃元区分(AV) ローカル (L) 隣接 (A) ネットワーク (N)
攻撃条件の複雑さ(AC) 高 (H) 中 (M) 低 (L)
攻撃前の認証要否(Au) 複数 (M) 単一 (S) 不要 (N)
機密性への影響(C) なし (N) 部分的 (P) 全面的 (C)
完全性への影響(I) なし (N) 部分的 (P) 全面的 (C)
可用性への影響(A) なし (N) 部分的 (P) 全面的 (C)

分析結果のコメント

この CVSS は CVE-2016-0701 を評価したものです。

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE CVE-2016-0701
CVE-2015-3197
JVN iPedia

更新履歴

2016/02/01
詳細情報と関連文書の CVE 番号を修正しました
2016/02/22
ジェイティ エンジニアリング株式会社のベンダステータスが更新されました
2020/11/17
日本電気株式会社のベンダステータスが更新されました