「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で通信するクライアントのメモリ内の情報が漏えいする
- DNSキャッシュポイズニング等を使用し、攻撃者のSSLサーバに接続された場合に漏えいします。
影響を受ける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
備考
- ssh / OpenSSH とは無関係です。
- GNU Privacy Guard (GnuPG) とは無関係です。