1. ホーム
  2. .net

[解決済み] SSLフォールバックを無効にし、.NETの送信接続にTLSのみを使用する?(プードル緩和)

2022-10-23 02:26:41

質問

私は、以下のような脆弱性を緩和しようとしています。 Poodle SSL 3.0フォールバック 攻撃への脆弱性を緩和しようとしています。私たちの管理者はすでに、私たちのサーバへのインバウンド接続のために、TLS を支持して SSL を無効にし始めました。また、私たちのチームにも Web ブラウザで SSL を無効にするよう助言しました。私は今、私たちの.NETコードベースを見ています。 System.Net.HttpWebRequest . 私は、これらの接続が TLS から SSL へのフォールバックを許可している場合、MITM 攻撃に対して脆弱になる可能性があると信じています。以下は、私がこれまでに決定したことです。どなたか、私が正しいことを確認するために、これをダブルチェックしていただけないでしょうか?この脆弱性はまったく新しいものなので、.NET でこれを軽減する方法について、マイクロソフトからのガイダンスをまだ見ていません。

  1. .NET のセキュア通信を支える System.Net.Security.SslStream クラスで許可されるプロトコルは、各 AppDomain に対して System.Net.ServicePointManager.SecurityProtocol "を介して各AppDomainにグローバルに設定されます。 プロパティでグローバルに設定されます。

  2. .NET 4.5におけるこのプロパティのデフォルト値は Ssl3 | Tls です (それを裏付ける文書が見つかりませんが)。SecurityProtocolType は Flags 属性を持つ enum なので、ビット単位で または である。あなたの環境では、このコードの行でこれを確認することができます。

    Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString())。

  3. これは、単に Tls または、おそらく Tls12 のように、アプリの中で接続を開始する前に指定します。

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls.SecurityProtocolを設定します。

  4. 重要です。 このプロパティは複数のビット単位のフラグをサポートしているので、SslStreamは以下のようになると推測されます。 ではなく は自動的に他の未指定プロトコルにフォールバックすると思います。そうでなければ、複数のフラグをサポートする意味はあるのでしょうか?

TLS 1.0 と 1.1/1.2 の比較について更新しました。

Googleのセキュリティ専門家Adam Langleyによると TLS 1.0 は、正しく実装されていない場合、POODLE に対して脆弱であることが後に判明しました。 ので、TLS 1.2専用に移行することを検討する必要があります。

.NET Framework 4.7 以降向けのアップデートです。

によって言及されているように フォン・レモンガーグル教授 が言及しているように、.NET Framework のバージョン 4.7 以降では、デフォルトの設定で OS が最も安全な TLS プロトコル バージョンを選択できるため、このハックを使用する必要はありません。以下を参照してください。 .NET Framework でのトランスポート レイヤー セキュリティ (TLS) のベスト プラクティス を参照してください。

どのように解決するのですか?

同じことをやっています。TLS 1.2 のみをサポートし、SSL プロトコルをサポートしないようにするには、次のようにします。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

SecurityProtocolType.TlsはTLS 1.0のみで、すべてのTLSのバージョンではありません。

余談ですが、サイトが SSL 接続を許可していないことを確認したい場合は、ここで確認できます (これは上記の設定の影響を受けないと思います。私たちは IIS が受信接続に TLS を使用するようにレジストリを編集する必要がありました)。 https://www.ssllabs.com/ssltest/index.html

IIS で SSL 2.0 と 3.0 を無効にするには、このページを参照してください。 https://www.sslshopper.com/article-how-to-disable-ssl-2.0-in-iis-7.html