web-dev-qa-db-ja.com

ハートブリード:それは何ですか、それを軽減するためのオプションは何ですか?

これは、ハートブリードのセキュリティ問題の理解と修正についての 標準的な質問 です。

CVE-2014-0160 AKA「ハートブリード」とは正確には何ですか?原因は何ですか?OpenSSLのどのOSとバージョンが脆弱ですか?症状は何ですか?成功したエクスプロイトを検出する方法はありますか?

システムが影響を受けているかどうかを確認するにはどうすればよいですか?この脆弱性はどのようにして軽減されますか?キーや他のプライベートデータが侵害されていることを心配する必要がありますか?他にどのような副作用について心配する必要がありますか?

203
Jacob

まず、慌てる前に、この脆弱性が実際にあなたに当てはまるかどうかを理解してください。サーバーはあるが、実際にTLSを使用するアプリケーションがなかった場合、これは修正するための優先度の高いものではありません。一方、あなたがこれまでに持ったことがある TLS対応のアプリケーションであるならば、まあ、あなたはごちそうにいます。読む:

CVE-2014-0160別名「ハートブリード」とは正確には何ですか?

それは大きなちくちくする混乱です、それはそれが何であるかです。つまり、OpenSSLバージョン1.0.1から1.0.1fにリモートで悪用可能な脆弱性が発見され、攻撃者がシステムメモリの特定の部分を読み取ることができました。これらの部分は、とりわけ、秘密鍵、事前共有鍵、パスワード、重要な企業データなどの機密データを保持する部分です。

このバグは、Google SecurityのNeel Mehta(2014年3月21日)とフィンランドのITセキュリティテスト会社Codenomicon(2014年4月2日)によって個別に発見されました。

原因は何ですか?

さて、OpenSSLの誤ったコード。 ここ は脆弱性を導入したコミットで、 ここ は脆弱性を修正したコミットです。バグは2011年12月に発生し、本日、2014年4月7日にパッチが適用されました。

このバグは、より大きな問題の症状と見なすこともできます。関連する2つの問題は、(1)誤ったコードがコードベースに導入されないようにするためにどのようなプロセスが行われているか、および(2)プロトコルと拡張機能が非常に複雑でテストが難しい理由です。項目(1)は、OpenSSLおよび他の多くのプロジェクトのガバナンスとプロセスの問題です。多くの開発者は、コードのレビュー、分析、スキャンなどの慣行に単に抵抗しています。項目(2)は、IETFのTLS WGで議論されています。 Heartbleed /プロトコルの複雑さ を参照してください。

誤ったコードが悪意を持って挿入されましたか?

これが本当に間違いだったのか、それとも悪意のある俳優のためにコードの一部が侵入したのかは推測しません。しかし、OpenSSLのコードを開発した人は、それが不注意だったと述べています。参照 深刻な「ハートブリード」セキュリティ欠陥を導入した人は、意図的に挿入したことを否定します

OpenSSLのどのOSとバージョンが脆弱ですか?

上記のように、OpenSSL 1.0.1から1.0.1fに対して使用されているオペレーティングシステム、またはアプリケーション。

症状は何ですか、エクスプロイトの成功を検出する方法はありますか?

これは怖い部分です。私たちの知る限り、この脆弱性が悪用されたかどうかを検出する既知の方法はありません。理論的には、このエクスプロイトを検出できるIDSシグネチャが間もなくリリースされる可能性がありますが、これを書いている時点では利用できません。

ハートブリードが2013年11月に野生で活発に悪用されていたという証拠があります。EFFの Wild at Heart:Were Intelligence Agencies Using Heartbleed in 2013? そして、ブルームバーグはNSAは、脆弱性が導入された直後にエクスプロイトを武器にしました。 NSAは何年もの間インテリジェンスのHeartbleedバグを悪用すると言っています を参照してください。しかし、US Intelligence Communityはブルームバーグの主張を否定している。 レコード上のIC を参照してください。

システムが影響を受けているかどうかを確認するにはどうすればよいですか?

IfシステムでOpenSSLを維持している場合は、openssl versionを発行するだけです。

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

IfディストリビューションがOpenSSLを維持している場合、opensslコマンドまたはパッケージ情報(例:apt-get)を使用したバックパッチにより、OpenSSLのバージョンを判別できない可能性があります。 、dpkgyumまたはrpm)。ほとんどの(すべて?)ディストリビューションで使用されるバックパッチプロセスでは、ベースバージョン番号(たとえば、「1.0.1e」)のみを使用します。 notには有効なセキュリティバージョンが含まれます(たとえば、「1.0.1g」)。

