web-dev-qa-db-ja.com

OpenSSLのHeartbleedバグからどのように回復しますか?

CVE-2014-016 a.k.a. Heartbleed はOpenSSLの脆弱性です。怖いですね。

自分が影響を受けているかどうかをどのように判断しますか?

影響を受けた場合、何をする必要がありますか?どうやらアップグレードは十分ではありません。

この脆弱性は、システムが攻撃された場合、パッチを適用した後でも脆弱なままであり、攻撃がログに痕跡を残さない可能性があるため、大きな潜在的影響を及ぼします。あなたがすぐにパッチを適用し、あなたが注目を浴びているターゲットではない場合、おそらく誰もあなたを攻撃することはできませんが、確信するのは困難です。

私は脆弱ですか?

OpenSSLのバグのあるバージョン

バグのあるソフトウェアは、OpenSSLライブラリ1.0.1から1.0.1f、およびOpenSSL 1.0.2からbeta1です。古いバージョン(0.9.x、1.0.0)とバグが修正されたバージョン(1.0.1g以降、1.0.2ベータ2以降)は影響を受けません。これは実装のバグであり、プロトコルの欠陥ではないため、OpenSSLライブラリを使用するプログラムのみが影響を受けます。

コマンドラインツール_openssl version -a_を使用して、OpenSSLのバージョン番号を表示できます。一部のディストリビューションでは、バグ修正が以前のリリースに移植されています。パッケージの変更ログにHeartbleedバグ修正が含まれている場合、1.0.1fのようなバージョンが表示されていても問題ありません。 _openssl version -a_が2014年4月7日のUTC以降の夜のビルド日付(最初の行の日付ではない)について言及している場合は、問題ありません。 OpenSSLパッケージでは、versionが1.0.1であっても、nameに_1.0.0_が含まれている場合があります(_1.0.0_はバイナリ互換性を示します)。

影響を受けるアプリケーション

OpenSSLライブラリを使用してSSL接続を実装するアプリケーションを介して悪用が行われます。多くのアプリケーションは他の暗号化サービスにOpenSSLを使用していますが、それは問題ありません。バグは、SSLプロトコルの特定の機能である「ハートビート」の実装にあります。

システム上のライブラリにリンクされているプログラムを確認することをお勧めします。 dpkgとaptを使用するシステム(Debian、Ubuntu、Mintなど)では、次のコマンドは、_libssl1.0.0_(影響を受けるパッケージ)を使用するライブラリ以外のインストール済みパッケージを一覧表示します。

_apt-cache rdepends libssl1.0.0 | tail -n +3 |
xargs dpkg -l 2>/dev/null | grep '^ii' | grep -v '^ii  lib'
_

