前書き

2014年10月14日に、SSL暗号化プロトコルのバージョン3の脆弱性が公開されました。 POODLE(ダウングレードされたレガシー暗号化のパディングOracle)と呼ばれるこの脆弱性により、攻撃者は中間者攻撃を使用してプレーンテキストでこのバージョンのプロトコルで暗号化された情報を読み取ることができます。

SSLv3は主に廃止されたプロトコルの古いバージョンですが、より多くの暗号化オプションが利用できない場合、ソフトウェアの*多く*はまだSSLv3にフォールバックします。 さらに重要なことは、接続しようとする両方の参加者が利用可能な代替手段である場合、攻撃者がSSLv3接続を強制することが可能です。

POODLEの脆弱性は、SSLv3を使用した通信を可能にするサービスまたはクライアントに影響を与えます。 これはプロトコル設計の欠陥であり、実装の問題ではないため、SSLv3を使用する*すべて*のソフトウェアは脆弱です。

この脆弱性の詳細については、http://web.nvd.nist.gov/view/vuln/detail?vulnId = CVE-2014-3566 [CVE-2014-3566]にあるCVE情報を参照してください。

POODLEの脆弱性とは何ですか?

POODLEの脆弱性は、SSLプロトコルのバージョン3の弱点であり、中間者コンテキストの攻撃者がSSLv3暗号化メッセージのプレーンテキストコンテンツを解読できるようにします。

この脆弱性の影響を受けるのは誰ですか?

この脆弱性は、SSLv3との通信を強制されるすべてのソフトウェアに影響を与えます。 つまり、SSLv3サポートを含むフォールバックメカニズムを実装するソフトウェアは脆弱であり、悪用される可能性があります。

影響を受ける可能性のあるソフトウェアの一般的な一部には、Webブラウザ、Webサーバー、VPNサーバー、メールサーバーなどがあります。

それはどのように機能しますか?

つまり、SSLv3プロトコルは暗号化されたメッセージとともに送信されるパディングバイトを適切にチェックしないため、POODLEの脆弱性が存在します。

これらは受信側では検証できないため、攻撃者はこれらを置き換えて目的の宛先に渡すことができます。 特定の方法で行われた場合、変更されたペイロードは、苦情なしに受信者に受け入れられる可能性があります。

宛先では256リクエストごとに平均1回が受け入れられ、攻撃者は1バイトを解読できます。 これは、追加のバイトを徐々に復号化するために簡単に繰り返すことができます。 このプロトコルを使用して参加者にデータの再送を繰り返し強制できる攻撃者は、非常に短時間で暗号化を破ることができます。

どうすれば自分を守ることができますか?

クライアントとサーバーの両方としての役割において脆弱ではないことを保証するためのアクションをとるべきです。 暗号化は通常、クライアントとサーバー間でネゴシエートされるため、両者が関係する問題です。

サーバーとクライアントは、SSLv3サポートを完全に無効にする手順を実行する必要があります。 多くのアプリケーションはデフォルトでより良い暗号化を使用しますが、フォールバックオプションとしてSSLv3サポートを実装します。 悪意のあるユーザーは、受け入れ可能な方法として両方の参加者が許可した場合、SSLv3通信を強制する可能性があるため、これを無効にする必要があります。

一般的なアプリケーションを保護する方法

以下では、一般的なサーバーアプリケーションでSSLv3を無効にする方法について説明します。 サーバーを評価して、SSL / TCP暗号化に依存する可能性のある追加サービスを保護するように注意してください。

POODLE脆弱性は実装の問題を表すものではなく、プロトコル全体に固有の問題であるため、回避策はなく、唯一の信頼できる解決策はそれを使用しないことです。

Nginx Webサーバー

Nginx WebサーバーでSSLv3を無効にするには、 `+ ssl_protocols `ディレクティブを使用できます。 これは、設定の「 server 」または「 http +」ブロックに配置されます。

