
これは標準的な質問Heartbleed セキュリティ問題を理解し、修復する方法について説明します。
CVE-2014-0160、別名「Heartbleed」とは一体何でしょうか? 原因は何で、どの OS と OpenSSL のバージョンが脆弱で、症状はどのようなもので、エクスプロイトの成功を検出する方法はあるのでしょうか?
自分のシステムが影響を受けているかどうかはどうすれば確認できますか? この脆弱性を軽減するにはどうすればよいでしょうか? キーやその他の個人データが侵害されたことを心配する必要がありますか? 他にどのような副作用を心配する必要がありますか?
答え1
初めパニックになる前に、この脆弱性が実際に自分に当てはまるかどうかを確認してください。サーバーは持っているが、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 のコードを開発した人物は、不注意によるものだと述べています。深刻なセキュリティ欠陥「ハートブリード」を導入した男は、故意にそれを挿入したことを否定。
脆弱な OS と OpenSSL のバージョンは何ですか?
前述のように、OpenSSL 1.0.1 から 1.0.1f を使用しているオペレーティング システム、または OpenSSL 1.0.1f にリンクされているアプリケーション。
症状は何ですか? エクスプロイトの成功を検出する方法はありますか?
ここが恐ろしいところです。私たちが知る限り、この脆弱性が悪用されたかどうかを検出する方法は知られていません。理論的には、このエクスプロイトを検出できる IDS シグネチャがすぐにリリースされる可能性がありますが、この記事の執筆時点では、そのようなシグネチャは利用できません。
Heartbleedが2013年11月には既に悪用されていたという証拠があります。EFFのワイルド・アット・ハート:諜報機関は2013年11月にHeartbleedを使用していたのか?ブルームバーグは、脆弱性が明らかになった直後にNSAがこの脆弱性を武器化したと報じている。NSA は何年もの間、Heartbleed バグを諜報活動に利用していたとされるしかし、米国情報機関はブルームバーグの主張を否定している。IC オン ザ レコード。
システムが影響を受けているかどうかを確認するにはどうすればよいですか?
もしシステム上で OpenSSL を保守している場合は、次のコマンドを発行するだけですopenssl version
:
$ openssl version
OpenSSL 1.0.1g 7 Apr 2014
もしopenssl
ディストリビューションがOpenSSLを保守している場合、コマンドまたはパッケージ情報(たとえば、、、apt-get
またはdpkg
)を使用したバックパッチにより、OpenSSLのバージョンを判別できない可能性があります。ほとんどの(すべてyum
のrpm
?)ディストリビューションで使用されるバックパッチプロセスでは、基本バージョン番号(たとえば、「1.0.1e」)のみが使用されます。ない含む有効なセキュリティバージョン(例: 「1.0.1g」)。
Super User には、パッケージがバックパッチされたときに OpenSSL やその他のパッケージの有効なセキュリティ バージョンを決定するための未解決の質問があります。残念ながら、役に立つ回答はありません (ディストリビューションの Web サイトを確認する以外)。バックパッチ適用時に有効なセキュリティバージョンを決定する?。
経験則として、影響を受けるバージョンのいずれかをインストールしたことがあり、TLS サポートのために OpenSSL にリンクされたプログラムまたはサービスを実行したことがある場合は、脆弱です。
脆弱性をテストするプログラムはどこで入手できますか?
Heartbleed の発表から数時間以内に、インターネット上で数人が、サーバーにこの脆弱性が存在するかどうかをチェックするのに使用できるとされる、公開されている Web アプリケーションを公開しました。この記事の執筆時点では、私はそれらのアプリケーションをレビューしていないため、これ以上の公開はしません。これらのアプリケーションは、お好みの検索エンジンを使えば比較的簡単に見つけることができます。
この脆弱性はどのように軽減されますか?
脆弱性のないバージョンにアップグレードし、脆弱なデータをリセットまたは再保護してください。ハートブリードサイトの場合、適切な対応手順は概ね次のとおりです。
- 脆弱なシステムにパッチを適用します。
- 新しい秘密鍵を再生成します。
- 新しい CSR を CA に送信します。
- 新しい署名済み証明書を取得してインストールします。
- セッションキーとCookieを無効にする
- パスワードと共有秘密をリセットする
- 古い証明書を取り消します。
より詳細な分析と回答については、Heartbleed OpenSSL エクスプロイトに対してウェブサイト運営者は何をすべきでしょうか?Security Stack Exchange で。
キーやその他の個人データが侵害されたことを心配する必要がありますか? 他にどのような副作用を心配する必要がありますか?
そうです。システム管理者は仮定する脆弱な OpenSSL バージョンを使用していたサーバーは実際に侵害されており、それに応じて対応している。
脆弱性が明らかになった直後、Cloudfareはサーバーの秘密鍵を実際に復元できるかどうかを試すチャレンジを開催した。このチャレンジはFedor IndutnyとIlkka Mattilaがそれぞれ独立して勝利した。ハートブリードチャレンジ。
さらに詳しい情報はどこで入手できますか?
詳細を知りたい人のためのリンクダンプ:
開示イベントの詳細なタイムラインは、以下でご覧いただけます。Heartbleed 開示タイムライン: 誰がいつ何を知っていたか。
もしあなたがプログラマーで、OpenSSLのmsg_cb
コールバックを通じてHeartbleed攻撃を検出するなどの様々なプログラミングトリックに興味があるなら、OpenSSLのセキュリティアドバイザリ 2014047。
答え2
答え3
Ubuntu 12.04、12.10、13.10
Ubuntuは発行しましたUSN-2165-1は、更新されたパッケージがアーカイブで利用可能になったことを示します。次の 2 つのコマンドを実行して修正を取得します。
sudo apt-get update
sudo apt-get upgrade
ウブントゥ 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
注: アーカイブ内のパッチ適用バージョンを使用するのではなく、実際に新しいバージョン (1.0.1g) を実行したい場合に備えて、PPA では Ubuntu 12.04 および 13.10 用のパッケージも提供しています。
ウブントゥ 10.04
これは LTS バージョンです。サーバー バージョンは引き続きサポートされ、セキュリティ アップデートを受け取ります。ただし、バージョンが 1.0.1 未満であるため、Ubuntu 10.04 の標準インストールの openssl パッケージには Heartbleed 脆弱性の影響を受けませんでした。
デスクトップ バージョンはサポート終了となったため、アップグレードまたは再インストールする必要があります。
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に依存するすべてのサービスを確実に再起動する最善の方法は、リブート。
答え4
デビアン・ウィージー
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