CA5364 : Ne pas utiliser de protocoles de sécurité dépréciés

Propriété Value
Identificateur de la règle CA5364
Titre Ne pas utiliser de protocoles de sécurité dépréciés
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Cette règle se déclenche lorsque l’une des conditions suivantes est remplie :

Les valeurs déconseillées sont les suivantes :

  • Ssl3
  • Tls
  • Tls10
  • Tls11

Description de la règle

TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec HTTPS (Hypertext Transfer Protocol Secure). Les versions de protocole plus anciennes de TLS sont moins sécurisées que TLS 1.2 et TLS 1.3 et sont plus susceptibles d’avoir de nouvelles vulnérabilités. Évitez les anciennes versions de protocole pour réduire les risques. Pour obtenir des conseils sur l’identification et la suppression des versions de protocole dépréciées, consultez Résolution du problème TLS 1.0, 2e édition.

Comment corriger les violations

N’utilisez pas de versions de protocole TLS dépréciées.

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement si :

  • La référence à la version de protocole dépréciée n’est pas utilisée pour activer une version déconseillée.
  • Vous devez vous connecter à un service hérité qui ne peut pas être mis à niveau pour utiliser des configurations TLS sécurisées.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Exemples de pseudo-code

Violation du nom d’énumération

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

Violation de valeur entière

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

Solution

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 : Éviter tout codage en dur de la valeur de SecurityProtocolType

CA5397 : Ne pas utiliser de valeurs SslProtocols dépréciées

CA5398 : Éviter les valeurs SslProtocols codées en dur