CA5397 : Ne pas utiliser de valeurs SslProtocols dépréciées
Propriété | Value |
---|---|
Identificateur de la règle | CA5397 |
Titre | Ne pas utiliser de valeurs SslProtocols dépréciées |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Non |
Cause
Cette règle se déclenche lorsque l’une des conditions suivantes est remplie :
- Une valeur System.Security.Authentication.SslProtocols déconseillée a été référencée.
- Une valeur entière représentant une valeur dépréciée a été affectée à une variable SslProtocols, utilisée comme valeur de retour SslProtocols ou comme argument SslProtocols.
Les valeurs dépréciées sont les suivantes :
- Ssl2
- 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 CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
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.CA5397.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.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation for using Tls11
SslProtocols protocols = SslProtocols.Tls11 | SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation for using Tls11
Dim sslProtocols As SslProtocols = SslProtocols.Tls11 Or SslProtocols.Tls12
End Sub
End Class
Violation de valeur entière
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation
SslProtocols sslProtocols = (SslProtocols) 768; // TLS 1.1
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation
Dim sslProtocols As SslProtocols = CType(768, SslProtocols) ' TLS 1.1
End Sub
End Class
Solution
using System;
using System.Security.Authentication;
public class TestClass
{
public void Method()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
SslProtocols sslProtocols = SslProtocols.None;
}
}
Imports System
Imports System.Security.Authentication
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
Dim sslProtocols As SslProtocols = SslProtocols.None
End Sub
End Class
Règles associées
CA5364 : Ne pas utiliser de protocoles de sécurité dépréciés
CA5386 : Éviter tout codage en dur de la valeur de SecurityProtocolType