このリストにあるサーバーソフトウェアを実行し、SSL接続をリッスンする場合、おそらく影響を受けています。これは、Webサーバー、電子メールサーバー、VPNサーバーなどに関係します。証明書署名要求を証明機関に送信するか、独自の自己署名を行うことにより、証明書を生成する必要があったため、SSLを有効にしたことがわかります。証明書。 (一部のインストール手順では、気付かずに自己署名証明書が生成された可能性がありますが、これは通常、インターネットに公開されているサーバーではなく、内部サーバーに対してのみ行われます。 2014-04-07の発表以降、ログに接続が表示されない限り。 (これは、脆弱性が発表前に悪用されていなかったと想定しています。)サーバーが内部でのみ公開されている場合、キーを変更する必要があるかどうかは、他のセキュリティ対策によって異なります。

クライアントソフトウェアは、悪意のあるサーバーへの接続に使用した場合にのみ影響を受けます。したがって、IMAPSを使用してメールプロバイダーに接続している場合は、心配する必要はありません(プロバイダーが攻撃されていない限り—ただし、その場合は、プロバイダーから通知されます)。ただし、脆弱なブラウザーでランダムなWebサイトを閲覧した場合は、心配する。これまでのところ、この脆弱性は発見される前は悪用されていなかったようです。そのため、2014-04-08以降に悪意のあるサーバーに接続した場合にのみ心配する必要があります。

次のプログラムは、SSLの実装にOpenSSLを使用しないため、影響を受けません。

  • SSH(プロトコルはSSLではありません)
  • Chrome/Chromium( NSSを使用
  • Firefox(NSSを使用)(少なくともUbuntu 12.04のFirefox 27では、すべてのビルドではありませんか?

どのような影響がありますか?

このバグにより、SSLサーバーに接続して、一度にサーバーから約64kBのメモリを取得できるすべてのクライアントが許可されます。クライアントは、いかなる方法でも認証される必要はありません。攻撃を繰り返すことにより、クライアントは連続する試行でメモリのさまざまな部分をダンプできます。これにより、攻撃者はキー、パスワード、Cookieなど、サーバープロセスのメモリ内にあるデータを取得できる可能性があります。

攻撃者が取得できる重要なデータの1つは、サーバーのSSL秘密鍵です。このデータを使用して、攻撃者はサーバーになりすますことができます。

このバグにより、SSLクライアントが接続しているすべてのサーバーが、一度にクライアントから約64kBのメモリを取得することもできます。脆弱なクライアントを使用して機密データを操作し、後で同じクライアントで信頼されていないサーバーに接続した場合、これは心配です。したがって、このサイドの攻撃シナリオは、サーバーサイドよりも大幅に可能性が低くなります。

通常のディストリビューションの場合、パッケージの整合性はSSLトランスポートではなくGPGシグネチャに依存しているため、 パッケージの配布にはセキュリティへの影響はありません であることに注意してください。

脆弱性を修正するにはどうすればよいですか?

公開されたサーバーの修復

  1. 影響を受けるすべてのサーバーをオフラインにします。稼働している限り、重要なデータが漏洩する可能性があります。

  2. OpenSSLライブラリパッケージをアップグレードします。すべてのディストリビューションには、修正が必要です(1.0.1g、またはバージョン番号を変更せずにバグを修正するパッチ)。ソースからコンパイルした場合は、1.0.1g以上にアップグレードしてください。影響を受けるすべてのサーバーが再起動されていることを確認します。
    Linuxでは、grep 'libssl.*(deleted)' /proc/*/mapsを使用して、影響を受ける可能性のあるプロセスがまだ実行されているかどうかを確認できます

  3. 新しいキーを生成します。バグにより攻撃者が古い秘密鍵を取得できる可能性があるため、これが必要です。最初に使用したのと同じ手順に従います。

    • 証明機関によって署名された証明書を使用する場合は、新しい公開キーをCAに送信します。新しい証明書を取得したら、サーバーにインストールします。
    • 自己署名証明書を使用する場合は、サーバーにインストールしてください。
    • どちらの方法でも、古いキーと証明書を邪魔にならない場所に移動します(ただし、削除せず、それらが使用されないようにします)。
  4. 妥協のない新しいキーができたので、サーバーをオンラインに戻すことができます

  5. 古い証明書を取り消します

  6. 損傷評価:SSL接続を提供するプロセスのメモリにあるデータは、リークされる可能性があります。これには、ユーザーのパスワードやその他の機密データを含めることができます。このデータが何であったかを評価する必要があります。

    • パスワード認証を許可するサービスを実行している場合は、脆弱性が発表される少し前から接続しているユーザーのパスワードが侵害されていると考える必要があります。ログを確認し、影響を受けるユーザーのパスワードを変更してください。
    • また、侵害された可能性があるため、すべてのセッションCookieを無効にします。
    • クライアント証明書は危険にさらされません。
    • 脆弱性の少し前から交換されたデータはすべてサーバーのメモリに残っている可能性があり、攻撃者に漏えいしている可能性があります。
    • 誰かが古いSSL接続を記録し、サーバーのキーを取得した場合、そのユーザーはトランスクリプトを復号化できます。 (ただし [〜#〜] pfs [〜#〜] が保証されている場合を除きます—わからない場合は保証されていませんでした。)

その他の場合の修正

Localhostまたはイントラネットでのみリッスンするサーバーは、信頼できないユーザーが接続できる場合にのみ公開されていると見なされます。

クライアントの場合、バグが悪用される可能性のあるまれなシナリオのみがあります。悪用には、同じクライアントプロセスを使用して

  1. 機密データ(パスワード、クライアント証明書など)を操作する。
  2. そして、同じプロセスで、SSLを介して悪意のあるサーバーに接続しました。

したがって、たとえば、(完全に信頼されていない)メールプロバイダーへの接続にのみ使用する電子メールクライアントは問題ではありません(悪意のあるサーバーではありません)。 wgetを実行してファイルをダウンロードすることは問題ではありません(機密データが漏洩することはありません)。

2014-04-07夜UTCからOpenSSLライブラリのアップグレードの間にそれを行った場合は、クライアントのメモリにあるデータが危険にさらされていると考えてください。

参考文献

脆弱かどうかをテストするには、ここにアクセスしてください: http://filippo.io/Heartbleed/

脆弱性があるとわかった場合はopensslを更新し、ウェブサーバーを再起動してください。

11
user26053

このバグから回復する方法はありません。すべてのログを保存してください。誰かが実際に脆弱性が発表される前に存在していたことに実際に気付いた場合に必要になります。

0
NetworkCo