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

提供: セキュリティ
移動: 案内検索
(関連項目)
行34: 行34:
 
* CentOS 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
 
* FreeBSD ports/openssl 1.0.1_10
 +
* EC2 Amazon Linux AMI openssl-1.0.1e-37.66.amzn1.x86_64
 +
* Cygwin openssl-1.0.1g-1
 
== 影響のないOpenSSL ==
 
== 影響のないOpenSSL ==
 
* OpenSSL 1.0.0 ブランチ
 
* OpenSSL 1.0.0 ブランチ
行54: 行56:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=== バージョンアップ Ubuntu ===
 
=== バージョンアップ Ubuntu ===
 +
パッケージを確認できます。
 +
<syntaxhighlight lang="bash">
 +
$ dpkg -l | grep openssl
 +
</syntaxhighlight>
 +
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
$ sudo apt-get update
 
$ sudo apt-get update
行63: 行70:
 
$ cd /usr/ports/security/openssl
 
$ cd /usr/ports/security/openssl
 
$ sudo make install clean
 
$ sudo make install clean
 +
</syntaxhighlight>
 +
=== バージョンアップ MacOS X ===
 +
<syntaxhighlight lang="bash">
 +
$ brew update
 +
$ brew install openssl
 +
$ brew link --force openssl
 +
$ openssl version -a
 +
</syntaxhighlight>
 +
=== OpenSSLをビルドする ===
 +
<syntaxhighlight lang="bash">
 +
$ curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz \
 +
| tar xz && cd openssl-1.0.1g \
 +
&& ./config && make && sudo make install
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== 確認方法 ==
 
== 確認方法 ==

2014年4月9日 (水) 00:08時点における版

脆弱性 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
  • EC2 Amazon Linux AMI openssl-1.0.1e-37.66.amzn1.x86_64
  • Cygwin openssl-1.0.1g-1

影響のない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

パッケージを確認できます。

$ dpkg -l | grep openssl
$ sudo apt-get update
$ sudo apt-get upgrade

バージョンアップ FreeBSD

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

バージョンアップ MacOS X

$ brew update
$ brew install openssl
$ brew link --force openssl
$ openssl version -a

OpenSSLをビルドする

$ curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz \
| tar xz && cd openssl-1.0.1g \
&& ./config && make && sudo make install

確認方法

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

備考

関連項目