web-dev-qa-db-ja.com

インターネットベースではないBEAST / CRIMEをテストするツール?

[〜#〜] beast [〜#〜] (CBC)および [〜#〜] crime [〜に対して脆弱なHTTPSサーバー構成を特定して修正するようにという圧力が高まっています#〜] (圧縮)。インターネット全体にアクセスできるサーバー、インターネット経由で限定されたパートナーIPアドレスにのみアクセスできるサーバー、および内部にあるサーバーを修正する必要があります。

インターネット全体で利用可能なサーバーは、 QualysのSSL Labs Webサービスを使用してスキャンできます。これは、BEASTの脆弱性を明確に示しており、おそらく今日の悪い兆候ではない「圧縮」設定はCRIMEに関連しており、近い将来にアラートをトリガーし始めるでしょう。 ただし、これはインターネット経由で一般に利用できないサイトには役立ちません。

手で物事をテストする方法に関するあらゆる種類の情報を見つけることができます。たとえば、 BEASTの暗号のディスカッション および openssl s_clientの圧縮テスト用レシピ などです。ただし、私は古い時代に、SSL Labsのような、さまざまなopenssl暗号文字列を解読する必要がなく(「TLS 1.1+でない限り、CBCはありません。さて、火曜日を忘れないでください」)。

また、SSL Labsが圧縮が有効になっていると言うWebサーバーで、さまざまなopenssl +手動でコーディングされたHTTPヘッダーを使用した圧縮を示す結果が得られないことも心配です。誰を信じますか?ツールは通常、レシピよりも信頼する傾向があります。ツールは通常、レシピに基づいて構築され、さまざまな設定でテストされて修正されますが、レシピはしばしば誰かのどこかでいつかは機能するためです。

だから私が探しているのは sslscan のようなコマンドラインツールで、インターネット全体の可用性に関係なく、すべてのサーバーに対して実行できます。 (はい、sslscanが暗号を出力することを理解しています。これを解釈して、BEASTの脆弱性を判断できます-しかし、私よりも誤りの少ないエキスパート(または単に知識がある)システムが必要ですその出力を確認して呼び出します)。

18
gowenfawr

編集(2012/09/23):質問してから受け取るTestSSLServerは、今週末に書いた簡単なコマンドラインツールです。指定されたSSL/TLSサーバーから、サポートされている暗号スイート、プロトコルバージョン、TLSレベルのDeflateのサポートのリストを取得します。次に、暗号化の強度と、BEASTおよびCRIME攻撃に対する脆弱性の概要を示します。 Javaで記述されており、「どこでも」機能するはずです(ただし、Linux/ppcクライアントからのみテストしました)。

(BEASTおよびCRIMEはサーバーではなくクライアントをターゲットとすることに注意してください。ここでは、サーバーが脆弱な機能の組み合わせの使用を許可しないことによってクライアントを「保護」するために実行できる手順について説明しています。)


元の応答:

圧縮の場合、2つの場所でアクティブ化できます。あなたがリンクしているブログの投稿は、間違った場所について語っています。CRIME攻撃はではありません

CRIMEは、SSL/TLSレベルの圧縮を使用します。これは、ハンドシェイク中にネゴシエートされ、SSL/TLSトンネル内で送信されるすべてのバイトに適用される圧縮です。 HTTPSコンテキストでは、この圧縮はHTTP要求/応答本体とHTTPヘッダー(CRIMEのポイントであるCookieを含む)の両方で機能します。 [〜#〜] http [〜#〜]レベルで発生する圧縮は、[〜#〜] httpで指定される圧縮です[〜#〜]ヘッダー(「Accept-Encoding」のような)で、リクエスト/レスポンスbodyのみに適用されます。 つまり、圧縮は(ヘッダーにある)Cookieをカバーしないため、おそらくCRIMEフリーです。

(これは、本文でHTTPレベルの圧縮を悪用するCRIMEのような攻撃の理論的な存在を排除するものではありませんが、機密データと攻撃者が選択できるデータの両方を含む要求または応答の本文が必要になります。)

サーバーの圧縮サポートをテストするには、次のコードを使用します。

openssl s_client -connect www.theservername.com:443

これにより、サーバーの証明書を含む出力が生成され、次のようなテキストブロックで終了します。

---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 4B4110C44117BA0382CA6C3903A8185E0C156B253073E66B2D44F04B83611633
    Session-ID-ctx: 
    Master-Key: C11D38EE064BE6549364D54BD60E216E367A52825E62FFCCBEFC4AC8DB97D07BD72B7355CB268B91E3AD176EB69446AA
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 4c f8 be c1 d1 0f cf 03-4a 99 89 8b 75 28 97 3c   L.......J...u(.<
    0010 - 3e cf 2a b8 0f f0 d1 b4-7d c7 83 16 03 2c f0 8a   >.*.....}....,..
    0020 - 1b a7 57 be dd 1b be a3-14 eb cf 34 42 99 e0 5a   ..W........4B..Z
    0030 - c5 96 43 da c7 d9 dd da-ed 4c e2 7c eb c1 8b a8   ..C......L.|....
    0040 - ce 73 c8 22 43 10 88 d6-d2 f2 df 91 9d 47 71 70   .s."C........Gqp
    0050 - 77 bb c0 55 cd 46 34 3b-44 26 36 a1 7f 37 64 cd   w..U.F4;D&6..7d.
    0060 - 72 64 66 89 cc f6 8b 23-17 9b 9a 91 23 6a f7 c2   rdf....#....#j..
    0070 - 8a e2 8c 10 85 8f b7 6c-60 d2 b6 72 b3 13 98 8b   .......l`..r....
    0080 - 75 da 68 cc 2a ca 4f fb-ec 4c f2 db 91 4a f7 2a   u.h.*.O..L...J.*
    0090 - 40 eb 92 44 c7 7a f7 84-ef 65 ea 2c 96 aa c5 ba   @..D.z...e.,....
    00a0 - c3 b5 76 6d 52 03 85 c9-27 53 a2 a4 70 54 06 37   ..vmR...'S..pT.7
    00b0 - 82 3e 09 93 21 6d f6 e7-eb cf c3 5e 26 19 e1 a2   .>..!m.....^&...

    Compression: 1 (zlib compression)
    Start Time: 1348073749
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

これは、TLSレベルの圧縮をサポートするサーバーで行われました。 「zlib compression」は3つの場所に表示されます。Deflate圧縮は実際にこのサーバーでサポートされています。 HTTPヘッダーの単一の記号はどこにもないことに注意してください! opensslコマンドを入力して、出力を確認するだけです。 HTTPヘッダーを入力する必要はありません。

TLSレベルの圧縮をサポートしないサーバーでは、次のようになります。

---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : ECDHE-RSA-RC4-SHA
    Session-ID: 59D609F13BEE9157D26318ADB12F4CF219EF7A1BC2C87AF84AD66773303F90A6
    Session-ID-ctx: 
    Master-Key: 1DD9E0C306A86A7EC823561EF0B1F47B63E70B43D57F3B3FBB3D389863F540E3B4CCE5DE454E6D19811C24001E95777A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - de c6 06 25 10 c9 22 38-c4 1f 82 d7 c7 b5 62 08   ...%.."8......b.
    0010 - 01 c0 e1 26 e2 64 8a 62-99 74 85 bb 60 bf a8 e0   ...&.d.b.t..`...
    0020 - 65 08 74 89 d5 62 45 e9-b4 f0 80 4e f7 bd ff d5   e.t..bE....N....
    0030 - 6a 12 3b 90 97 ca 7a f4-d1 1b e1 0d 89 d2 52 49   j.;...z.......RI
    0040 - 11 fe 92 82 94 70 ba 4b-5e 81 ff f2 12 62 f4 79   .....p.K^....b.y
    0050 - 11 eb 74 7a d6 ee 10 4e-b5 6d 50 8d 1c 1c 8e 57   ..tz...N.mP....W
    0060 - 19 46 67 91 89 2e 45 28-2e 49 94 8e c8 32 28 bf   .Fg...E(.I...2(.
    0070 - 7b 73 82 ab 63 c4 b7 8f-5c b3 1b 5c 74 59 3c 8d   {s..c...\..\tY<.
    0080 - ec 8a 6a 3a 28 c2 82 c1-d7 d5 4f ec 7e 79 e7 57   ..j:(.....O.~y.W
    0090 - 4a f9 45 e7                                       J.E.

    Start Time: 1348074257
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

Compression: NONE」は、この2番目のサーバーが実際にTLSレベルの圧縮の使用を拒否していることを示しています。

最初のサーバーがDHE-RSA-AES256-SHAを暗号スイート、つまりCBCモードでブロック暗号AESを使用するスイートとして選択したことにも注意してください。この最初のサーバーは、BEASTおよびCRIMEの両方に対して潜在的に脆弱です。 2番目のサーバーはECDHE-RSA-RC4-SHAを選択しました。これはBEAST耐性です。

(最初のサーバーは私のものです。私はCookieをまったく使用しないので、Cookieを盗む攻撃に不安はありません。2番目のサーバーはwww.google.comです。)

時間があれば、もっと簡単に結果が出せるツールを書いていきます。完全なSSL/TLSハンドシェイクを実行する必要はありません。返されるServerHelloにClientHelloなどを送信するだけです。

17
Thomas Pornin