Poodle SSL 3.0フォールバック攻撃に対する脆弱性を緩和しようとしています。私たちの管理者は、サーバーへのインバウンド接続のためにTLSを優先してSSLを無効にし始めています。また、ウェブブラウザでSSLを無効にするようチームにもアドバイスしました。現在、.NETコードベースを調べています。これは、System.Net.HttpWebRequestを介してさまざまなサービスとのHTTPS接続を開始します。これらの接続は、TLSからSSLへのフォールバックを許可する場合、MITM攻撃に対して脆弱になる可能性があると思います。これが私がこれまでに決定したことです。誰かがこれを再確認して、私が正しいことを確認できますか?この脆弱性はまったく新しいものであるため、.NETでこれを緩和する方法についてマイクロソフトからのガイダンスはまだ見ていません。
.NETの安全な通信を支えるSystem.Net.Security.SslStreamクラスに許可されているプロトコルは、System.Net.ServicePointManager.SecurityProtocolプロパティを介して各AppDomainに対してグローバルに設定されます。
.NET 4.5でのこのプロパティのデフォルト値は
Ssl3 | Tls(それを裏付けるドキュメントは見つかりませんが)です。SecurityProtocolTypeはFlags属性を持つ列挙型であるため、これら2つの値のビット単位のORです。次のコード行を使用して、環境でこれを確認できます。Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
アプリで接続を開始する前に
Tls、これをに変更する必要がありTls12ます。System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
重要:プロパティは複数のビット単位のフラグをサポートしているため、SslStreamがハンドシェイク中に他の指定されていないプロトコルに自動的にフォールバックしないと想定しています。それ以外の場合、複数のフラグをサポートするポイントは何ですか?
TLS 1.0と1.1 / 1.2の更新:
Googleのセキュリティ専門家であるAdam Langley氏によると、正しく実装されていないと、TLS 1.0が後でPOODLEに対して脆弱であることが判明したため、TLS 1.2のみに移行することを検討してください。
.NET Framework 4.7以降の更新:
以下のVon Lemongargle教授が言及しているように、.NET Frameworkのバージョン4.7以降では、デフォルトの設定でOSが最も安全なTLSプロトコルバージョンを選択できるため、このハックを使用する必要はありません。詳細については、.NET Frameworkでのトランスポート層セキュリティ(TLS)のベストプラクティスを参照してください。