スーパーユーザーには、パッケージがバックパッチされたときにOpenSSLおよびその他のパッケージの有効なセキュリティバージョンを決定するための未解決の質問があります。残念ながら、有用な回答はありません(ディストリビューションのWebサイトを確認する以外に)。 バックパッチに直面した場合の有効なセキュリティバージョンの決定 ?を参照してください。

経験則として、影響を受けるバージョンのいずれかをインストールし、TLSサポート用のOpenSSLにリンクするプログラムまたはサービスを実行したことがある場合、脆弱です。

脆弱性をテストするプログラムはどこにありますか?

Heartbleedの発表から数時間以内に、インターネット上の何人かの人々が、この脆弱性の存在についてサーバーをチェックするために使用できると思われる公にアクセス可能なWebアプリケーションを公開しました。この記事の執筆時点ではまだレビューしていませんので、それらのアプリケーションをこれ以上公開しません。お好みの検索エンジンを利用すれば、比較的簡単に見つけることができます。

この脆弱性はどのように緩和されますか?

脆弱性のないバージョンにアップグレードし、脆弱性のあるデータをリセットまたは再保護します。 Heartbleed サイトに記載されているように、適切な対応手順はおおまかに次のとおりです。

  1. 脆弱なシステムにパッチを適用します。
  2. 新しい秘密鍵を再生成します。
  3. 新しいCSRをCAに送信します。
  4. 新しい署名付き証明書を取得してインストールします。
  5. セッションキーとCookieを無効にする
  6. パスワードと共有シークレットをリセットする
  7. 古い証明書を取り消します。

より詳細な分析と回答については、セキュリティスタック交換の Heartbleed OpenSSLエクスプロイトについてWebサイトオペレーターがすべきこと を参照してください。

キーや他のプライベートデータが侵害されていることを心配する必要がありますか?他にどのような副作用について心配する必要がありますか?

もちろんです。システム管理者はassume脆弱なOpenSSLバージョンを使用していたサーバーが実際に侵害され、それに応じて応答する必要があります。

脆弱性が公開されて間もなく、Cloudfareはサーバーの秘密鍵を実際に復元できるかどうかを確認するための課題を提示しました。この課題は、Fedor IndutnyとIlkka Mattilaが独立して勝ちました。 The Heartbleed Challenge を参照してください。

詳細情報はどこにありますか?

詳細をお探しの方のためのリンクダンプ:


開示イベントのかなり詳細なタイムラインは Heartbleed開示タイムライン:誰がいつ何をいつ知ったか にあります。


プログラマーで、OpenSSLのmsg_cbコールバックを介したハートブリード攻撃の検出など、さまざまなプログラミングトリックに興味がある場合は、OpenSSLの Security Advisory 2014047 を参照してください。

116
EEAA

XKCDによるバグの簡単な説明:

XKCD 1354

43
200_success

Ubuntu 12.04、12.10、および13.10

Ubuntuは SN-2165-1 を発行しました。これは、更新されたパッケージがアーカイブで利用可能になったことを示しています。次の2つのコマンドを実行して、修正を取得します。

Sudo apt-get update
Sudo apt-get upgrade

Ubuntu 14.04

私はこの目的のために設定したPPAに、新しいリリース(1.0.1g)を含むDebianパッケージをアップロードしました。これらの3つのコマンドは、私のPPAをシステムに追加し、利用可能なパッケージのリストを更新し、すべてをアップグレードします。

Sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
Sudo apt-get update
Sudo apt-get upgrade

注:PPAはUbuntu 12.04および13.10のパッケージも提供します。アーカイブ内のパッチバージョンを使用するのではなく、実際に新しいバージョン(1.0.1g)を実行したい場合に備えています。

Ubuntu 10.04

これはLTSバージョンです。サーバーバージョンは引き続きサポートされており、セキュリティアップデートを受信します。しかし、ハートブリードされた脆弱性は、ubuntu 10.04の標準インストールのopensslパッケージに影響を与えませんでした。バージョンが1.0.1未満であるためです。

デスクトップバージョンがサポート終了になり、アップグレード/再インストールする必要があります。

Ubuntu 13.04およびその他の古いバージョン

Ubuntu 13.04のサポートサイクルは非常に短かったので、予期していなかったかもしれません。すでにサポートが終了しており、セキュリティアップデートは提供されていません。長い間アップグレードされているはずです。まだ誰かがそれを使用している場合は、最初からアップグレードするか、次の簡単な手順に従って非破壊で13.10にアップグレードできます。 http://www.tecmint.com/upgrade-ubuntu-13-04 -raring-ringtail-to-ubuntu-13-10-saucy-salamander / アップグレード後、システムは13.10からハートブリードパッチを受信します。

