Compartilhar via


CA5364: Não use protocolos de segurança preteridos

Property Valor
ID da regra CA5364
Título Não use protocolos de segurança preteridos
Categoria Segurança
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 7 No

Causa

Essa regra será acionada quando uma das seguintes condições for atendida:

Os valores preteridos são:

  • Ssl3
  • Tls
  • Tls10
  • Tls11

Descrição da regra

O TLS (protocolo TLS) protege a comunicação entre computadores, mais comumente com o HTTPS (protocolo HTTPS). Versões mais antigas do protocolo TLS são menos seguras do que o TLS 1.2 e o TLS 1.3 e mais propensas a terem novas vulnerabilidades. Evite versões de protocolo mais antigas para minimizar o risco. Para obter as diretrizes sobre como identificar e remover as versões do protocolo obsoletas, consulte Solucionar o problema do TLS 1.0, 2ª edição.

Como corrigir violações

Não use versões do protocolo TLS preteridas.

Quando suprimir avisos

Você poderá suprimir esse aviso se:

  • A referência à versão do protocolo preterida não estiver sendo usada para habilitar uma versão preterida.
  • Você precisar conectar um serviço herdado que não pode ser atualizado para usar as configurações do TLS seguras.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA5364.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Exemplos de pseudocódigo

Violação de nome da enumeração

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
    End Sub
End Class

Violação do valor inteiro

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768;    // TLS 1.1
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = CType(768, SecurityProtocolType)   ' TLS 1.1
    End Sub
End Class

Solução

using System;
using System.Net;

public class TestClass
{
    public void TestMethod()
    {
        // Let the operating system decide what TLS protocol version to use.
        // See https://learn.microsoft.com/dotnet/framework/network-programming/tls
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' Let the operating system decide what TLS protocol version to use.
        ' See https://learn.microsoft.com/dotnet/framework/network-programming/tls
    End Sub
End Class

CA5386: Evitar codificar o valor SecurityProtocolType

CA5397: Não usar valores de SslProtocols preteridos

CA5398: Evitar valores de SslProtocols fixos