たとえば、Ubuntuでは、これをグローバルに「+ http 」ブロック内の「 / etc / nginx / nginx.conf 」に追加するか、「 / etc / nginx / sites-enabled + `ディレクトリ。

sudo nano /etc/nginx/nginx.conf

SSLv3を無効にするには、 `+ ssl_protocols +`ディレクティブを次のように設定する必要があります。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

上記の変更を行った後、サーバーを再起動する必要があります。

sudo service nginx restart

Apache Webサーバー

Apache WebサーバーでSSLv3を無効にするには、 `+ mod_ssl `モジュールによって提供される ` SSLProtocol +`ディレクティブを調整する必要があります。

このディレクティブは、サーバーレベルまたは仮想ホスト構成で設定できます。 ディストリビューションのApache構成によっては、SSL構成がソースとなる別のファイルにある場合があります。

Ubuntuでは、サーバーのサーバー全体の仕様は、 `+ / etc / apache2 / mods-available / ssl.conf `ファイルを編集することで調整できます。 ` mod_ssl `が有効な場合、シンボリックリンクはこのファイルを ` mods-enabled +`サブディレクトリに接続します:

sudo nano /etc/apache2/mods-available/ssl.conf

CentOSでは、ここにあるSSL構成ファイルでこれを調整できます(SSLが有効な場合)。

sudo nano /etc/httpd/conf.d/ssl.conf

内部には、 `+ SSLProtocol +`ディレクティブがあります。 これが利用できない場合、作成します。 これを変更して、SSLv3のサポートを明示的に削除します。

SSLProtocol all -SSLv3 -SSLv2

ファイルを保存して閉じます。 サービスを再起動して、変更を有効にします。

Ubuntuでは、次のように入力できます。

sudo service apache2 restart

CentOSでは、これは次のようになります。

sudo service httpd restart

HAProxyロードバランサー

HAProxyロードバランサーでSSLv3を無効にするには、 `+ haproxy.cfg +`ファイルを開く必要があります。

これは `+ / etc / haproxy / haproxy.cfg +`にあります:

sudo nano /etc/haproxy/haproxy.cfg

フロントエンドの設定で、SSLを有効にしている場合、 `+ bind `ディレクティブはパブリックIPアドレスとポートを指定します。 SSLを使用している場合、この行の最後に ` no-sslv3 +`を追加する必要があります。

frontend
   bind :443 ssl crt

ファイルを保存して閉じます。

変更を実装するには、サービスを再起動する必要があります。

sudo service haproxy restart

OpenVPN VPNサーバー

OpenVPNの最近のバージョンは、実際にはSSLv3を許可していません。 サービスはこの特定の問題に対して脆弱ではないため、構成を調整する必要はありません。

https://forums.openvpn.net/topic17268.html [詳細については、OpenVPNフォーラムのこの投稿]を参照してください。

Postfix SMTPサーバー

暗号化を要求するようにPostfix設定が設定されている場合、 `+ smtpd_tls_mandatory_protocols +`と呼ばれるディレクティブを使用します。

これはメインのPostfix設定ファイルで見つけることができます:

sudo nano /etc/postfix/main.cf

常に暗号化を使用するように設定されたPostfixサーバーの場合、このパラメーターを設定することにより、SSLv3およびSSLv2が受け入れられないようにすることができます。 暗号化を強制しない場合、何もする必要はありません。

smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3

設定を保存します。 サービスを再起動して、変更を実装します。

sudo service postfix restart

Dovecot IMAPおよびPOP3サーバー

DovecotサーバーでSSLv3を無効にするには、 `+ ssl_protocols +`というディレクティブを調整する必要があります。 ディストリビューションのパッケージ方法によっては、SSL構成が代替構成ファイルに保持される場合があります。

ほとんどのディストリビューションでは、このファイルを開いてこのディレクティブを調整できます。

sudo nano /etc/dovecot/conf.d/10-ssl.conf

内部でDovecot 2.1以降を使用している場合、 `+ ssl_protocols +`ディレクティブを設定してSSLv2とSSLv3を無効にします:

ssl_protocols = !SSLv3 !SSLv2

2.1より前のバージョンのDovecotを使用している場合、次のようにSSLv3を許可しないように `+ ssl_cipher_list +`を設定できます。

ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3

ファイルを保存して閉じます。

変更を実装するには、サービスを再起動します。

sudo service dovecot restart

さらなるステップ

サーバー側のアプリケーションに加えて、クライアントアプリケーションも更新する必要があります。

特に、Webブラウザは、ステップダウンプロトコルネゴシエーションのため、この問題に対して脆弱である可能性があります。 ご使用のブラウザーで、受け入れ可能な暗号化方式としてSSLv3が許可されていないことを確認してください。 これは、設定または追加のプラグインまたは拡張機能のインストールによって調整可能です。

結論

SSLv3の広範なサポートにより、強力な暗号化が有効になっている場合でも、この脆弱性は広範囲に及ぶ危険です。 SSL暗号化を利用するリソースの消費者とプロバイダーの両方として、自分自身を保護する対策を講じる必要があります。

あらゆる形式のSSL / TLSを活用する可能性のあるネットワークアクセス可能なサービスをすべてチェックアウトしてください。 多くの場合、これらのアプリケーションでは、SSLv3のような弱い形式の暗号化を完全に無効にするための明示的な指示が必要です。