OpenSSL
読み:オープン-エスエスエル
外語:OpenSSL
かつてよく使われていた
SSL/TLS
のオープンソースによる実装の一つ。名前は似ているが、
OpenSSH
とは無関係である。現在では
セキュリティホール
とみなされている。
目次
概要
特徴
傾向
代替品・後継品
終焉期
沿革
バージョン
主な修正バグ
1.1.0
1.0.2
1.0.1
概要
Apache License 1.0と
4条項BSDライセンス
という、宣伝条項を含むデュアルライセンスで提供されており
GPL
非互換であるが、多くの
Linuxディストリビューション
含む、多くのUNIX互換OSで採用されている。
対抗として、
LGPL
の
GnuTLS
も一応は存在はしていた。一応は。
しかし結果として、OpenSSLの代替後継品は、OpenSSL自体の改良版である「
LibreSSL
」となった。またGoogleもOpenSSLに見切りを付け同様に「
BoringSSL
」へと移行した。
特徴
傾向
圧倒的シェアを持っており、現時点では事実上の業界標準である。
従って、オープンソースソフトウェアとしては成功した部類に入る。ただ単に、セキュリティに関するソフトウェアでありながら
セキュリティホール
が多いという、セキュリティ上の品質面で失敗しているに過ぎない。
OpenSSLには報告されていながら長年放置されたままのバグが山とあるが、修正されず放置される傾向にある。
例えば、OpenSSL 1.0.1から搭載された新機能、TLS heartbeat拡張(
RFC 6520
)の処理にバグがあり、2年以上経ってから
CVE-2014-0160
(心臓出血)という重大な々セキュリティホールとして発覚した際には大きな騒動となった。
代替品・後継品
OpenSSLはそれ自体がセキュリティホールであるため、代替品・後継品が進んだ。主たるものは次の通り。
OpenSSLのフォーク
LibreSSL
(OpenBSDで採用)
BoringSSL
(Android 6.0以降で採用)
GnuTLS
GnuTLSが不甲斐なく、かつ、GPLのソフトウェアに今後本気を出して協力する人も少なかろうと思われるため、代替にはなりそうにない。
終焉期
セキュリティ最重視のOpenBSDもOpenSSLを使用していた。しかし先のCVE-2014-0160(心臓出血)を受け、OpenSSLは「
LibreSSL
」をフォークし、よりセキュアな実装に改善する道を選択した。
OpenSSLプロジェクトはこれが面白くなかったらしく、OpenSSLで発見されたバグを意図的にLibreSSLプロジェクトに事前公表せず、LibreSSLプロジェクトやOpenBSDプロジェクトはこれに非難の声明を発表するなどしている。
これにうんざり(boring)したのか、その後Googleも
BoringSSL
としてOpenSSLからフォークした実装の開発に着手、LibreSSLプロジェクトとも協力関係を持ち、Androidも
Android 6.0
からBoringSSLに変更された。
かくして世界は、OpenSSLの自業自得により、OpenSSLを
オワコン
にする方向に動いている。
沿革
バージョン
主要なバージョンは次の通り。
1.1.0 (2016(平成28)年8月25日〜)
1.0.2 (2015(平成27)年3月19日〜)
1.0.1 (2012(平成24)年4月19日〜)
主な修正バグ
1.1.0
OpenSSL 1.1.0f (2017(平成29)年5月25日)
OpenSSL 1.1.0e (2017(平成29)年2月16日)
CVE-2017-3733 (Encrypt-Then-Mac renegotiation crash)
OpenSSL 1.1.0d (2017(平成29)年1月26日)
CVE-2017-3731 (Truncated packet could crash via OOB read)
CVE-2017-3730 (Bad (EC)DHE parameters cause a client crash)
CVE-2017-3732 (BN_mod_exp may produce incorrect results on x86_64)
OpenSSL 1.1.0c (2016(平成28)年11月10日)
CVE-2016-7054 (ChaCha20/Poly1305 heap-buffer-overflow)
CVE-2016-7053 (CMS Null dereference)
CVE-2016-7055 (Montgomery multiplication may produce incorrect results)
OpenSSL 1.1.0b (2016(平成28)年9月26日)
CVE-2016-6309 (Fix Use After Free for large message sizes)
OpenSSL 1.1.0a (2016(平成28)年9月22日)
CVE-2016-6304 (OCSP Status Request extension unbounded memory growth)
CVE-2016-6305 (SSL_peek() hang on empty record)
CVE-2016-6307 (Excessive allocation of memory in tls_get_message_header())
CVE-2016-6308 (Excessive allocation of memory in dtls1_preprocess_fragment())
OpenSSL 1.1.0 (2016(平成28)年8月25日)
1.0.2
OpenSSL 1.0.2h (2016(平成28)年5月3日)
CVE-2016-2107 (Prevent padding oracle in AES-NI CBC MAC check)
CVE-2016-2105 (Fix EVP_EncodeUpdate overflow)
CVE-2016-2106 (Fix EVP_EncryptUpdate overflow)
CVE-2016-2109 (Prevent ASN.1 BIO excessive memory allocation)
CVE-2016-2176 (EBCDIC overread)
OpenSSL 1.0.2g (2016(平成28)年3月1日)
CVE-2016-0800 (Disable SSLv2 default build, default negotiation and weak ciphers)
CVE-2016-0705 (Fix a double-free in DSA code)
CVE-2016-0798 (Disable SRP fake user seed to address a server memory leak)
CVE-2016-0797 (Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption)
CVE-2016-0799 (Fix memory issues in BIO_*printf functions)
CVE-2016-0702 (Fix side channel attack on modular exponentiation)
OpenSSL 1.0.2f (2016(平成28)年1月28日)
CVE-2016-0701 (DH small subgroups)
CVE-2015-3197 (SSLv2 doesn't block disabled ciphers)
OpenSSL 1.0.2e (2015(平成27)年12月3日)
CVE-2015-3193 (BN_mod_exp may produce incorrect results on x86_64)
CVE-2015-3194 (Certificate verify crash with missing PSS parameter)
CVE-2015-3195 (X509_ATTRIBUTE memory leak)
OpenSSL 1.0.2d (2015(平成27)年7月9日)
CVE-2015-1793 (Alternate chains certificate forgery)
CVE-2015-3196 (Race condition handling PSK identify hint)
OpenSSL 1.0.2c (2015(平成27)年6月12日)
OpenSSL 1.0.2b (2015(平成27)年6月11日)
CVE-2015-1788 (Malformed ECParameters causes infinite loop)
CVE-2015-1789 (Exploitable out-of-bounds read in X509_cmp_time)
CVE-2015-1790 (PKCS7 crash with missing EnvelopedContent)
CVE-2015-1792 (CMS verify infinite loop with unknown hash function)
CVE-2015-1791 (Race condition handling NewSessionTicket)
OpenSSL 1.0.2a (2015(平成27)年3月19日)
CVE-2015-0291 (OpenSSL 1.0.2 ClientHello sigalgs DoS fix)
CVE-2015-0290 (Multiblock corrupted pointer fix)
CVE-2015-0207 (Segmentation fault in DTLSv1_listen fix)
CVE-2015-0286 (Segmentation fault in ASN1_TYPE_cmp fix)
CVE-2015-0208 (Segmentation fault for invalid PSS parameters fix)
CVE-2015-0287 (ASN.1 structure reuse memory corruption fix)
CVE-2015-0289 (PKCS7 NULL pointer dereferences fix)
CVE-2015-0293 (DoS via reachable assert in SSLv2 servers fix)
CVE-2015-1787 (Empty CKE with client auth and DHE fix)
CVE-2015-0285 (Handshake with unseeded PRNG fix)
CVE-2015-0209 (Use After Free following d2i_ECPrivatekey error fix)
CVE-2015-0288 (X509_to_X509_REQ NULL pointer deref fix)
OpenSSL 1.0.2 (2015(平成27)年1月22日)
1.0.1
心臓出血バグを出したバージョン1.0.1については詳細を記す。
1.0.1のリリースノート
を参照のこと。
OpenSSL 1.0.1t (2016(平成28)年5月3日)
CVE-2016-2107 (Prevent padding oracle in AES-NI CBC MAC check)
CVE-2016-2105 (Fix EVP_EncodeUpdate overflow)
CVE-2016-2106 (Fix EVP_EncryptUpdate overflow)
CVE-2016-2109 (Prevent ASN.1 BIO excessive memory allocation)
CVE-2016-2176 (EBCDIC overread)
OpenSSL 1.0.1s (2016(平成28)年3月1日)
CVE-2016-0800 (Disable SSLv2 default build, default negotiation and weak ciphers)
CVE-2016-0705 (Fix a double-free in DSA code)
CVE-2016-0798 (Disable SRP fake user seed to address a server memory leak)
CVE-2016-0797 (Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption)
CVE-2016-0799 (Fix memory issues in BIO_*printf functions)
CVE-2016-0702 (Fix side channel attack on modular exponentiation)
OpenSSL 1.0.1r (2015(平成27)年12月3日)
CVE-2015-3197 (SSLv2 doesn't block disabled ciphers)
OpenSSL 1.0.1q (2015(平成27)年12月3日)
CVE-2015-3194 (Certificate verify crash with missing PSS parameter)
CVE-2015-3195 (X509_ATTRIBUTE memory leak)
OpenSSL 1.0.1p (2015(平成27)年6月12日)
CVE-2015-1793 (Alternate chains certificate forgery)
CVE-2015-3196 (Race condition handling PSK identify hint)
OpenSSL 1.0.1o (2015(平成27)年6月12日)
OpenSSL 1.0.1n (2015(平成27)年6月11日)
CVE-2015-1788 (Malformed ECParameters causes infinite loop)
CVE-2015-1789 (Exploitable out-of-bounds read in X509_cmp_time)
CVE-2015-1790 (PKCS7 crash with missing EnvelopedContent)
CVE-2015-1792 (CMS verify infinite loop with unknown hash function)
CVE-2015-1791 (Race condition handling NewSessionTicket)
OpenSSL 1.0.1m (2015(平成27)年3月19日)
CVE-2015-0286 (Segmentation fault in ASN1_TYPE_cmp fix)
CVE-2015-0287 (ASN.1 structure reuse memory corruption fix)
CVE-2015-0289 (PKCS7 NULL pointer dereferences fix)
CVE-2015-0293 (DoS via reachable assert in SSLv2 servers fix)
CVE-2015-0209 (Use After Free following d2i_ECPrivatekey error fix)
CVE-2015-0288 (X509_to_X509_REQ NULL pointer deref fix)
OpenSSL 1.0.1l (2015(平成27)年1月15日)
OpenSSL 1.0.1k (2015(平成27)年1月8日)
CVE-2014-3571
CVE-2015-0206
CVE-2014-3569
CVE-2014-3572
CVE-2015-0204
CVE-2015-0205
CVE-2014-8275
CVE-2014-3570
OpenSSL 1.0.1j (2014(平成26)年8月15日)
CVE-2014-3513 (SRTPメモリーリークでのDoS脆弱性)
CVE-2014-3567 (セッションチケット処理のメモリーリークでのDoS脆弱性)
CVE-2014-3568 (ビルドオプション no-ssl3 が不完全)
OpenSSL 1.0.1i (2014(平成26)年8月6日)
CVE-2014-3505 (Double Free when processing DTLS packets)
CVE-2014-3506 (DTLS memory exhaustion)
CVE-2014-3507 (DTLS memory leak from zero-length fragments)
CVE-2014-3508 (Information leak in pretty printing functions)
CVE-2014-3509 (Race condition in ssl_parse_serverhello_tlsext)
CVE-2014-3510 (OpenSSL DTLS anonymous EC(DH) denial of service)
CVE-2014-3511 (OpenSSL TLS protocol downgrade attack)
CVE-2014-3512 (SRP buffer overrun)
CVE-2014-5139 (Crash with SRP ciphersuite in Server Hello message)
OpenSSL 1.0.1h (2014(平成26)年6月5日)
CVE-2010-5298 (SSL_MODE_RELEASE_BUFFERS session injection or denial of service)
CVE-2014-0195 (DTLS invalid fragment vulnerability)
CVE-2014-0198 (SSL_MODE_RELEASE_BUFFERS NULL pointer dereference)
CVE-2014-0221 (DTLS recursion flaw)
CVE-2014-0224
/JVN#61247051 (Change Cipher Spec メッセージ処理の脆弱性)
CVE-2014-3470 (Anonymous ECDH denial of service)
OpenSSL 1.0.1g (2014(平成26)年4月7日)
CVE-2014-0076 (Recovering OpenSSL ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack)
CVE-2014-0160
(心臓出血)
OpenSSL 1.0.1f (2014(平成26)年1月6日)
CVE-2013-4353 (TLSレコード改竄バグ)
CVE-2013-6449 (TLSバージョンチェックバグ)
CVE-2013-6450 (DTLS再送信バグ)
OpenSSL 1.0.1e (2013(平成25)年2月11日)
CVE-2013-0169 (SSL/TLS/DTLS CBC 平文回復攻撃) ※再修正
OpenSSL 1.0.1d (2013(平成25)年2月4日)
CVE-2012-2686 (TLS AESNIレコードハンドリング欠陥)
CVE-2013-0166 (OCSP不正キーDoS攻撃)
CVE-2013-0169 (SSL/TLS/DTLS CBC 平文回復攻撃) ※1.0.1eで再修正
OpenSSL 1.0.1c (2012(平成24)年5月10日)
CVE-2012-2333 (TLS/DTLSレコード長チェックバグ)
OpenSSL 1.0.1b (2012(平成24)年4月26日)
OpenSSL 1.0.1a (2012(平成24)年4月19日)
CVE-2012-2110 (ASN1オーバーフロー)
OpenSSL 1.0.1 (2012(平成24)年3月14日)
再検索