Règles de sécurité

Les règles de sécurité prennent en charge des bibliothèques et des applications plus sûres. Ces règles contribuent à empêcher la présence de défauts de sécurité dans votre programme. Si vous désactivez l’une de ces règles, vous devez indiquer clairement le motif de l’opération dans le code et également en informer le responsable de la sécurité désigné pour votre projet de développement.

Contenu de cette section

Règle Description
CA2100 : Vérifier si les requêtes SQL présentent des failles de sécurité Une méthode définit la propriété System.Data.IDbCommand.CommandText à l’aide d’une chaîne générée à partir d’un argument de chaîne à la méthode. Cette règle suppose que l’argument de chaîne contient des entrées d’utilisateur. Une chaîne de commande SQL construite à partir d’entrées d’utilisateur est vulnérable aux attaques d’injection SQL.
CA2109 : Passez en revue les gestionnaires d'événements visibles Une méthode de gestion d’événements publique ou protégée a été détectée. Les méthodes de gestion d’événements ne doivent pas être exposées sauf nécessité absolue.
CA2119 : Scellez les méthodes qui satisfont les interfaces privées Un type public pouvant être hérité fournit une implémentation de méthode substituable d’une interface interne (Friend en Visual Basic). Pour corriger une violation de cette règle, empêchez la méthode d’être substituée en dehors de l’assembly.
CA2153 : Évitez la gestion des exceptions d’état endommagé Lesexceptions d’état endommagé (CSE, Corrupted State Exceptions) indiquent une altération de la mémoire dans votre processus. Le fait d’intercepter ces exceptions au lieu d’autoriser le processus à se bloquer peut engendrer des failles de sécurité si une personne malveillante réussit à placer une attaque dans la région de la mémoire endommagée.
CA2300 : N’utilisez pas le désérialiseur non sécurisé BinaryFormatter Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2301 : N’appelez pas BinaryFormatter.Deserialize sans définir BinaryFormatter.Binder au préalable Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2302 : Vérifiez que BinaryFormatter.Binder est défini avant d’appeler BinaryFormatter.Deserialize Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2305 : N’utilisez pas le désérialiseur non sécurisé LosFormatter Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2310 : N’utilisez pas le désérialiseur non sécurisé NetDataContractSerializer Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2311 : Ne désérialisez pas sans définir d’abord NetDataContractSerializer.Binder Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2312 : Vérifiez que NetDataContractSerializer.Binder est défini avant la désérialisation Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2315 : N’utilisez pas le désérialiseur non sécurisé ObjectStateFormatter Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2321 : Ne désérialisez avec JavaScriptSerializer à l’aide de SimpleTypeResolver Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2322 : Assurez-vous que JavaScriptSerializer n’est pas initialisé avec SimpleTypeResolver avant la désérialisation Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2326 : N’utilisez pas de valeurs TypeNameHandling autres que None Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2327 : N’utilisez pas de JsonSerializerSettings non sécurisés Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2328 : Vérifiez que les JsonSerializerSettings sont sécurisés Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2329 : Ne désérialisez pas avec JsonSerializer à l’aide d’une configuration non sécurisée Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2330 : Vérifiez que JsonSerializer a une configuration sécurisée lors de la désérialisation. Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation de données non approuvées. Un attaquant peut modifier les données sérialisées pour y inclure des types inattendus afin d’injecter des objets avec des effets secondaires malveillants.
CA2350 : Vérifier que l’entrée de DataTable.ReadXml() est approuvée Lors de la désérialisation d’un DataTable avec une entrée non approuvée, un attaquant peut créer une entrée malveillante pour effectuer une attaque par déni de service. Il peut y avoir des vulnérabilités inconnues d’exécution de code à distance.
CA2351 : Vérifier que l’entrée de DataSet.ReadXml() est approuvée Lors de la désérialisation d’un DataSet avec une entrée non approuvée, un attaquant peut créer une entrée malveillante pour effectuer une attaque par déni de service. Il peut y avoir des vulnérabilités inconnues d’exécution de code à distance.
CA2352 : jeu de données ou table de données non sécurisé(e) dans un type sérialisable peut être vulnérable aux attaques par exécution de code à distance Une classe ou un struct marqué avec SerializableAttribute contient un champ ou une propriété DataSet ou DataTable et n’a pas de GeneratedCodeAttribute.
CA2353 : jeu de données ou table de données non sécurisé(e) dans un type sérialisable Une classe ou un struct marqué avec un attribut de sérialisation XML ou un attribut de contrat de données contient un champ ou une propriété DataSet ou DataTable.
CA2354 : Un jeu de données ou une table de données non sécurisé(e) dans un graphe d’objets désérialisé peut être vulnérable à une attaque par exécution de code à distance La désérialisation avec un System.Runtime.Serialization.IFormatter sérialisé, et le graphique d’objet du type casté peut inclure un DataSet ou DataTable.
CA2355 : Jeu de données ou table de données non sécurisé(e) dans un graphe d’objets désérialisé Désérialisation lorsque le graphique d’objet du type casté ou spécifié peut inclure un DataSet ou DataTable.
CA2356 : jeu de données ou table de données non sécurisé(e) dans un graphe d’objets désérialisé web Une méthode avec un System.Web.Services.WebMethodAttribute ou System.ServiceModel.OperationContractAttribute a un paramètre qui peut référencer un DataSet ou DataTable.
CA2361 : vérifiez que la classe générée automatiquement contenant DataSet.ReadXml() n’est pas utilisée avec des données non fiables Lors de la désérialisation d’un DataSet avec une entrée non approuvée, un attaquant peut créer une entrée malveillante pour effectuer une attaque par déni de service. Il peut y avoir des vulnérabilités inconnues d’exécution de code à distance.
CA2362 : Un jeu de données ou une table de données non sécurisé dans un type sérialisable généré automatiquement peut être vulnérable aux attaques par exécution de code à distance Lors de la désérialisation d’une entrée non approuvée avec BinaryFormatter et le graphe d’objets désérialisés contenant un DataSet ou DataTable, un attaquant peut créer une charge utile malveillante pour effectuer une attaque d’exécution de code à distance.
CA3001 : Passez en revue le code pour détecter les vulnérabilités de l’injection SQL Lorsque vous travaillez avec des entrées non approuvées et des commandes SQL, gardez à l’esprit les attaques par injection de code SQL. Une attaque par injection de code SQL peut exécuter des commandes SQL malveillantes, ce qui compromet la sécurité et l’intégrité de votre application.
CA3002 : Passez en revue le code pour détecter les vulnérabilités des scripts XSS Lorsque vous travaillez avec des entrées non approuvées provenant de requêtes web, tenez compte des attaques de scripting inter-site (XSS). Une attaque XSS injecte une entrée non approuvée dans une sortie HTML brute, ce qui permet à l’attaquant d’exécuter des scripts malveillants ou de modifier de manière malveillante le contenu de votre page web.
CA3003 : Passez en revue le code pour détecter les vulnérabilités de l’injection de chemin de fichier Lorsque vous travaillez avec des entrées non approuvées provenant de requêtes web, veillez à utiliser une entrée contrôlée par l’utilisateur lors de la spécification des chemins d’accès aux fichiers.
CA3004 : Passez en revue le code pour détecter les vulnérabilités sur la divulgation d’informations La divulgation d’informations sur les exceptions donne aux attaquants un aperçu des éléments internes de votre application, ce qui peut aider les attaquants à trouver d’autres vulnérabilités à exploiter.
CA3006 : Passez en revue le code pour détecter les vulnérabilités de l’injection de commande de processus Lorsque vous travaillez avec des entrées non approuvées, gardez à l’esprit les attaques par injection de commandes. Une attaque par injection de commandes peut exécuter des commandes malveillantes sur le système d’exploitation sous-jacent, ce qui compromet la sécurité et l’intégrité de votre serveur.
CA3007 : Passez en revue le code pour détecter les vulnérabilités de la redirection ouverte Lorsque vous travaillez avec une entrée non approuvée, gardez à l’esprit les vulnérabilités de redirection ouverte. Un attaquant peut exploiter une vulnérabilité de redirection ouverte pour utiliser votre site web afin de donner l’apparence d’une URL légitime, mais rediriger un visiteur qui n’est pas méfiant vers un hameçonnage ou une autre page web malveillante.
CA3008 : Passez en revue le code pour détecter les vulnérabilités de l’injection XPath Lorsque vous travaillez avec une entrée non approuvée, n’oubliez pas les attaques par injection XPath. La construction de requêtes XPath à l’aide d’une entrée non approuvée peut permettre à une personne malveillante de manipuler la requête pour retourner un résultat inattendu et éventuellement divulguer le contenu du code XML interrogé.
CA3009 : Passez en revue le code pour détecter les vulnérabilités de l’injection XML Lorsque vous travaillez avec une entrée non approuvée, n’oubliez pas les attaques par injection XPath.
CA3010 : Passez en revue le code pour détecter les vulnérabilités de l’injection XAML Lorsque vous travaillez avec une entrée non approuvée, n’oubliez pas les attaques par injection XAML. Le XAML est un langage de balisage qui représente directement l’instanciation d’objets et leur exécution. Cela signifie que les éléments créés en XAML peuvent interagir avec les ressources système (par exemple, l’accès réseau et les e/s de système de fichiers).
CA3011 : Passez en revue le code pour détecter les vulnérabilités de l’injection de DLL Lorsque vous travaillez avec une entrée non approuvée, veillez à charger du code non approuvé. Si votre application web charge du code non approuvé, un attaquant peut être en mesure d’injecter des DLL malveillantes dans votre processus et d’exécuter du code malveillant.
CA3012 : Passez en revue le code pour détecter les vulnérabilités de l’injection regex Lorsque vous travaillez avec une entrée non approuvée, n’oubliez pas les attaques par injection de regex. Un attaquant peut utiliser l’injection de regex pour modifier une expression régulière de manière malveillante, pour faire en sorte que le regex corresponde à des résultats inattendus, ou pour faire en sorte que le regex consomme un processeur excessif, ce qui entraîne une attaque par déni de service.
CA3061 : Ne pas ajouter de schéma par URL N’utilisez pas la surcharge dangereuse de la méthode Add, car elle peut entraîner des références externes dangereuses.
CA3075 : Traitement DTD non sécurisé Si vous utilisez des instances de DTDProcessing non sécurisées ou référencez des sources d’entités externes, l’analyseur peut accepter une entrée non fiable et divulguer des informations sensibles à des personnes malveillantes.
CA3076 : Exécution non sécurisée de script XSLT Si vous exécutez le langage XSLT (Extensible StyleSheet Language Transformations) dans des applications .NET de manière non sécurisée, le processeur risque de résoudre des références URI non fiables qui pourraient divulguer des informations sensibles à des personnes malveillantes, ce qui aboutirait à des attaques par déni de service et inter-site.
CA3077 : Traitement non sécurisé dans la conception d’API, le document XML et le lecteur de texte XML Lors de la conception d’une API dérivée de XMLDocument et XMLTextReader, tenez compte de DtdProcessing. L’utilisation d’instances de DTDProcessing non sécurisées lors de la référence ou la résolution de sources d’entités externes ou la définition de valeurs non sécurisées dans le code XML peut aboutir à la divulgation d’informations.
CA3147 : Marquer les gestionnaires de verbe avec ValidateAntiForgeryToken Lors de la conception d’un contrôleur MVC ASP.NET, tenez compte des attaques de falsification de requête inter-site. Une attaque de falsification de requête inter-site peut envoyer des requêtes malveillantes d’un utilisateur authentifié à votre contrôleur MVC ASP.NET.
CA5350 : N’utilisez pas d’algorithmes de chiffrement faibles Des algorithmes de chiffrement et des fonctions de hachage faibles sont utilisés aujourd’hui pour plusieurs raisons, mais ils ne doivent pas servir à garantir la confidentialité ou l’intégrité des données qu’ils protègent. Cette règle se déclenche lorsqu’elle détecte des algorithmes TripleDES, SHA1 ou RIPEMD160 dans le code.
CA5351 : N’utilisez pas les algorithmes de chiffrement cassés Les algorithmes de chiffrement cassés ne sont pas considérés comme sécurisés, et leur utilisation doit être fortement déconseillée. Cette règle se déclenche lorsqu’elle détecte l’algorithme de hachage MD5 ou les algorithmes de chiffrement RC2 ou DES dans le code.
CA5358 : Ne pas utiliser de modes de chiffrement non sécurisés Ne pas utiliser de modes de chiffrement non sécurisés
CA5359 : Ne désactivez pas la validation de certificat Un certificat peut vous aider à authentifier l’identité du serveur. Les clients doivent valider le certificat de serveur pour s’assurer que les demandes sont envoyées au serveur prévu. Si ServerCertificateValidationCallback retourne toujours true, tout certificat passera la validation.
CA5360 : N’appelez pas de méthodes dangereuses dans la désérialisation La désérialisation non sécurisée est une vulnérabilité qui se produit lorsque des données non approuvées sont utilisées pour abuser de la logique d’une application, infliger une attaque par déni de service (DoS) ou même exécuter du code arbitraire lors de leur désérialisation. Il est souvent possible pour les utilisateurs malveillants d’abuser de ces fonctionnalités de désérialisation lorsque l’application désérialise des données non approuvées qui sont sous leur contrôle. Plus précisément, appelez des méthodes dangereuses dans le processus de désérialisation. Les attaques de désérialisation non sécurisée réussies pourraient permettre à un attaquant d’effectuer des attaques telles que les attaques par déni de service, les contournements d’authentification et l’exécution de code à distance.
CA5361 : Ne désactivez pas l’utilisation du chiffrement fort par Schannel Régler Switch.System.Net.DontEnableSchUseStrongCrypto sur true affaiblit le chiffrement utilisé dans les connexions TLS (Transport Layer Security) sortantes. Un chiffrement plus faible peut compromettre la confidentialité de la communication entre votre application et le serveur, ce qui permet aux attaquants d’espionner plus facilement des données sensibles.
CA5362 : Cycle de référence potentiel dans le graphe d’objets désérialisé Si vous désérialisez des données non approuvées, tout code traitant le graphe d’objets désérialisé doit gérer des cycles de référence sans passer par des boucles infinies. Cela inclut à la fois le code qui fait partie d’un rappel de désérialisation et le code qui traite le graphe d’objets une fois la désérialisation terminée. Sinon, un attaquant pourrait effectuer une attaque par déni de service avec des données malveillantes contenant un cycle de référence.
CA5363 : Ne pas désactiver la validation de demandes La validation des demandes est une fonctionnalité de ASP.NET qui examine les requêtes HTTP et détermine si elles contiennent du contenu potentiellement dangereux qui peut entraîner des attaques par injection, y compris des scripting inter-site.
CA5364 : Ne pas utiliser de protocoles de sécurité dépréciés 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.
CA5365 : Ne désactivez pas la vérification des en-têtes HTTP La vérification de l’en-tête HTTP permet l’encodage des caractères de retour chariot et de nouvelle ligne, \r et \n, qui se trouvent dans les en-têtes de réponse. Cet encodage peut aider à éviter les attaques par injection qui exploitent une application qui renvoie des données non approuvées contenues dans l’en-tête.
CA5366 : Utilisez XmlReader pour lire les données XML d’un jeu de données L’utilisation d’un DataSet pour lire du code XML avec des données non approuvées peut charger des références externes dangereuses, qui doivent être restreintes à l’aide d’un XmlReader avec un programme de résolution sécurisé ou avec un traitement DTD désactivé.
CA5367 : Ne sérialisez pas les types avec des champs de pointeur Cette règle vérifie s’il existe une classe sérialisable avec un champ ou une propriété de pointeur. Les membres qui ne peuvent pas être sérialisés peuvent être un pointeur, comme des membres statiques ou des champs marqués avec NonSerializedAttribute.
CA5368 : Définissez ViewStateUserKey pour les classes dérivées de Page La définition de la propriété ViewStateUserKey peut vous aider à empêcher les attaques sur votre application en vous permettant d’affecter un identificateur à la variable d’état d’affichage pour des utilisateurs individuels afin que les attaquants ne puissent pas utiliser la variable pour générer une attaque. Dans le cas contraire, il y aura des vulnérabilités à la falsification des requêtes inter-site.
CA5369 : Utiliser XmlReader pour la désérialisation Le traitement de schémas DTD et XML non approuvés peut permettre le chargement de références externes dangereuses, qui doivent être restreintes à l’aide d’un XmlReader avec un programme de résolution sécurisé ou avec le traitement de schéma inclus DTD et XML désactivé.
CA5370 : Utiliser XmlReader pour la validation du lecteur Le traitement de schémas DTD et XML non approuvés peut permettre le chargement de références externes dangereuses. Ce chargement dangereux peut être limité à l’aide d’un XmlReader avec un programme de résolution sécurisé ou avec le traitement de schéma inclus DTD et XML désactivé.
CA5371 : Utiliser XmlReader pour la lecture de schéma Le traitement de schémas DTD et XML non approuvés peut permettre le chargement de références externes dangereuses. L’utilisation d’un XmlReader avec un programme de résolution sécurisé ou avec le traitement de schéma inclus DTD et XML désactivé limite cela.
CA5372 : Utiliser XmlReader pour XPathDocument Le traitement XML à partir de données non fiables peut entraîner le chargement de références externes dangereuses. Vous pouvez limiter ce risque en utilisant un XmlReader avec un programme de résolution sécurisé ou avec une désactivation du traitement DTD.
CA5373 : Ne pas utiliser la fonction de dérivation de clé obsolète Cette règle détecte l’appel des méthodes System.Security.Cryptography.PasswordDeriveBytes et Rfc2898DeriveBytes.CryptDeriveKey de dérivation de clé faible. System.Security.Cryptography.PasswordDeriveBytes a utilisé un algorithme faible PBKDF1.
CA5374 : N’utilisez pas XslTransform Cette règle vérifie si System.Xml.Xsl.XslTransform est instancié dans le code. System.Xml.Xsl.XslTransform est désormais obsolète et ne doit pas être utilisé.
CA5375 : N’utilisez pas de signature d’accès partagé au compte Un compte SAP peut déléguer l’accès aux opérations de lecture, d’écriture et de suppression sur les conteneurs d’objets blob, les tables, les files d’attente et les partages de fichiers qui ne sont pas autorisées avec une SAP de service. Toutefois, il ne prend pas en charge les stratégies au niveau du conteneur et offre moins de flexibilité et de contrôle sur les autorisations accordées. Une fois que les utilisateurs malveillants l’obtiennent, votre compte de stockage est facilement compromis.
CA5376 : Utilisez SharedAccessProtocol HttpsOnly La SAP est une données sensible qui ne peut pas être transportée en texte brut sur HTTP.
CA5377 : Utilisez une stratégie d’accès au niveau du conteneur Une stratégie d’accès au niveau du conteneur peut être modifiée ou révoquée à tout moment. Cela offre plus de flexibilité et de contrôle sur les autorisations accordées.
CA5378 : Ne pas désactiver ServicePointManagerSecurityProtocols Régler DisableUsingServicePointManagerSecurityProtocols sur true limite les connexions TLS (Transport Layer Security) de WCF (Windows Communication Framework) à l’utilisation de TLS 1.0. Cette version de TLS sera déconseillée.
CA5379 : Vérifiez que l'algorithme de la fonction de dérivation de clés est suffisamment fort La classe Rfc2898DeriveBytes utilise par défaut l’algorithme SHA1. Vous devez spécifier l’algorithme de hachage à utiliser dans certaines surcharges du constructeur avec SHA256 ou une version ultérieure. Notez que la propriété HashAlgorithm a uniquement un accesseur get et n’a pas de modificateur overridden.
CA5380 : Ne pas ajouter de certificats au magasin racine Cette règle détecte le code qui ajoute un certificat dans le magasin de certificats Autorités de certification racines de confiance. Par défaut, le magasin de certificats Autorités de certification racines de confiance est configuré avec un ensemble d’autorités de certification publiques qui ont satisfait aux exigences du programme de certificats racines Microsoft.
CA5381 : S’assurer que les certificats ne sont pas ajoutés au magasin racine Cette règle détecte le code qui ajoute un certificat dans le magasin de certificats Autorités de certification racines de confiance. Par défaut, le magasin de certificats Autorités de certification racines de confiance est configuré avec un ensemble d’autorités de certification publiques qui ont satisfait aux exigences du programme de certificats racines Microsoft.
CA5382 : Utilisez des cookies sécurisés dans ASP.NET Core Les applications disponibles via HTTPS doivent utiliser des cookies sécurisés, qui indiquent au navigateur que le cookie doit être transmis uniquement à l’aide de TLS (Transport Layer Security).
CA5383 : Vérifiez l’utilisation de cookies sécurisés dans ASP.Net Core Les applications disponibles via HTTPS doivent utiliser des cookies sécurisés, qui indiquent au navigateur que le cookie doit être transmis uniquement à l’aide de TLS (Transport Layer Security).
CA5384 : N’utilisez pas DSA (Digital Signature Algorithm) DSA est un algorithme de chiffrement asymétrique faible.
CA5385 : Utilisez l’algorithme RSA (Rivest–Shamir–Adleman) avec une taille de clé suffisante Une clé RSA inférieure à 2 048 bits est plus vulnérable aux attaques par force brute.
CA5386 : Éviter tout codage en dur de la valeur de SecurityProtocolType TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec HTTPS (Hypertext Transfer Protocol Secure). Les versions de protocole TLS 1.0 et TLS 1.1 sont déconseillées, tandis que TLS 1.2 et TLS 1.3 sont à jour. À l’avenir, TLS 1.2 et TLS 1.3 peuvent être dépréciés. Pour vous assurer que votre application reste sécurisée, évitez de coder en dur une version de protocole et ciblez au moins .NET Framework v4.7.1.
CA5387 : N’utilisez pas la fonction de dérivation de clés faibles avec un nombre insuffisant d’itérations Cette règle vérifie si une clé de chiffrement a été générée par Rfc2898DeriveBytes avec un nombre d’itérations inférieur à 100 000. Un nombre d’itérations plus élevé peut aider à atténuer les attaques de dictionnaire qui tentent de deviner la clé de chiffrement générée.
CA5388 : Vérifiez que le nombre d’itérations est suffisant lors de l’utilisation de la fonction de dérivation de clés faibles Cette règle vérifie si une clé de chiffrement a été générée par Rfc2898DeriveBytes avec un nombre d’itérations qui peut être inférieur à 100 000. Un nombre d’itérations plus élevé peut aider à atténuer les attaques de dictionnaire qui tentent de deviner la clé de chiffrement générée.
CA5389 : Ne pas ajouter le chemin de l’élément d’archive au chemin du système de fichiers cible Le chemin d’accès au fichier peut être relatif et peut conduire à un accès au système de fichiers en dehors du chemin cible du système de fichiers attendu, ce qui entraîne des modifications de configuration malveillantes et l’exécution de code à distance via la technique de mise en place et d’attente.
CA5390 : Ne codez pas en dur la clé de chiffrement Pour qu’un algorithme symétrique réussisse, la clé secrète doit être connue uniquement de l’expéditeur et du récepteur. Lorsqu’une clé est codée en dur, elle est facilement découverte. Même avec des fichiers binaires compilés, il est facile pour les utilisateurs malveillants de les extraire. Une fois la clé privée compromise, le texte de chiffrement peut être déchiffré directement et n’est plus protégé.
CA5391 : Utilisez des jetons antifalsification dans les contrôleurs ASP.NET Core MVC La gestion d’une requête POST, PUT, PATCHou DELETE sans validation d’un jeton antifalsification peut être vulnérable aux attaques de falsification de requête inter-site. Une attaque par falsification de requête inter-site peut envoyer des demandes malveillantes d’un utilisateur authentifié à votre contrôleur ASP.NET Core MVC.
CA5392 : Utilisez l’attribut DefaultDllImportSearchPaths pour les P/Invokes Par défaut, les fonctions P/Invoke à l’aide de DllImportAttribute sondent un certain nombre de répertoires, y compris le répertoire de travail actuel que la bibliothèque doit charger. Il peut s’agir d’un problème de sécurité pour certaines applications, entraînant un détournement de DLL.
CA5393 : N’utilisez pas de valeur DllImportSearchPath non sécurisée Il peut y avoir une DLL malveillante dans les répertoires de recherche de DLL par défaut et les répertoires d’assembly. Ou, selon l’emplacement d’exécution de votre application, il peut y avoir une DLL malveillante dans le répertoire de l’application.
CA5394 : N’utilisez pas de sélection aléatoire non sécurisée L’utilisation d’un générateur de nombres pseudo-aléatoires faible sur le plan du chiffrement peut permettre à un attaquant de prédire quelle valeur sensible à la sécurité sera générée.
CA5395 : Attribut HttpVerb manquant pour les méthodes d’action Toutes les méthodes d’action qui créent, modifient, suppriment ou modifient des données doivent être protégées par l’attribut antifalsification contre les attaques par falsification de requête inter-site. Une opération GET doit être sûre, ne doit avoir aucun effet secondaire et ne doit pas modifier vos données persistantes.
CA5396 : Affectez la valeur true à HttpOnly pour HttpCookie En guise de mesure de défense en profondeur, assurez-vous que les cookies HTTP sensibles pour la sécurité sont marqués comme HttpOnly. Cela indique que les navigateurs web doivent interdire aux scripts d’accéder aux cookies. Les scripts malveillants injectés sont un moyen courant de voler des cookies.
CA5397 : Ne pas utiliser de valeurs SslProtocols dépréciées 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.
CA5398 : Éviter les valeurs SslProtocols codées en dur TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec HTTPS (Hypertext Transfer Protocol Secure). Les versions de protocole TLS 1.0 et TLS 1.1 sont déconseillées, tandis que TLS 1.2 et TLS 1.3 sont à jour. À l’avenir, TLS 1.2 et TLS 1.3 peuvent être dépréciés. Pour garantir la sécurité de votre application, évitez de coder en dur une version de protocole.
CA5399 : Désactivez définitivement la vérification de la liste de révocation de certificats HttpClient Un certificat révoqué n’est plus approuvé. Il peut être utilisé par des attaquants qui transmettent des données malveillantes ou volent des données sensibles dans les communications HTTPS.
CA5400 : Contrôlez si la vérification de la liste de révocation de certificats HttpClient est bien activée Un certificat révoqué n’est plus approuvé. Il peut être utilisé par des attaquants qui transmettent des données malveillantes ou volent des données sensibles dans les communications HTTPS.
CA5401 : N’utilisez pas CreateEncryptor avec une valeur IV non définie par défaut Le chiffrement symétrique doit toujours utiliser un vecteur d’initialisation non répétable pour empêcher les attaques par dictionnaire.
CA5402 : Utilisez CreateEncryptor avec la valeur IV par défaut Le chiffrement symétrique doit toujours utiliser un vecteur d’initialisation non répétable pour empêcher les attaques par dictionnaire.
CA5403 : Ne pas coder en dur le certificat Le paramètre data ou rawData d’un constructeur X509Certificate ou X509Certificate2 est codé en dur.
CA5404 : ne désactivez pas les vérifications de validation de jeton Les propriétés TokenValidationParameters qui contrôlent la validation des jetons ne doivent pas être définies sur false.
CA5405 : n’ignorez pas toujours la validation des jetons dans les délégués Le rappel affecté à AudienceValidator ou LifetimeValidator retourne toujours true.