[解決済み] SSLフォールバックを無効にし、.NETの送信接続にTLSのみを使用する?(プードル緩和)
質問
私は、以下のような脆弱性を緩和しようとしています。 Poodle SSL 3.0フォールバック 攻撃への脆弱性を緩和しようとしています。私たちの管理者はすでに、私たちのサーバへのインバウンド接続のために、TLS を支持して SSL を無効にし始めました。また、私たちのチームにも Web ブラウザで SSL を無効にするよう助言しました。私は今、私たちの.NETコードベースを見ています。 System.Net.HttpWebRequest . 私は、これらの接続が TLS から SSL へのフォールバックを許可している場合、MITM 攻撃に対して脆弱になる可能性があると信じています。以下は、私がこれまでに決定したことです。どなたか、私が正しいことを確認するために、これをダブルチェックしていただけないでしょうか?この脆弱性はまったく新しいものなので、.NET でこれを軽減する方法について、マイクロソフトからのガイダンスをまだ見ていません。
-
.NET のセキュア通信を支える System.Net.Security.SslStream クラスで許可されるプロトコルは、各 AppDomain に対して System.Net.ServicePointManager.SecurityProtocol "を介して各AppDomainにグローバルに設定されます。 プロパティでグローバルに設定されます。
-
.NET 4.5におけるこのプロパティのデフォルト値は
Ssl3 | Tls
です (それを裏付ける文書が見つかりませんが)。SecurityProtocolType は Flags 属性を持つ enum なので、ビット単位で または である。あなたの環境では、このコードの行でこれを確認することができます。Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString())。
-
これは、単に
Tls
または、おそらくTls12
のように、アプリの中で接続を開始する前に指定します。System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls.SecurityProtocolを設定します。
-
重要です。 このプロパティは複数のビット単位のフラグをサポートしているので、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
関連
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] Marginのプロパティ順
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] asp.netでWebサービスのタイムアウト時間を長くする方法は?
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] SSL/TLSセキュアチャネルの信頼関係を確立できなかった -- SOAP
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] WCF エラーの解決。このサービスのメタデータパブリッシングは現在無効になっています。
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] リファレンスの追加にSystem.Web.Mvcが表示されないのはなぜですか?
-
[解決済み] AndroidでWCFサービスを利用する方法
-
[解決済み] 'Newtonsoft.Json' には 'Microsoft.CSharp' の依存関係がすでに定義されています。
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る
-
[解決済み] Microsoft.ACE.OLEDB.12.0' プロバイダがローカルマシンに登録されていません。
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法