Règles de sécurité
Les règles de sécurité prennent en charge des bibliothèques et des applications plus sécurisées. Ces règles permettent d’éviter les failles de sécurité dans votre programme. Si vous désactivez l’une de ces règles, vous devez marquer clairement la raison dans le code et informer également l’agent de sécurité désigné pour votre projet de développement.
Contenu de cette section
Règle | Description |
---|---|
CA2100 : Passez en revue les requêtes SQL pour les vulnérabilités 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 une entrée utilisateur. Une chaîne de commande SQL générée à partir d’une entrée utilisateur est vulnérable aux attaques par injection SQL. |
CA2109 : Passez en revue les gestionnaires d'événements visibles | Une méthode de gestion des événements publique ou protégée a été détectée. Les méthodes de gestion des événements ne doivent pas être exposées, sauf si absolument nécessaire. |
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 : éviter la gestion des exceptions état altéré | Lesexceptions d’état endommagé (CSE, Corrupted State Exceptions) indiquent une altération de la mémoire dans votre processus. Les intercepter plutôt que d’autoriser le processus à se bloquer peuvent entraîner des vulnérabilités de sécurité si un attaquant peut placer une attaque dans la région de 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2301 : N’appelez pas BinaryFormatter.Deserialize avant d'avoir défini BinaryFormatter.Binder | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2310 : Ne pas utiliser de désérialiseur non sécurisé NetDataContractSerializer | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2315 : N'utilisez pas le désérialiseur ObjectStateFormatter s'il est non sécurisé | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2322 : Vérifiez que JavaScriptSerializer n’est pas initialisé avec SimpleTypeResolver avant de désérialiser | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2326 : n’utilisez pas les valeurs TypeNameHandling autres que None | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2327 : N’utilisez pas de JsonSerializerSettings non sécurisé | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2328 : vérifiez que JsonSerializerSettings est sécurisé | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour 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 de | Les désérialiseurs non sécurisés sont vulnérables lors de la désérialisation des données non approuvées. Un attaquant peut modifier les données sérialisées pour inclure des types inattendus pour injecter des objets avec des effets secondaires malveillants. |
CA2350 : vérifiez 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érifiez 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 : Un ensemble de données ou une table de données non sécurisés dans des types sérialisables peuvent être vulnérables aux attaques d’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 un System.ServiceModel.OperationContractAttribute a un paramètre qui peut référencer un DataSet ou un DataTable. |
CA2361 : Vérifier que la classe générée automatiquement contenant DataSet.ReadXml() n’est pas utilisée avec des données non approuvées | 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és dans un type sérialisable généré automatiquement peuvent être vulnérables aux attaques d'exécution de code à distance | Lors de la désérialisation d’une entrée non approuvée avec BinaryFormatter et que le graphique d’objet désérialisé contient un DataSet ou un 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 des vulnérabilités d’injection SQL | Lorsque vous utilisez des commandes d’entrée et SQL non approuvées, gardez à l’esprit les attaques par injection SQL. Une attaque par injection SQL peut exécuter des commandes SQL malveillantes, compromettre 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 | Lorsqu'on travaille avec des données non fiables provenant de requêtes web, soyez attentif aux attaques par script intersites (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 du contenu malveillant dans votre page web. |
CA3003 : Passez en revue le code des vulnérabilités d’injection de chemins de fichier | Lorsque vous utilisez des entrées non approuvées à partir de requêtes web, n’oubliez pas d’utiliser une entrée contrôlée par l’utilisateur lors de la spécification de chemins d’accès aux fichiers. |
CA3004 : Passez en revue le code pour connaître les vulnérabilités de divulgation d’informations | La divulgation d’informations sur les exceptions donne aux attaquants des insights sur les internes de votre application, ce qui peut aider les attaquants à trouver d’autres vulnérabilités à exploiter. |
CA3006 : Passez en revue le code des vulnérabilités d’injection de commandes de processus | Lors de l’utilisation d’une entrée non approuvée, soyez attentif aux 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, compromettre la sécurité et l’intégrité de votre serveur. |
CA3007 : Passez en revue le code pour connaître les vulnérabilités de redirection ouvertes | Lors de l’utilisation d’une entrée non approuvée, tenez compte des vulnérabilités de redirection ouvertes. 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 insoupçonnant 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 des entrées non approuvées, soyez attentif aux attaques par injection XPath. La construction de requêtes XPath à l’aide d’une entrée non approuvée peut permettre à un attaquant de manipuler la requête de manière malveillante pour retourner un résultat inattendu, et éventuellement de divulguer le contenu du code XML interrogé. |
CA3009 : vérifiez le code pour des vulnérabilités d'injection XML | Lors de l’utilisation d’une entrée non approuvée, tenez compte des attaques par injection XML. |
CA3010 : Passez en revue le code pour détecter les vulnérabilités de l’injection XAML | Lors de l’utilisation d’une entrée non approuvée, tenez compte des attaques par injection XAML. XAML est un langage de balisage qui représente directement l’instanciation et l’exécution d’objets. 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 du système de fichiers). |
CA3011 : Passez en revue le code des vulnérabilités d’injection de DLL | Lorsque vous utilisez une entrée non approuvée, n’oubliez pas de 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 d’expression régulière pour modifier malveillantment une expression régulière, pour faire correspondre les regex à des résultats inattendus ou pour que le regex consomme un processeur excessif entraînant une attaque par déni de service. |
CA3061 : N’ajoutez pas de schéma par URL | N’utilisez pas la surcharge non sécurisée 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 DTDProcessing non sécurisées ou référencez des sources d’entités externes, l’analyseur peut accepter une entrée non approuvée et divulguer des informations sensibles aux attaquants. |
CA3076 : Exécution de script XSLT non sécurisée | Si vous exécutez des transformations XSLT (Extensible StyleSheet Language Transformations) dans des applications .NET de manière non sécurisée, le processeur peut résoudre les références d’URI non approuvées qui pourraient divulguer des informations sensibles aux attaquants, ce qui entraîne des attaques par déni de service et intersite. |
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, gardez à l’esprit DtdProcessing. L’utilisation d’instances DTDProcessing non sécurisées lors du référencement ou de la résolution de sources d’entité externes ou de la définition de valeurs non sécurisées dans le code XML peut entraîner la divulgation d’informations. |
CA3147 : Marquer les gestionnaires de verbe avec ValidateAntiForgeryToken | Lors de la conception d’un contrôleur MVC ASP.NET, gardez à l’esprit les attaques de falsification de requête intersite. Une attaque de falsification de requête intersite peut envoyer des demandes malveillantes d’un utilisateur authentifié à votre contrôleur MVC ASP.NET. |
CA5350 : N’utilisez pas d’algorithmes de chiffrement faibles | Les algorithmes de chiffrement faibles et les fonctions de hachage sont utilisés aujourd’hui pour plusieurs raisons, mais ils ne doivent pas être utilisés pour garantir la confidentialité ou l’intégrité des données qu’ils protègent. Cette règle se déclenche lorsqu’elle recherche des algorithmes TripleDES, SHA1 ou RIPEMD160 dans le code. |
CA5351 : N’utilisez pas d’algorithmes de chiffrement rompus | Les algorithmes de chiffrement rompus 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 trouve l’algorithme de hachage MD5 ou les algorithmes de chiffrement DES ou RC2 dans le code. |
CA5358 : Ne pas utiliser de modes de chiffrement non sécurisés | N’utilisez pas de modes de chiffrement non sécurisés |
CA5359 : ne désactivez pas la validation du certificat | Un certificat peut 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 passe 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 sur celui-ci étant désérialisé. 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ées peuvent permettre à un attaquant d’effectuer des attaques telles que les attaques DoS, les contournements d’authentification et l’exécution de code distant. |
CA5361: ne désactivez pas l'utilisation par SChannel d'un chiffrement fort | La définition de 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 facilite l’écoute des données sensibles par les attaquants. |
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’objet désérialisé doit gérer les cycles de référence sans passer en boucles infinies. Cela inclut à la fois le code qui fait partie d’un rappel de désérialisation et du code qui traite le graphique d’objet après la désérialisation terminée. Sinon, un attaquant peut effectuer une attaque par déni de service avec des données malveillantes contenant un cycle de référence. |
CA5363 : ne désactivez pas la validation des demandes | La validation des requêtes est une fonctionnalité de ASP.NET qui examine les requêtes HTTP et détermine s’ils contiennent du contenu potentiellement dangereux pouvant entraîner des attaques par injection, y compris le script intersite. |
CA5364 : n’utilisez pas de protocoles de sécurité déconseillés | Le protocole TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec le protocole HTTPS (Hypertext Transfer Protocol Secure). Les versions de protocole antérieures 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 versions antérieures du protocole pour réduire les risques. |
CA5365 : Ne pas désactiver la vérification d’en-tête 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 : Utiliser XmlReader pour lire le XML dans un DataSet | 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 le 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 de pointeur ou une propriété. Les membres qui ne peuvent pas être sérialisés peuvent être des pointeurs, tels que des membres statiques ou des champs marqués avec NonSerializedAttribute. |
CA5368 : Définir ViewStateUserKey pour les classes dérivées de la 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 les 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 désérialiser | Le traitement des schémas DTD et XML non approuvés peut permettre de 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 le traitement de schéma inline DTD et XML désactivé. |
CA5370 : Utiliser XmlReader pour valider reader | Le traitement des schémas DTD et XML non approuvés peut permettre de charger des 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 inline DTD et XML désactivé. |
CA5371 : Utiliser XmlReader pour lire des schémas | Le traitement des schémas DTD et XML non approuvés peut permettre de charger des références externes dangereuses. L'utilisation d'un XmlReader avec un résolveur sécurisé ou avec le traitement des DTD et des schémas XML inline désactivés restreint cela. |
CA5372 : Utiliser XmlReader pour XPathDocument | Le traitement xml à partir de données non approuvées peut charger des références externes dangereuses, qui peuvent être restreintes à l’aide d’un XmlReader avec un programme de résolution sécurisé ou avec le traitement DTD désactivé. |
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é de 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, elle ne prend pas en charge les stratégies au niveau du conteneur et a moins de flexibilité et de contrôle sur les autorisations accordées. Une fois que les utilisateurs malveillants l’obtiennent, votre compte de stockage sera facilement compromis. |
CA5376 : Utiliser SharedAccessProtocol HttpsOnly | SAS est une donnée 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. Il offre une plus grande flexibilité et un contrôle sur les autorisations accordées. |
CA5378 : Ne désactivez pas 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 fonction de dérivation de clé 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 n’a que l'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 sur HTTPS doivent utiliser des cookies sécurisés, qui indiquent au navigateur que le cookie ne doit être transmis qu’à l’aide du protocole TLS (Transport Layer Security). |
CA5383 : Veillez à utiliser des cookies sécurisés dans ASP.NET Core | Les applications disponibles sur HTTPS doivent utiliser des cookies sécurisés, qui indiquent au navigateur que le cookie ne doit être transmis qu’à l’aide du protocole TLS (Transport Layer Security). |
CA5384 : n’utilisez pas d’algorithme de signature numérique (DSA) | DSA est un algorithme de chiffrement asymétrique faible. |
CA5385 : Utiliser l’algorithme Rivest-Shamir-Adleman (RSA) avec une taille de clé suffisante | Une clé RSA inférieure à 2048 bits est plus vulnérable aux attaques par force brute. |
CA5386 : Évitez de coder en dur la valeur SecurityProtocolType | Le protocole TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec le protocole 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 actuels. À l’avenir, TLS 1.2 et TLS 1.3 peuvent être déconseillés. Pour vous assurer que votre application reste sécurisée, évitez de coder en dur une version du protocole et ciblez au moins .NET Framework v4.7.1. |
CA5387 : Ne pas utiliser de fonction de dérivation de clé faible avec un nombre d’itérations insuffisant | 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 par dictionnaire qui tentent de deviner la clé de chiffrement générée. |
CA5388 : Assurez-vous que le nombre d’itérations soit suffisant lors de l'utilisation de la fonction de dérivation de clé faible | 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 par 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 à l’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 distant via la technique lay-and-wait. |
CA5390 : ne pas coder 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 destinataire. Lorsqu’une clé est codée en dur, elle est facilement découverte. Même avec les fichiers binaires compilés, il est facile pour les utilisateurs malveillants de l’extraire. Une fois la clé privée compromise, le texte de chiffrement peut être déchiffré directement et n’est plus protégé. |
CA5391 : Utiliser des jetons antiforgery dans les contrôleurs MVC d’ASP.NET Core | La gestion d’une requête POST , PUT , PATCH ou DELETE sans valider un jeton antifalsification peut être vulnérable aux attaques d'usurpation de requête intersite. Une attaque de falsification de requête intersite peut envoyer des demandes malveillantes d’un utilisateur authentifié à votre contrôleur MVC core ASP.NET. |
CA5392 : Utiliser l’attribut DefaultDllImportSearchPaths pour P/Invokes | Par défaut, les fonctions P/Invoke utilisant DllImportAttribute sondent un certain nombre de répertoires, y compris le répertoire de travail actuel de la bibliothèque à charger. Il peut s’agir d’un problème de sécurité pour certaines applications, ce qui entraîne le 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 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 par chiffrement peut permettre à un attaquant de prédire la valeur sensible à la sécurité qui 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 altèrent des données doivent être protégées avec l’attribut antifalsification contre les attaques de falsification de requête intersites. L’exécution d’une opération GET doit être une opération sécurisée qui n’a aucun effet secondaire et ne modifie pas vos données persistantes. |
CA5396 : affectez la valeur true à HttpOnly pour HttpCookie | En tant que défense en profondeur, assurez-vous que les cookies HTTP sensibles à 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 : n’utilisez pas de valeurs SslProtocols déconseillées | Le protocole TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec le protocole HTTPS (Hypertext Transfer Protocol Secure). Les versions de protocole antérieures 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 versions antérieures du protocole pour réduire les risques. |
CA5398 : Éviter les valeurs SslProtocols codées en dur | Le protocole TLS (Transport Layer Security) sécurise la communication entre les ordinateurs, le plus souvent avec le protocole 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 actuels. À l’avenir, TLS 1.2 et TLS 1.3 peuvent être déconseillés. Pour vous assurer que votre application reste sécurisée, é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 la communication HTTPS. |
CA5400 : Vérifier que la vérification de la liste de révocation de certificats HttpClient n’est pas désactivé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 la communication HTTPS. |
CA5401 : n’utilisez pas CreateEncryptor avec un IV autre que celui par défaut | Le chiffrement symétrique doit toujours utiliser un vecteur d’initialisation non reproductible pour empêcher les attaques par dictionnaire. |
CA5402 : Utiliser CreateEncryptor avec l'IV par défaut | Le chiffrement symétrique doit toujours utiliser un vecteur d’initialisation non reproductible 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 jetons | Les propriétés de 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 . |
Collaborer avec nous sur GitHub
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.