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 :
- Une valeur System.Net.SecurityProtocolType déconseillée a été référencée.
- Une valeur entière représentant une valeur déconseillée a été affectée à une variable SecurityProtocolType.
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
Règles associées
CA5386 : Éviter tout codage en dur de la valeur de SecurityProtocolType