Heartbleed:それは何で、それを軽減するオプションは何ですか?


204

これは、Heartbleedのセキュリティ問題の理解と修正に関する正規の質問です。

CVE-2014-0160別名「Heartbleed」とは何ですか?原因、OpenSSLのOSおよびバージョンの脆弱性、症状は何ですか?悪用の成功を検出する方法はありますか?

システムに影響があるかどうかを確認するにはどうすればよいですか?この脆弱性はどのように軽減できますか?私の鍵または他の個人データが危険にさらされていることを心配する必要がありますか?他にどのような副作用を心配する必要がありますか?


14
Heartbleedの軽減には、単なる新しいキー以上のものが含まれます。(情報セキュリティStackExchangeに関する私の回答へのリンク)
scuzzy-delta 14

聞いたことがありますが、EEAAは以下をかなり包括的にカバーしていると思います。
MadHatter 14

私は同意します:それは素晴らしい答えですが、heartbleed.comは、パスワード変更やセッションの無効化の強制など、新しいキーペア以外にも考慮事項があることを指摘するために多大な努力を払っています。
scuzzy-delta 14

1
@ scuzzy-delta-良い点。私は今CWの答えを作ったので、その情報で自由に編集/改善してください。
EEAA 14

3
それが何であるかの最良の例-(当然のことながら)XKCD:xkcd.com/1354-
ウェインワーナー

回答:


118

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

CVE-2014-0160別名「Heartbleed」とは何ですか?

それは大きな途方もない混乱です、それはそれです。つまり、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シグニチャがまもなくリリースされる可能性がありますが、これを書いている時点では、これらは利用できません。

Heartbleedが2013年11月には野生で積極的に悪用されていたという証拠があります。EFFのWild at Heart:2013年11月にHeartbleedを使用したインテリジェンス機関を参照してくださいそして、ブルームバーグは、脆弱性が導入された直後にNSAがエクスプロイトを武器化したと報告しています。NSAが何年もの間、知性のためのハートブリードバグを悪用すると言われているを参照してください。しかし、米国Intelligence報機関はブルームバーグの主張を否定しています。IC ON THE RECORDを参照してください。

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

システムでOpenSSLを保守している場合は、次を発行するだけですopenssl version

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

場合分布はOpenSSLを維持している、あなたはおそらく使用してパッチ適用による背面にはOpenSSLのバージョンを確認することはできませんopenssl(例えば、コマンドやパッケージ情報をapt-getdpkgyumまたはrpm)。ほとんどの(すべて?)ディストリビューションで使用されるバックパッチプロセスは、ベースバージョン番号(たとえば、「1.0.1e」)のみを使用します。有効なセキュリティバージョン(たとえば、「1.0.1g」)含まれませ

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

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

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

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

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

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

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

より詳細な分析と回答については、Heartbleed OpenSSLエクスプロイトについてウェブサイト運営者がすべきことを参照してくださいセキュリティスタックエクスチェンジ。

私の鍵または他の個人データが危険にさらされていることを心配する必要がありますか?他にどのような副作用を心配する必要がありますか?

絶対に。システム管理者は、脆弱なOpenSSLバージョンを使用したサーバーが実際に侵害されていると想定し、それに応じて対応する必要があります。

脆弱性が公開されて間もなく、Cloudfareは、サーバーの秘密キーを実際に回復できるかどうかを確認するという課題を提示しました。チャレンジは、ヒョードル・インドゥトニーとイルッカ・マティラによって独立して勝ち取られました。The Heartbleed Challengeを参照してください。

詳細情報はどこで入手できますか?

詳細を探している人のためのリンクダンプ:


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


プログラマーであり、OpenSSLのmsg_cbコールバックを通じてHeartbleed攻撃を検出するなど、さまざまなプログラミングのトリックに興味がある場合は、OpenSSLのセキュリティアドバイザリ2014047を参照してください。


42
SHUTの場合は +1 ダウン。きみの。SERVERS。* -SSLが非常に重要な場所で何かを行う場合は、問題を修正するまでシャットオフしてください。また、(と新しい証明書をインストールすることを忘れないでください新しいキーを使用すると、サーバーにパッチを適用した後) - (危険にさらされている場合があります)古いキーを再利用する脆弱性にパッチを適用する全体の目的に反し...
voretaq7

29
また、OpenSSLライブラリにリンクするサービスを再起動します。デーモンを再起動せずにOpenSSLをアップグレードすることは、まったくアップグレードしないことと同じです。
EEAA 14

14
実際、あらゆる種類のメジャーパッチ(OpenSSLなど)の後、マシンをリブートして、何も見逃さないようにすることをお勧めします。
voretaq7 14

5
テスターの一つは、オープンソースされています:github.com/FiloSottile/Heartbleed
Riking

3
@EEAA、「サーバーをシャットダウンする」とは、電源を切る必要があるという意味ではありません。これは、Apacheまたはサービスを提供しているサービスをシャットダウン(またはssl / tlsを無効にするように再構成)することを意味します。
psusi


