Attributs de code source .NET pris en charge

Lorsque l'analyse statique est utilisée pour examiner .NET, les attributs de méthode [ValidatorMethod], [CallbackMethod] et [SuppressSecurityTrace] sont pris en charge. Lorsque ces attributs sont utilisés, [ValidatorMethod()], [CallbackMethod()] et [SuppressSecurityTrace()] sont également acceptés.

Utilisation des attributs

Il est possible d'utiliser les attributs comme suit :

  1. Les attributs sont pris en charge par défaut. Le fichier d'attributs SecurityAttributes.dll se trouve dans le répertoire \annotation du fichier SAClientUtil_<version>_<os>.zip extrait.
  2. Si vous examinez des classes précompilées, ou des fichiers .exe ou .dll, ajoutez SecurityAttributes.dll au projet .NET qui contient les sources annotées, puis régénérez le projet.
  3. Si vous effectuez des examens dans un environnement de développement intégré dans lequel le plug-in d'analyse statique est installé, ajoutez SecurityAttributes.dll à titre de référence.
  4. Si vous utilisez l'interface de ligne de commande de l'analyse statique, créez un fichier de configuration et, dans celui-ci, définissez CustomBuildInfo additional_classpath="dependency_path" de manière à ce que dependency_path comprenne l'emplacement du fichier SecurityAttributes.dll.

Il est possible d'ajouter des attributs au code source avant l'examen ou après l'examen et lors du triage afin d'identifier et d'éliminer les faux positifs. Si vous effectuez des examens dans un environnement de développement intégré où le plug-in d'analyse statique est installé, un bouton M'aider à résoudre ce problème est disponible dans le rapport d'examen. Lorsque vous sélectionnez ce bouton, des points où des attributs peuvent être ajoutés vous sont présentés.

Les attributs sont proposés pour vous permettre d'insérer vos connaissances directement dans le code source sous la forme d'attributs de sécurité. Etant donné que les attributs peuvent servir à indiquer que des portions du code sont sécurisées, ils doivent être utilisés avec beaucoup de précautions. Elles ne doivent pas être utilisées pour du code dans lequel des vulnérabilités de sécurité doivent être recherchées. Si vous utilisez des attributs, un analyste de sécurité peut choisir de les ignorer en désactivant la fonction dans le fichier irgen-engine.apsettings situé dans le répertoire \config du fichier SAClientUtil_<version>_<os>.zip extrait. Dans ce fichier, repérez le paramètre suivant :

<Setting 
  name="process_security_annotations"
  value="true"
  default_value="true"
  description="When turned on, method annotations will be processed - used by DotNet and Java LSPs"
  display_name="Process Security Annotations"
  type="bool"
/>

Pour désactiver la fonctionnalité, remplacez value="true" par value="false".

Remarque : Si le paramètre est défini sur value="false", définissez-le sur value="true" si vous souhaitez utiliser des annotations.

[ValidatorMethod] ou [ValidatorMethod()]

Les valideurs sont des méthodes qui vérifient les données en entrée et renvoient généralement une valeur booléenne qui indique si l'entrée est valide. Plutôt que d'accepter ou de rejeter les entrées utilisateur à l'aide de valideurs, vous pouvez les modifier pour leur donner un format acceptable. Ces méthodes s'appellent des nettoyeurs.

L'attribut [ValidatorMethod] permet d'identifier toutes les méthodes de validation et d'assainissement dans le code source de l'application. Au cours des examens d'analyse statique, ces informations sont utilisées pour supprimer les flux de données qui transitent par ces méthodes, puisque ces données sont alors considérées comme fiables.

Remarque : Il n'est actuellement pas possible de spécifier quels paramètres de la méthode annotée doivent être considérés comme validés. Lors des examens utilisant l'analyse statique, tous les paramètres d’entrée seront considérés comme validés.

[SuppressSecurityTrace] ou [SuppressSecurityTrace()]

Toutes les traces qui traversent une méthode marquée par cet attribut sont supprimées. Cette annotation est utile lorsqu'un groupe de traces est identifié comme de faux positifs, ou est moins important ou intéressant que d'autres. Vous pouvez utiliser ces attributs pour filtrer ces traces ou les masquer afin de réduire les encombrements.

[CallbackMethod] ou [CallbackMethod()]

Cet attribut sert à identifier les rappels ou les points d'entrée d'une application. Tous les arguments sont considérés comme tachés.