Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Propriété | Value |
---|---|
Identificateur de la règle | CA5381 |
Titre | S’assurer que les certificats ne sont pas ajoutés au magasin racine |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Non |
L’ajout de certificats aux certificats racines approuvés du système d’exploitation augmente le risque de légitimation de l’autorité de certification non approuvée.
Par défaut, cette règle analyse l’intégralité du codebase, mais elle est configurable.
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. Étant donné que toutes les autorités de certification racines approuvées peuvent émettre des certificats pour n’importe quel domaine, un attaquant peut choisir une autorité de certification faible ou coercible que vous installez par vous-même pour cibler afin d’effectuer une attaque. Et une autorité de certification vulnérable, malveillante ou coercible sape la sécurité de l’ensemble du système.
N’installez pas de certificats dans le magasin de certificats Autorités de certification racines de confiance.
Il n’est pas recommandé de supprimer cette règle.
Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.
Vous pouvez configurer ces options seulement pour cette règle, ou bien pour toutes les règles auxquelles elles s’appliquent, ou encore pour toutes les règles de cette catégorie (Sécurité) auxquelles elles s’appliquent. Pour plus d’informations, consultez Options de configuration des règles de qualité du code.
Vous pouvez exclure de l’analyse des symboles spécifiques, tels que des types et des méthodes, en définissant l’option excluded_symbol_names. Par exemple, pour spécifier que la règle ne doit pas s’exécuter sur du code dans des types nommés MyType
, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType
Notes
Remplacez la partie XXXX
de CAXXXX
par l’ID de la règle applicable.
Formats de nom de symbole autorisés dans la valeur d’option (séparés par |
) :
M:
pour les méthodes, T:
pour les types et N:
pour les espaces de noms..ctor
pour les constructeurs et .cctor
pour les constructeurs statiques.Exemples :
Valeur d’option | Récapitulatif |
---|---|
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType |
Correspond à tous les symboles nommés MyType . |
dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2 |
Correspond à tous les symboles nommés MyType1 ou MyType2 . |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS.MyType.MyMethod(ParamType) |
Correspond à une méthode MyMethod spécifique avec la signature complète spécifiée. |
dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType) |
Correspond à des méthodes MyMethod1 et MyMethod2 spécifiques avec la signature complète spécifiée. |
Vous pouvez exclure de l’analyse des types spécifiques et leurs types dérivés en définissant l’option excluded_type_names_with_derived_types. Par exemple, pour spécifier que la règle ne doit s’exécuter sur aucune méthode dans des types nommés MyType
et leurs types dérivés, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType
Notes
Remplacez la partie XXXX
de CAXXXX
par l’ID de la règle applicable.
Formats de nom de symbole autorisés dans la valeur d’option (séparés par |
) :
T:
facultatif.Exemples :
Valeur d'option | Récapitulatif |
---|---|
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType |
Correspond à tous les types nommés MyType et à tous leurs types dérivés. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2 |
Correspond à tous les types nommés MyType1 ou MyType2 , et à tous leurs types dérivés. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS.MyType |
Correspond à un type MyType spécifique avec un nom complet donné et tous ses types dérivés. |
dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2 |
Correspond à des types MyType1 ou MyType2 spécifiques avec leur nom complet respectif et tous leurs types dérivés. |
L’exemple de pseudo-code suivant illustre le modèle détecté par cette règle.
using System;
using System.Security.Cryptography.X509Certificates;
class TestClass
{
public void TestMethod()
{
var storeName = StoreName.Root;
Random r = new Random();
if (r.Next(6) == 4)
{
storeName = StoreName.My;
}
var x509Store = new X509Store(storeName);
x509Store.Add(new X509Certificate2());
}
}
using System.Security.Cryptography.X509Certificates;
class TestClass
{
public void TestMethod()
{
var storeName = StoreName.My;
var x509Store = new X509Store(storeName);
x509Store.Add(new X509Certificate2());
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenant