「CVE-2014-0160 OpenSSL Heartbleed」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「[[{{PAGENAME}}]] とは、 '''読み方''' ;[[{{PAGENAME}}]]: __TOC__ == 概要 == CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続され...」)
 
行1: 行1:
[[{{PAGENAME}}]] とは、
+
[[脆弱性]] CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続されたクライアントやサーバに露呈する恐れ」があります。[[OpenSSL]]のTLS heartbeat 機能のバウンドチェック処理の欠如が原因のバグで、2011年から存在していたバグです。
  
 
'''読み方'''
 
'''読み方'''
;[[{{PAGENAME}}]]:
+
;Heartbleed:はーとぶりーど
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 
CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続されたクライアントやサーバに露呈する恐れ」があります。
 
CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続されたクライアントやサーバに露呈する恐れ」があります。
 +
この[[脆弱性]]により、[[秘密鍵]]や[[暗号化]]によって保護される[[個人情報]]やコンテンツが閲覧される可能性があります。
 +
この問題は、[[OpenSSL]]の Heartbeat の機能によるため、 Heartbleed と名付けられました。
 +
 +
TLS heartbeat 機能のバウンドチェック処理の欠如が原因です。
 +
* 接続したクライアントもしくはサーバから 64KB 単位でメモリの内容を取得できます。
 +
* 攻撃は繰り返し、実行可能です。
 +
* ログには痕跡が残りません。
 +
 +
このバグは、2011年以来から存在していました。2014/04/08 に公開されました。
 +
 +
== 何が起きるのか ==
 +
* [[HTTPS]]サーバのSSL証明書の[[秘密鍵]]が漏えいする
 +
* [[HTTPS]]サーバのプロセス内の情報が漏えいする
 +
* 乗っ取られたサーバに接続するとき、HTTPSで通信するクライアントのメモリ内の情報が漏えいする
 +
** [[DNSキャッシュポイズニング]]等を使用し、攻撃者のSSLサーバに接続された場合に漏えいします。
 +
 
== 影響を受けるOpenSSL ==
 
== 影響を受けるOpenSSL ==
 
* OpenSSL 1.0.1 - 1.0.1f
 
* OpenSSL 1.0.1 - 1.0.1f
 
* OpenSSL 1.0.2-beta - 1.0.2-beta1
 
* OpenSSL 1.0.2-beta - 1.0.2-beta1
ただし、 OPENSSL_NO_HEARTBEATS でコンパイルされた場合、影響がありません。
+
ただし、 OPENSSL_NO_HEARTBEATS(-DOPENSSL_NO_HEARTBEATS) でコンパイルされた場合、影響がありません。
 
== 対応済のOpenSSL ==
 
== 対応済のOpenSSL ==
脆弱性修正済の[[OpenSSL]]は、以下の通りです。
+
脆弱性修正済の[[OpenSSL]]は、以下の通りです。OSによって対応バージョンが異なるため、注意が必要です。
 
* OpenSSL 1.0.1g
 
* OpenSSL 1.0.1g
 
* OpenSSL 1.0.2-beta2
 
* OpenSSL 1.0.2-beta2
 +
* RHEL 6.5 openssl-1.0.1e-16.el6_5.7
 +
* CentOS 6.5 openssl-1.0.1e-16.el6_5.7
 +
* FreeBSD ports/openssl 1.0.1_10
 +
== 影響のないOpenSSL ==
 +
* OpenSSL 1.0.0 ブランチ
 +
* OpenSSL 0.9.8 ブランチ
 
== 対応方法 ==
 
== 対応方法 ==
 
対策には、以下の方法があります。
 
対策には、以下の方法があります。
* OPENSSL_NO_HEARTBEATS を有効にして、再コンパイルを行う
+
* 証明書の[[秘密鍵]]を再作成した上でSSL証明書を再発行し、古いSSL証明書を失効させます。
* [[OpneSSL]] を脆弱性のないバージョンに上げる
+
* [[OpenSSL]]を修正します。以下のどちらかの手順を実施します。
 +
** OPENSSL_NO_HEARTBEATS(-DOPENSSL_NO_HEARTBEATS) を有効にして、再コンパイルを行う
 +
** [[OpenSSL]] を脆弱性のないバージョンに上げる
 
== 対策 ==
 
== 対策 ==
 
=== バージョンの確認方法 ===
 
=== バージョンの確認方法 ===
行34: 行58:
 
$ sudo apt-get upgrade
 
$ sudo apt-get upgrade
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
=== バージョンアップ FreeBSD ===
 +
<syntaxhighlight lang="bash">
 +
$ sudo portsnap fetch update
 +
$ cd /usr/ports/security/openssl
 +
$ sudo make install clean
 +
</syntaxhighlight>
 +
== 確認方法 ==
 +
=== Heartbleed ===
 +
Web 版のチェックツールです。
 +
http://filippo.io/Heartbleed/
  
 +
Unix版のプログラムは、GitHubで公開されいます。
 +
https://github.com/FiloSottile/Heartbleed
 +
 +
このプログラムを使用するには、Goが必要です。
 +
<syntaxhighlight lang="bash">
 +
$ sudo pkg install go
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="bash">
 +
$ export GOPATH=$PWD
 +
$ go get github.com/FiloSottile/Heartbleed
 +
$ go install github.com/FiloSottile/Heartbleed
 +
</syntaxhighlight>
 +
 +
OK な場合です。
 +
<syntaxhighlight lang="bash">
 +
$ ./bin/Heartbleed login.yahoo.co.jp:443
 +
2014/04/08 23:27:49 login.yahoo.co.jp:443 - SAFE
 +
$ ./bin/Heartbleed accounts.google.com:443
 +
2014/04/08 23:28:54 accounts.google.com:443 - SAFE
 +
</syntaxhighlight>
 +
 +
この例は、脆弱性がある場合です。
 +
<syntaxhighlight lang="bash">
 +
$ ./bin/Heartbleed login.yahoo.com:443
 +
2014/04/08 23:27:59 ([]uint8) {
 +
00000000  02 00 79 68 65 61 72 74  62 6c 65 65 64 2e 66 69  |..yheartbleed.fi|
 +
00000010  6c 69 70 70 6f 2e 69 6f  59 45 4c 4c 4f 57 20 53  |lippo.ioYELLOW S|
 +
00000020  55 42 4d 41 52 49 4e 45  4a 9c 8a 57 1e 1b 76 93  |UBMARINEJ..W..v.|
 +
00000030  f3 2f 1b af 9f b8 21 de  6a 4a 67 c9 23 7c f9 55  |./....!.jJg.#|.U|
 +
00000040  fe 89 d6 4b 7a a5 21 13  6a d1 c4 ea f1 ac db 52  |...Kz.!.j......R|
 +
00000050  cb 46 be 73 ee 4c 16 c3  86 fd 25 70 96 87 2a 5e  |.F.s.L....%p..*^|
 +
00000060  43 85 cf 29 12 69 96 01  68 46 e8 0c ba b3 0f 0d  |C..).i..hF......|
 +
00000070  bb 78 37 69 4b 6c 24 74  c4 8b a2 2a 17 ed 9c f7  |.x7iKl$t...*....|
 +
00000080  b4 46 f6 26 33 55 43 fd  48 14 b1 6d              |.F.&3UC.H..m|
 +
}
 +
 +
2014/04/08 23:27:59 login.yahoo.com:443 - VULNERABLE
 +
[2]    53447 exit 1    ./bin/Heartbleed login.yahoo.com:443
 +
</syntaxhighlight>
 +
== 備考 ==
 +
* [[ssh]] / [[OpenSSH]] とは無関係です。
 +
* [[GNU Privacy Guard]] (GnuPG) とは無関係です。
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[OpenSSL]]
 
* [[OpenSSL]]

2014年4月8日 (火) 23:54時点における版

脆弱性 CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続されたクライアントやサーバに露呈する恐れ」があります。OpenSSLのTLS heartbeat 機能のバウンドチェック処理の欠如が原因のバグで、2011年から存在していたバグです。

読み方

Heartbleed
はーとぶりーど

概要

CVE-2014-0160 OpenSSL Heartbleed では、「最大64KBのメモリが接続されたクライアントやサーバに露呈する恐れ」があります。 この脆弱性により、秘密鍵暗号化によって保護される個人情報やコンテンツが閲覧される可能性があります。 この問題は、OpenSSLの Heartbeat の機能によるため、 Heartbleed と名付けられました。

TLS heartbeat 機能のバウンドチェック処理の欠如が原因です。

  • 接続したクライアントもしくはサーバから 64KB 単位でメモリの内容を取得できます。
  • 攻撃は繰り返し、実行可能です。
  • ログには痕跡が残りません。

このバグは、2011年以来から存在していました。2014/04/08 に公開されました。

何が起きるのか

  • HTTPSサーバのSSL証明書の秘密鍵が漏えいする
  • HTTPSサーバのプロセス内の情報が漏えいする
  • 乗っ取られたサーバに接続するとき、HTTPSで通信するクライアントのメモリ内の情報が漏えいする

影響を受けるOpenSSL

  • OpenSSL 1.0.1 - 1.0.1f
  • OpenSSL 1.0.2-beta - 1.0.2-beta1

ただし、 OPENSSL_NO_HEARTBEATS(-DOPENSSL_NO_HEARTBEATS) でコンパイルされた場合、影響がありません。

対応済のOpenSSL

脆弱性修正済のOpenSSLは、以下の通りです。OSによって対応バージョンが異なるため、注意が必要です。

  • OpenSSL 1.0.1g
  • OpenSSL 1.0.2-beta2
  • RHEL 6.5 openssl-1.0.1e-16.el6_5.7
  • CentOS 6.5 openssl-1.0.1e-16.el6_5.7
  • FreeBSD ports/openssl 1.0.1_10

影響のないOpenSSL

  • OpenSSL 1.0.0 ブランチ
  • OpenSSL 0.9.8 ブランチ

対応方法

対策には、以下の方法があります。

  • 証明書の秘密鍵を再作成した上でSSL証明書を再発行し、古いSSL証明書を失効させます。
  • OpenSSLを修正します。以下のどちらかの手順を実施します。
    • OPENSSL_NO_HEARTBEATS(-DOPENSSL_NO_HEARTBEATS) を有効にして、再コンパイルを行う
    • OpenSSL を脆弱性のないバージョンに上げる

対策

バージョンの確認方法

$ openssl version -a

バージョンアップ Linux

$ sudo yum update
$ sudo yum update openssl

バージョンアップ Ubuntu

$ sudo apt-get update
$ sudo apt-get upgrade

バージョンアップ FreeBSD

$ sudo portsnap fetch update
$ cd /usr/ports/security/openssl
$ sudo make install clean

確認方法

Heartbleed

Web 版のチェックツールです。 http://filippo.io/Heartbleed/

Unix版のプログラムは、GitHubで公開されいます。 https://github.com/FiloSottile/Heartbleed

このプログラムを使用するには、Goが必要です。

$ sudo pkg install go
$ export GOPATH=$PWD
$ go get github.com/FiloSottile/Heartbleed
$ go install github.com/FiloSottile/Heartbleed

OK な場合です。

$ ./bin/Heartbleed login.yahoo.co.jp:443
2014/04/08 23:27:49 login.yahoo.co.jp:443 - SAFE
$ ./bin/Heartbleed accounts.google.com:443
2014/04/08 23:28:54 accounts.google.com:443 - SAFE

この例は、脆弱性がある場合です。

$ ./bin/Heartbleed login.yahoo.com:443
2014/04/08 23:27:59 ([]uint8) {
 00000000  02 00 79 68 65 61 72 74  62 6c 65 65 64 2e 66 69  |..yheartbleed.fi|
 00000010  6c 69 70 70 6f 2e 69 6f  59 45 4c 4c 4f 57 20 53  |lippo.ioYELLOW S|
 00000020  55 42 4d 41 52 49 4e 45  4a 9c 8a 57 1e 1b 76 93  |UBMARINEJ..W..v.|
 00000030  f3 2f 1b af 9f b8 21 de  6a 4a 67 c9 23 7c f9 55  |./....!.jJg.#|.U|
 00000040  fe 89 d6 4b 7a a5 21 13  6a d1 c4 ea f1 ac db 52  |...Kz.!.j......R|
 00000050  cb 46 be 73 ee 4c 16 c3  86 fd 25 70 96 87 2a 5e  |.F.s.L....%p..*^|
 00000060  43 85 cf 29 12 69 96 01  68 46 e8 0c ba b3 0f 0d  |C..).i..hF......|
 00000070  bb 78 37 69 4b 6c 24 74  c4 8b a2 2a 17 ed 9c f7  |.x7iKl$t...*....|
 00000080  b4 46 f6 26 33 55 43 fd  48 14 b1 6d              |.F.&3UC.H..m|
}
 
2014/04/08 23:27:59 login.yahoo.com:443 - VULNERABLE
[2]    53447 exit 1     ./bin/Heartbleed login.yahoo.com:443

備考

関連項目