36

Ubuntu 12.04、12.10、および13.10

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

sudo apt-get update
sudo apt-get upgrade

Ubuntu 14.04

新しいリリース(1.0.1g)を含むDebianパッケージを、この目的のために設定したPPAにアップロードしました。これらの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バージョンです。サーバーバージョンは引き続きサポートされており、セキュリティ更新プログラムを受信します。しかし、バージョンが1.0.1未満であるため、heartbleed脆弱性は、ubuntu 10.04の標準インストールのopensslパッケージには影響しませんでした。

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

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からheartbleedパッチを受け取ります。

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

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

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

リブート

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


他のバージョンについて話すことはできませんが、正確に利用できるパッチがあるようです(12.04)。これにより脆弱性が修正されるとは断言できませんが、少なくとも関連するコミット(Mon Apr 7 20:31:55 UTC 2014)後にコンパイルされました。
カリオン14

@Calrion:OpenSSLのパッチまたはOpenSSLのDebianパッケージ?OpenSSLはすでに修正されており、新しいリリースが発行されています。
ネイサンオスマン14

opensslの更新中に既存の接続はどうなりますか?落とされますか?
pdeva 14

2
これは、使用しているWebサーバーと更新方法によって異なります。そうは言っても、既存の接続は脆弱なバージョンを使用しているため、既存の接続を削除することについては心配しません。
ネイサンオスマン14


14

RedHat 6.5およびCentOS 6.5

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

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

一時的に修正されたバージョンはまだすべてのミラーにインストールされていないようですが、http://mirror.centos.org/centos/6/updates/x86_64/Packages/(および同様にi686)。

編集: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の深刻な問題を認識しました。


lists.centos.org/pipermail/centos-announce/2014-April/…修正のリリースではありませんか?
user619714 14

13

Debian Wheezy

Debianは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

1
からアップデートを取得しているwheezy/security場合は、で十分apt-get update && apt-get upgradeです。または、パッケージのみを更新するために、対話型のパッケージマネージャを使用してopenssllibssl1.0.0libssl1.0.0-dbgおよびlibssl-dev(システムにインストールなど)。
CVn 14

apt-getを使用しても問題は解決しません-OpenSSL 1.0.1e 11 Feb 2013
user568829 14

@ michael-kjorlingに感謝します。これを行ったときには利用できませんでしたが、最も安全で正しいアップグレード方法です。
ジャクソンケージ14

2
OpenSSL 1.0.1e 11 Feb 2013パッチの名前が1.0.1e-2であるため、パッチopensslバージョンを適用した後の@ user568829は引き続き表示されます。確認できdpkg -l openssl、バージョンが表示されます1.0.1e-2+deb7u6
jacksoncage 14

2
OpenSSLの更新後にホストを再起動することをお勧めします。これは厳密に必要なためではなく、少なくともOpenSSLライブラリを動的にロードするすべてのものが新しいバージョンを使用していることを心に留めておくためです。(統計的にリンクされていることは別の問題です。)とはいえ、サービスの再起動が許容されるすべての状況で、一部のサーバーを簡単に再起動できないことを認識しています。
CVn

9

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


9

ポートからのFreeBSD 10.0またはopenssl

FreeBSDのセキュリティチームは:CVE-2014から0160(別名"ハートブリード")とに関する勧告を発行したのFreeBSD-SA-14:06.opensslを

  1. FreeBSDの更新

    • バイナリパッチを介してFreeBSDを更新する

      i386またはamd64 プラットフォームでリリース版の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. ルートとして次のコマンドを実行します。

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

        FreeBSDハンドブックに記載されているbuildworldinstallworldを使用します

  2. 最小バージョン1.0.1_10でopensslポートを更新します

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

  4. システムが危険にさらされているかのように振る舞い、すべてのsslキーや証明書、および潜在的に漏洩した情報を再発行します(EEAAのより一般的な回答を参照)。

FreeBSD 9.xおよびFreeBSD 8.x

これらのシステムは、ポートからopensslをインストールしない限り、デフォルトのopensslライブラリの0.9.xバージョンに依存しているため、デフォルトではHeartbleedの問題に対して脆弱ではありません(2階を参照)。

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

ローカルの攻撃者は、署名プロセスをスヌーピングし、そこから署名鍵を回復できる可能性があります。[CVE-2014-0076]

オリジナルのHeartbleed勧告では、FreeBSD 8.4および9.1が潜在的に脆弱であると記載されています。これは、Heartbeat Extension(デフォルトのFreeBSD opensslライブラリがバージョン0.9.xである)がないために当てはまりません。


3

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

FiloSottileのテストモジュールを使用して、任意のホストとポートに対してチェックを実行する小さなVMを作成しました。一見したところ、コードは健全に見えます。

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

警告の言葉

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

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


Snaptからメールを受け取りました。BOLO (目を光らせて)
ジェイコブ14

2

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以降、および2013.03以降にアップグレードされたAmazon Linux AMI)。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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.