web-dev-qa-db-ja.com

SSL3「POODLE」の脆弱性

SSL v3で最近公開されたパディングOracleの脆弱性に関する正規の質問。他の同一または非常に類似した質問は、この質問の複製としてクローズする必要があります。

  • POODLE脆弱性とは何ですか?
  • [product/browser]を使用します。影響を受けますか?
  • [product]はPOODLE攻撃に対して脆弱ですか?
  • この脆弱性に関して[product]を保護するために何をする必要がありますか?
  • ネットワークでPOODLE攻撃を検出するにはどうすればよいですか?
  • 既知のPOODLE攻撃はありますか?

参照:

244
tylerl

プードルの脆弱性とは何ですか?

「プードル」の脆弱性 2014年10月14日にリリース は、SSL 3.0プロトコルに対する攻撃です。 protocolの欠陥であり、実装の問題ではありません。 SSL 3.0のすべての実装で問題が発生しています。古いSSL 3.0について話していることに注意してくださいnot TLS 1.0以降。 TLSバージョンは影響を受けません(DTLSも影響を受けません)。

簡単に言えば:SSL 3.0がCBCモードでブロック暗号を使用する場合、レコードの暗号化プロセスはpaddingを使用します。データ長はブロックサイズの倍数です。たとえば、8バイトブロックの3DESが使用されているとします。 [〜#〜] mac [〜#〜] は、レコードデータ(およびレコードシーケンス番号、その他のヘッダーデータ)に対して計算され、データに追加されます。次に、1から8バイトが追加されるため、全長は8の倍数になります。さらに、そのステップでnバイトが追加される場合、これらのバイトの最後の値はでなければなりません。 n-1。これは、復号化が機能するように行われます。

レコードの復号化を検討してください。3DES-CBC復号化が適用され、最後のバイトが検査されます。0〜7の値が含まれている必要があり、パディングのために追加された他のバイト数がわかります。これらのバイトは削除され、重要なことにその内容は無視されます。これは重要なポイントです。受信者が少しでも気にせずに変更できるレコードのバイトがあります。

プードル攻撃は、その前のBEASTやCRIMEのような、選択された平文のコンテキストで機能します。攻撃者はSSLで保護されるデータに関心があり、次のことができます。

  • 彼が取得したい秘密の値の前後に独自のデータを注入する;
  • 回線上で結果のバイトを検査、傍受、変更します。

そのような条件が満たされる主な、そしてもっともありふれたシナリオはWebコンテキストです。攻撃者は偽のWiFiアクセスポイントを実行し、被害者が閲覧するWebページ(HTTPSではなくHTTP)の一部として独自のJavascriptを挿入します。悪意のあるJavascriptは、被害者のブラウザにcookieがあるHTTPSサイト(たとえば、銀行のWebサイト)にブラウザにリクエストを送信させます。攻撃者はそのCookieを必要としています。

攻撃はバイトごとに進行します。攻撃者のJavascriptは、最後のCookieバイトが暗号化ブロック(3DESの8バイトブロックの1つ)の最後に発生し、リクエストの長さの合計がフルブロックパディングを意味するようにリクエストを調整します。最後の8つのcookieバイトに値があると仮定しますcc1、... c7。暗号化すると、CBCは次のように機能します。

CBC encryption, from Wikipedia

したがって、前の暗号化されたブロックがee1、... e7の場合、3DESに入るのはc XOR ec1 XOR e1、... c7 XOR e7e値は攻撃者に知られています(これが暗号化された結果です)。

次に、攻撃者は外部から、暗号化されたレコードの最後のブロックを、最後のCookieバイトを含むブロックのコピーで置き換えます。何が起こるかを理解するには、CBC復号化の仕組みを知っている必要があります。

CBC decryption (from Wikipedia)

したがって、最後の暗号文ブロックは復号化され、cで終わる値が生成されます。7 XOR e7。その値は、前の暗号化されたブロックとXORされます。結果がバイト値7(確率1/256で機能する)で終了する場合、パディング削除ステップは最後の8バイトを削除し、完全なクリアテキストとMACで終了し、サーバーはコンテンツになります。そうでない場合、最後のバイトが0..7の範囲になく、サーバーがエラーを表示するか、最後のバイトが0から6の間であり、サーバーが誤ったバイト数を削除し、MACが一致し、サーバーは文句を言うでしょう。言い換えれば、攻撃者はサーバーの反応を観察して、CBC復号化の結果が7か他の何かを見つけたかどうかを知ることができます。 7が取得されると、最後のcookieバイトがすぐに明らかにされます。

最後のcookieバイトが取得されると、プロセスは前のバイトを使用して再度実行されます。

コアポイントは、SSL 3.0がignoringパディングバイト(最後を除く)として定義されていることです。これらのバイトはMACの対象外であり、定義された値はありません。

TLS 1.0は脆弱ではありませんTLS 1.0では、プロトコルはallパディングバイトは同じ値でなければならず、ライブラリはTLSを実装すると、これらのバイトに期待値があることを確認します。したがって、攻撃者は1/256(2-8)、ただし確率は1/18446744073709551616(2-64)、これはかなり悪い。


[product]を使用します。影響を受けますか? [product]はプードル攻撃に対して脆弱ですか?

攻撃シナリオでは、攻撃者が自分のデータを挿入できるようにする必要がありますand暗号化されたバイトを傍受します上で説明したように、そのようなことが起こる唯一のもっともらしいコンテキストはWebブラウザです。その場合、Poodleは、BEASTやCRIMEと同様に、サーバーではなくclientに対する攻撃です。

[product]がWebブラウザの場合、影響を受ける可能性があります。しかし、それはサーバーにも依存します。使用されるプロトコルバージョンは、クライアントとサーバー間のネゴシエーションです。 SSL 3.0は、サーバーが同意した場合にのみ発生します。したがって、あなたはmight SSL 3.0の使用を許可する場合、サーバーが「脆弱」であることを考慮してください(これは、攻撃はWebコンテキストのクライアント側ですが、SSL-そのように機能するセキュリティメーター)。

脆弱性が発生する条件:SSL 3.0がサポートされている、および CBCベースの暗号スイートの選択(RC4暗号化にはパディングがないため、その特定の攻撃に対して脆弱ではありませんが、RC4には他の問題があります。もちろん)。

回避策:

  • クライアントでSSL 3.0サポートを無効にします。
  • サーバーでSSL 3.0サポートを無効にします。
  • (クライアントまたはサーバーのいずれかで)SSL 3.0を使用する場合は、CBCベースの暗号スイートのサポートを無効にします。
  • その新しいSSL/TLS拡張 を実装して、アクティブな攻撃者が接続を切断してクライアントとサーバーに強制的にSSL 3.0を使用させた場合を検出します。どちらもTLS 1.0以上を知っています。クライアントとサーバーの両方がそれを実装する必要があります。

これらの4つのソリューションはいずれもこの脆弱性を回避します。


この脆弱性に関して[product]を保護するために何をする必要がありますか?

いつもと同じ。ベンダーがセキュリティ修正を公開しています。 それらをインストール。パッチをインストールします。すべてのパッチ。それを行う。プードルおよびその他すべての脆弱性。それらをインストールしないわけにはいかないし、それは新しいものではない。あなたはすでにそうしているはずです。パッチをインストールしない場合、Níðhöggrは脾臓をむさぼり食うでしょう。


ネットワーク上のプードル攻撃を検出するにはどうすればよいですか?

あなたはしません!最も可能性の高い攻撃の設定には、攻撃者が被害者をtheirネットワークに誘い込み、あなたのものではないためです。

ただし、サーバー側では、復号化エラーで失敗した非常に多くのリクエストに対応する必要がある場合があります。すべてのサーバーソフトウェアがそのような場合のイベントをログに記録するわけではありませんが、これは、適切なIDSシステムの可能性の範囲内である必要があります。


既知のプードル攻撃はありますか?

私の知る限りではありません。実際、被害者のすべての外部I/Oを制御している場合でも、銀行サイトの偽のコピーに貧しいsodを誘い込むだけの方がはるかに簡単です。暗号攻撃は巧妙ですが、ユーザーの騙しやすさの底のない井戸を利用するよりも多くの努力が必要です。

266
Thomas Pornin

SSL v3.0サポートを無効にするには:

クライアント:

Mozilla Firefox

どちらか

または

  • ナビゲーションバーにabout:configと入力し、[Enter]を押します
  • 警告を受け入れて続行します
  • tlsを検索
  • security.tls.version.minの値を0から1に変更します(0 = SSL 3.0; 1 = TLS 1.0)

Chrome

  • 次のコマンドラインフラグを使用してChromeを実行します:--ssl-version-min=tls1

インターネットエクスプローラ

  • [設定]-> [インターネットオプション]-> [詳細設定]タブ-> [セキュリティ]の下の[SSLv3]をオフにします。

Webサーバー:

Apache v2

  • SSL構成ファイルに次の行を追加するか、既存の行を編集して読み取ります:SSLProtocol All -SSLv2 -SSLv3
  • Sudo Apache2ctl restartを使用してWebサーバーを再起動します

Zeus Webサーバー

%ZEUSHOMEはインストール場所です。通常は/usr/local/zeus

  • Zeus Webサーバー4.3r5にアップグレードする
  • 次の行を%ZEUSHOME%/web/global.cfgに追加します。tuning!ssl3_allow_rehandshake never
  • Sudo %ZEUSHOME%/restart-zeusを使用してWebサーバーを再起動します

参照:

  1. 「SSLv3へのPOODLE攻撃」、ImperialViolet、 ImperialViolet-SSLv3へのPOODLE攻撃

  2. 「SSLv3 POODLE Vulnerability Official Release」、InfoSec Handlers Diary Blog、> インターネットストームセンター-インターネットセキュリティ| SANS ISC

35
Jock Busuttil

最も一般的なクッパとサーバープラットフォームのいくつかでSSLv3を無効にする方法についてブログを公開しました( https://scotthelme.co.uk/sslv3-goes-to-the-dogs-poodle-kills- off-protocol / )。これは、クライアントまたはサーバーであるPOODLEを完全に軽減する方法に関する質問への回答に少なくとも役立つはずです。

以下は重要な詳細です。

サーバーを保護する方法

POODLEの最も簡単で堅牢なソリューションは、サーバーでSSLv3サポートを無効にすることです。ただし、これにはいくつかの注意事項があります。 Webトラフィックの場合、SSLv3以外には接続できないレガシーシステムがいくつかあります。たとえば、SP3なしでIE6およびWindows XPインストールを使用しているシステムは、SSLv3を使用していないサイトと通信できなくなります。顧客の敷地全体でSSLv3を完全に無効にしたCloudFlareが発表した数値によると、Windows XPユーザーの98.88%がTLSv1.0以降で接続しているため、Webトラフィックのごく一部のみが影響を受けます。

Apache

ApacheサーバーでSSLv3を無効にするには、SSL構成セクションとすべてのSSL対応 仮想ホスト の両方で、以下を使用して明示的に構成できます。

SSLProtocol All -SSLv2 -SSLv3

これにより、TLSv1.0、TLSv1.1、およびTLSv1.2のサポートが提供されますが、SSLv2およびSSLv3のサポートは明示的に削除されます。設定を確認して、Apacheを再起動してください。

apachectl configtest

Sudo service Apache2 restart

NginX

NginXでのSSLv3サポートの無効化も非常に簡単です。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

上記のApache構成と同様に、TLSv1.0 +サポートが提供され、SSLは提供されません。設定を確認して再起動できます。

Sudo nginx -t

Sudo service nginx restart

IIS

これは、レジストリの微調整とサーバーの再起動が必要ですが、それでもそれほど悪くはありません。マイクロソフトには必要な情報を記載したサポート記事がありますが、必要なのはレジストリのDWORD値を変更または作成することだけです。

HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

プロトコルの内部では、SSL 2.0キーがすでに存在している可能性が高いため、必要に応じて、SSL 3.0を横に作成します。その下にサーバーキーを作成し、その中にEnabledという値のDWORD値を0で作成します。完了したら、サーバーを再起動して変更を有効にします。

IIS Settings

サーバーを確認する方法

SSLセットアップで何かをテストするための最も簡単でおそらく最も広く使用されている方法は、 Qualys SSL Test です。サイトに移動し、テストするWebサイトのドメインを入力して、送信ボタンを押すだけでテストを開始できます。

Qualys Check Domain

テストが終了すると、ページのさらに下に、結果の概要と多くの詳細情報が表示されます。具体的には、サポートされているプロトコルの構成セクションを確認します。

Check protocols

ここで確認したいのは、サポートされているSSLプロトコルがないことです。 SSLv2.0を無効にしてから長い時間が経過しているはずですが、SSLv3.0も削除されました。 TLSv1.0以上をサポートすれば、不必要なリスクにさらされることなく、インターネットユーザーの大多数をサポートできます。

ブラウザを保護する方法

ブラウザでSSLv3サポートを無効にすることにより、POODLEから身を守ることもできます。これは、サーバーがSSLv3サポートを提供している場合でも、プロトコルダウングレード攻撃の間であっても、ブラウザーがSSLv3サポートを使用しないことを意味します。

Firefox

Firefoxユーザーは、アドレスバーにabout:configと入力し、検索ボックスにsecurity.tls.version.minと入力できます。これにより、0から1に変更する必要のある設定が表示されます。既存の設定により、Firefoxは、SSLv3が利用可能な場合、必要な場合にSSLv3を使用できます。設定を変更すると、FirefoxがTLSv1.0以上を使用するように強制されます。これはPOODLEに対して脆弱ではありません。

Firefox Settings

Chrome

Chromeユーザーには、SSLv3とTLSv1のどちらがより高い数値のものと混同していたのか、GoogleがSSLv3を削除したため、GUIにSSLv3を無効にするオプションがありません。代わりに、コマンドラインフラグ--ssl-version-min = tls1を追加して、TLSの使用を強制し、SSLプロトコルを使用した接続を防止できます。 Windowsでは、Chromeショートカットを右クリックし、[プロパティ]をクリックして、次の画像に示すようにコマンドラインフラグを追加します。

Chrome Settings

Mac、Linux、Chrome OSまたはAndroidでGoogle Chromeを使用している場合は、次の手順 こちら を実行できます。

インターネットエクスプローラ

Internet Explorerの修正も非常に簡単です。 [設定]、[インターネットオプション]に移動し、[詳細設定]タブをクリックします。 [SSL 3.0を使用]チェックボックスが表示されるまで下にスクロールし、チェックを外します。

IE Settings

ブラウザを確認する方法

ブラウザの変更によりSSLv3.0サポートが確実に削除されたことを確認する場合は、使用できるサイトがいくつかあります。ブラウザでSSLv3を有効にして https://zmap.io/sslv3/ にアクセスすると、Chromeにまだアクセスしていないという警告メッセージが表示されます。 SSLv3を無効にしました。サイトが期待どおりに機能していることを再確認するために、Internet ExplorerでSSLv3のサポートを無効にし、そこにもサイトを開きました。ここで違いを見ることができます。

Chrome and IE test

Zmapとともに https://www.poodletest.com/ を試すこともできます。

32
Scott Helme

これらの他のウェブサイトにサイトの名前を公開したくない場合は、次の方法でテストすることもできます...

openssl s_client -ssl3 -Host <your Host name> -port 443

接続しない場合は、問題ありません。

しかし、opensslがサイトで適切に動作していることも確認してください...

openssl s_client -Host <your Host name> -port 443

Sslv3を無効にすると、IE6とWindowsも無効になりますXP SP2以下。IE6を搭載しているものは多くありませんが、Windows XPを搭載しているものはたくさんあります。

3
niknah