我正试图减轻我们对 Poodle SSL 3.0后备攻击的脆弱性。我们的管理员已经开始禁用 SSL,以支持 TLS 连接到我们的服务器。我们也建议我们的团队在他们的浏览器中禁用 SSL。我现在看着我们的。NET 代码库,它通过 系统启动与各种服务的 HTTPS 连接。我相信,如果这些连接允许从 TLS 回退到 SSL,那么它们很容易受到 MITM 攻击。以下是我目前为止所确定的。有没有人能再核对一下,证明我是对的?这个漏洞是全新的,所以我还没有看到任何来自微软关于如何减轻它的指导。网址:
系统允许的协议。网。保安。中的安全通信的 SslStream 类。NET,通过 安全协议属性对每个 AppDomain 进行全局设置。
中的此属性的默认值。NET 4.5是 Ssl3 | Tls
(尽管我找不到支持它的文档)SecurityProtocolType 是带有 Flags 属性的枚举,因此它是这两个值的按位 或者。您可以使用下面这行代码在您的环境中检查这一点:
控制台.WriteLine (System.Net.ServicePointManager.SecurityProtocol.ToString ()) ;
在启动应用程序中的任何连接之前,这应该改为仅 Tls
,或者可能是 Tls12
:
SecurityProtocol = System.Net.SecurityProtocolType.Tls;
重要提示: 由于该属性支持多个位标志,我假设在握手过程中 SslStream 将自动回退到其他未指定的协议。否则,支持多个标志又有什么意义呢?
TLS 1.0 vs 1.1/1.2更新:
根据谷歌安全专家 Adam Langley,后来发现 TLS 1.0如果没有正确实现,就容易受到 POODLE 的攻击,所以你应该考虑转移到 TLS 1.2独家。
更新.NET Framework 4.7及以上版本:
正如下面的 Von Lemongargle 教授所暗示的,从4.7版本开始。NET 框架,没有必要使用这种黑客作为默认设置将允许操作系统选择最安全的 TLS 协议版本。有关更多信息,请参见 使用.NETFramework 的传输层安全性(TLS)最佳实践。