SSLv2 DROWNの脆弱性によりTLSトラフィックが復号化される

画像



1995年にリリースされ、すでに1996年にその関連性を失ったNetscapeの暗号化プロトコルであるSSLv2は、特にSSLv3のPOODLE脆弱性の後、SSL / TLS暗号化を使用するすべてのソフトウェアで無効にする必要があるように見えます。暗号化の脆弱化(エクスポート)バージョンに関連付けられた256のリクエストとFREAK



また、クライアントソフトウェア(ブラウザなど)が長い間SSLv2接続をサポートしておらず、最近ではSSLv3もサポートしていない場合、サーバーソフトウェアはそれほど単純ではありません。



テルアビブ大学、ミュンヘン応用科学大学、ボーフムのルール大学、ペンシルベニア大学、ペンシルベニア大学、ツーシグマ、Google、ハッシュキャットプロジェクト、およびOpenSSLの研究者チームは、 D browteおよびD ecrypting R SA using O bsolete and W eakened eと呼ばれる脆弱性を発見しましたN暗号化。同じ秘密キーで動作するすべてのサーバーのサーバー側でSSLv2プロトコルが無効になっていない場合、クライアントTLSトラフィックを復号化できます。



調査によると、最も訪問された100万のWebサイトの25%がこの脆弱性の影響を受けており、または公的証明機関が発行した証明書を使用してスキャンされたすべてのサーバーの22%です。



なぜこれが可能ですか?

ほとんどのWebサーバーではデフォルトでSSLv2が無効になっており、だれも意図的に有効にしないという事実にもかかわらず、この攻撃により、TLSv2をサポートするサーバーにアクセスし、同じ秘密鍵を使用してTLSトラフィックを復号化できますWebサーバー。 多くの場合、Webサーバーとメールサーバー、およびFTPSに同じ証明書が使用されています。



一般的な攻撃の変形は、40ビットRSAキーを使用したSSLv2エクスポート暗号の脆弱性を悪用します。

Diffie-Hellmanプロトコルまたは楕円曲線上のそのバージョンで合意されている一時キーを使用せずに情報が送信される場合、攻撃を成功させるには、攻撃者は受動的に犠牲者の何百ものTLS接続をリッスンし、特別に細工されたパケットをSSLv2を使用してサーバーに送信する必要があります同じ秘密鍵。



SSLv2プロトコルでのパケットの正しい復号化に関する情報の漏洩により、攻撃が可能です。 ハッカーは、Danel Bleichenbacherの攻撃を使用し、暗号化された48ビットのプリマスターシークレットで傍受したクライアントパケットを送信することで、約900のTLSクライアントセッションの1つを完全に解読できます。 攻撃を完了するには、SSLv2が有効になっているサーバーに約40,000のリクエストを送信し、送信されるメッセージごとに弱い対称暗号化のキーを取得する必要があります。



研究者は、200台のAmazon EC2マシンを使用して8時間以内にクライアントのTLSセッションを復元できました。nVidiaGPUを搭載した150 g2.2xlargeタイプと、4 nVidia GPUを搭載した50 g2.8xlarge。 このような攻撃のコストは440ドルでした。



研究者は、2010年から2016年1月にリリースされたOpenSSLのバージョンでは、暗号のエクスポートに関連して不幸な間違いが行われたことに注意しています。



2010年、OpenSSL開発者はデフォルトですべての弱い暗号を無効にすることを決定しましたが、SSLv2を完全に無効にするわけではありません。 したがって、SSLv2は技術的には有効のままですが、弱められた暗号では使用できません。 残念ながら、コードでエラーが発生し、実際に検証が無効になり、サーバーがエクスポート暗号を指定できるようになりました。 このエラーは、2016年1月にリリースされたOpenSSLのバージョンによってのみ修正されました。



「プライベート」DROWN

一般的なケースに加えて、OpenSSLの別のエラーを悪用する攻撃の非常に高速な特別なケースがあります。これは、少なくともOpenSSLプロジェクト(1998)の開始以降、おそらくSSLeay(1995)から気付かれず、 2015年3月4日の別の問題に関する調査。

この脆弱性により、マスターシークレットをバイトごとに復元することができ、合計で1920のサーバーリクエストが128ビットキーを回復します。



この攻撃は計算が非常に単純なので、通常のコンピューターで1分で実行できます。



Alexa Top Millionリストのサーバーの約9%がこの攻撃の影響を受けています。



とりわけ、QUICプロトコル(Googleが作成したUDPを使用するトランスポートプロトコル)を含む攻撃を実行できます。



一時キーを使用するTLSセッションも脆弱ですが、「中間者」としてセッションへの介入が必要です。



自分を守る方法は?

OpenSSL 1.0.2(文字なし)、1.0.1l以前を使用している場合は、すぐに更新する必要があります。 可能であれば、SSLv2サポートが除外されているOpenSSL 1.0.2gおよび1.0.1sの最新バージョンを使用することをお勧めします。 それ以外の場合は、自分で使用するソフトウェアでSSLv2サポートを無効にします。



Apache Webサーバーを使用する場合、SSLv2プロトコルサポートを無効にする必要があります(WebサーバーがPOODLE攻撃に対して脆弱なままにならないように、1つとSSLv3の両方について)。

SSLProtocol All -SSLv2 -SSLv3
      
      





nginxの場合、TLSプロトコルのみを有効にしておくだけで十分です。

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2
      
      





バージョン2.9.14、2.10.8、2.11.6、3.0.2以降のPostfixメールサーバーは、SSLv2サポートなしでデフォルトで設定されています。 古いバージョンを使用している場合は、 研究者ページのサンプル構成を使用してください



SSLv2サポートを無効にできない場合(組み込みデバイスなど)、このサーバーが他の場所では使用されていない一意の秘密キーを使用していることを確認してください。



Linuxを使用している場合、古いバージョンのライブラリを使用するサービスを検出して再起動するneedrestartユーティリティが役立つ場合があります。



参照資料

ウェブサイトの脆弱性

学術出版

非対話型検証ツール (脆弱性に関する情報の公開前に収集されたデータベースに対してサイトをチェックします)

SSLv2サポートとOpenSSLの脆弱性をチェックするスキャナーアプリケーション

openssl.orgの脆弱性情報

Ars Technicaの 詳細と暗号学者Matthew Greenの技術詳細



All Articles