Mitigação: protocolos TLS

Do .NET Framework 4.6 em diante, as classes System.Net.ServicePointManager e System.Net.Security.SslStream têm permissão para usar um dos três protocolos seguintes: TLS 1.0, TLS 1.1 ou TLS 1.2. Não há suporte para o protocolo SSL 3.0 e a criptografia RC4.

Impacto

Essa alteração afeta:

  • Qualquer aplicativo que usa o SSL para se comunicar com um servidor HTTPS ou um servidor de soquete usando qualquer um dos seguintes tipos: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClient e SslStream.

  • Qualquer aplicativo do lado do servidor que não possa ser atualizado para dar suporte ao Tls1.0, Tls1.1 ou Tls 1.2.

Atenuação

A mitigação recomendada é fazer upgrade do aplicativo do lado do servidor para Tls1.0, Tls1.1 ou Tls 1.2. Se não for viável ou se os aplicativos cliente estiverem desfeitos, a classe AppContext poderá ser usada para recusar esse recurso de duas maneiras:

  • De modo programático, usando um snippet de código como o seguinte:

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    Como o objeto ServicePointManager foi inicializado apenas uma vez, definir essas configurações de compatibilidade deverá ser a primeira coisa que o aplicativo fará.

  • Adicionando a seguinte linha à seção <runtime> do arquivo app.config:

    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>  
    

No entanto, observe que não é recomendável recusar o comportamento padrão, pois isso torna o aplicativo menos seguro.

Confira também