他のすべての古いubuntuバージョンでは、基本的に新規インストールが必要です。

パッチが適用されたことを確認します

基本的に、openssl version -aで、ビルド日が2014年4月7日以降であることを確認します。詳細については こちら をご覧ください。

リブート

OpenSSLに依存するすべてのサービスが確実に再起動されるようにする最良の方法は、 reboot にすることです。

36
Nathan Osman

RedHat 6.5およびCentOS 6.5

これらは脆弱です。 RedHatのエラッタRHSA-2014-0376 は、パッチを適用したライブラリが利用可能であり、影響を受ける人はできるだけ早くアップグレードする必要があると述べています。

これを書いている時点では、CentOSにはまだ修正バージョンがありませんでした Karanbir SinghのCentOS-announceへの投稿 は、openssl(openssl-1.0.1e-16.el6_5.4.0.1、重要な最後の4桁に注意してください。これは、悪用可能なTLSコマンドが無効になっており、最終的にリリースされたときに修正バージョンによって上書きされるため、安全に適用できます。

一時的に修正されたバージョンはまだすべてのミラーに適用されていないようですが、メインのリポジトリ http://mirror.centos.org/centos/6/updates/x86_64/Packages/にあります) (i686の場合も同様)。

Edit:Iainが言うように、C6.5の完全にパッチされたバージョンがあるように見え、ミラーの周りにプッシュされたようです。急いで。ストレートyum updateサーバー用に取得しました。 openssl-1.0.1e-16.el6_5.7

6.5より前のバージョンのRH6およびC6

これらは脆弱ではありません。 このRed Hatからの助言 によれば、

この問題は、Red Hat Enterprise Linux 5およびRed Hat Enterprise Linux 6.4以前に同梱されているopensslのバージョンには影響しませんでした。

Karanbir SinghによるCentOS-announceへの投稿 バージョン管理についても同様に明確です。

本日の早い段階で、CentOS-6.5で出荷されたopensslに重大な問題があることを確認しました

14
MadHatter

Debian Wheezy

Debianはissed DSA-2896-1 であり、パッチが当てられたライブラリは こちらから入手可能 です。シェルスクリプトは ここで利用可能 です。

1。パッチ

Apt-getリポジトリが更新されたため、パッチを適用したライブラリをapt-get update && apt-get upgrade経由で利用できるようになりました

apt-get upgrade libssl1.0.0 openssl

代わりに(非推奨)パッケージを手動でアップグレードできます:

wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0-dbg_1.0.1e-2+deb7u5_AMD64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u5_AMD64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1e-2+deb7u5_AMD64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1e-2+deb7u5_AMD64.deb

dpkg -i openssl_1.0.1e-2+deb7u5_AMD64.deb
dpkg -i libssl1.0.0_1.0.1e-2+deb7u5_AMD64.deb
dpkg -i libssl1.0.0-dbg_1.0.1e-2+deb7u5_AMD64.deb
dpkg -i libssl-dev_1.0.1e-2+deb7u5_AMD64.deb

2。サーバー/サービスを再起動します

最善の保護を行うには、サーバー全体を再起動するか、サーバーをオフラインにできない場合は、必要なサービスを再起動します。

3。 OpenSSLバージョンの確認

love@server:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
love@server:~$ dpkg -l libssl1.0.0
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-====================================================
ii  libssl1.0.0                 1.0.1e-2+deb7u6  AMD64            SSL shared libraries
13
jacksoncage

FreeBSD 10.またはopensslポートから

FreeBSDセキュリティチームは、CVE-2014-0160(別名 "Heartbleed")および FreeBSD-SA-14:06.openssl に関する勧告を発行しました

  1. FreeBSDの更新

    • バイナリパッチによるFreeBSDの更新

      i386またはAMD64プラットフォームでRELEASEバージョンのFreeBSDを実行しているシステムは、freebsd-update(8)ユーティリティを使用して更新できます。

      # freebsd-update fetch
      # freebsd-update install
      
    • ソースからのFreeBSDの更新

      1. 以下の場所から関連するパッチをダウンロードし、PGPユーティリティを使用して分離されたPGP署名を確認します。

        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch
        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch.asc
        # gpg --verify openssl-10.patch.asc
        
      2. Rootとして以下のコマンドを実行します。

        # cd /usr/src
        # patch < /path/to/patch
        
      3. オペレーティングシステムを再コンパイルする

        FreeBSDハンドブック で説明されているように、buildworldおよびinstallworldを使用します。

  2. opensslポートを最小バージョンで更新1.0.1_1

  3. ライブラリを使用してすべてのデーモンを再起動するか、システムを再起動します

  4. システムが侵害されたかのように振る舞い、すべてのsslキーおよび/または証明書、および潜在的に漏洩した情報を再発行します([〜#〜] eeaa [〜#〜]より一般的な回答を参照)。

FreeBSD 9.xおよびFreeBSD 8.x

これらのシステムは、古いバージョンのopensslライブラリに依存しているため、デフォルトで脆弱性なしからハートブリードの問題が発生しますnlessインストール済みopensslポートから(2階を参照).

これらのシステムがHeartbleedの問題に対して脆弱でない場合は、別のローカルの脆弱性( FreeBSD-SA-を参照)が原因で、システムをすぐにアップグレードするのが賢明な場合があります。 14:06.openssl および2階の "FreeBSD 10.0"セクション):

ローカルの攻撃者は、署名プロセスをスヌープして、そこから署名キーを復元する可能性があります。 [CVE-2014-0076]

メモ

オリジナルの Heartbleed アドバイザリは、潜在的に脆弱であるとしてFreeBSD 8.4および9.1をリストしています。ハートビート拡張がないため、これは当てはまりません(デフォルトのFreeBSD opensslライブラリはバージョン0.9.xです)。

9
Ouki

私は、秘密鍵が侵害されたと見なされるべき唯一の資産ではないことを指摘したいと思います。このバグは、OpenSSLと同じアドレス空間(つまり、同じプロセス)で実行されているanyメモリをリークする可能性があります。したがって、OpenSSLの脆弱なバージョンが静的または動的にリンクされているサーバープロセスを実行している場合は、パスワード、クレジットカード番号、その他の個人データを含むそのプロセスがこれまでに処理した情報の一部 、潜在的に危険にさらされていると考える必要があります。

9
200_success

私が使用しているいくつかのアプライアンスで使用されているSSLのバージョンを判別するのは不可能に近いことがわかりました。技術的には緩和策ではありませんが、現在脆弱なホストを特定できることが私のリストのトップにありました。

私は小さなVMを使用して、任意のホストおよびポートに対して FiloSottileのテストモジュール を使用してチェックを実行します)をまとめました。

完成したVM ishereのリリースはVMX形式です。

警告の言葉

このスクリプトとVMはのみでシステムの現在のステータスを表示します。過去のある時点で、システムが脆弱な状態であり、虐待された可能性があります。

ここに表示されるものは間違いなく修正の優先度が高いですが、更新を適用してすべてのキーを変更するためのフックからされません

3
Tim Brigham

Amazon Linux(Amazon EC2で使用されるLinuxディストリビューション)

https://aws.Amazon.com/Amazon-linux-AMI/security-bulletins/ALAS-2014-320/

問題の概要:OpenSSLがTLSハートビート拡張パケットを処理する方法で、不足している境界チェックが見つかりました。この欠陥は、接続されたクライアントまたはサーバーから最大64kのメモリを明らかにするために使用される可能性があります。

影響を受けるバージョン:openssl 1.0.1がインストールされているすべてのAmazon Linux AMI。これは、Amazon Linux AMI 2013.03以降、およびすべてのAmazon Linux AMIです。 2013.03以降にアップグレードしました。 OpenSSLは、Amazon Linux AMIにデフォルトでインストールされます。

影響を受けるパッケージ:openssl

問題の修正:システムを更新するには、yum update opensslを実行します。新しいパッケージをインストールしたら、opensslを使用しているすべてのサービスを手動で再起動するか、インスタンスを再起動する必要があります。新しいパッケージの名前はまだopenssl-1.0.1eですが、CVE-2014-0160の修正が含まれています。

新しいパッケージ:i686:

openssl-1.0.1e-37.66.amzn1.i686

openssl-static-1.0.1e-37.66.amzn1.i686

openssl-Perl-1.0.1e-37.66.amzn1.i686

openssl-devel-1.0.1e-37.66.amzn1.i686

openssl-debuginfo-1.0.1e-37.66.amzn1.i686

x86_64:

openssl-devel-1.0.1e-37.66.amzn1.x86_64

openssl-1.0.1e-37.66.amzn1.x86_64

openssl-debuginfo-1.0.1e-37.66.amzn1.x86_64

openssl-Perl-1.0.1e-37.66.amzn1.x86_64

openssl-static-1.0.1e-37.66.amzn1.x86_64
2
Garreth McDaid