CA5394 : Ne pas utiliser de sélection aléatoire non sécurisée
Propriété | Value |
---|---|
Identificateur de la règle | CA5394 |
Titre | Ne pas utiliser de sélection aléatoire non sécurisée |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
L’une des méthodes de System.Random est appelée.
Description de la règle
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.
Comment corriger les violations
Si vous avez besoin d’une valeur imprévisible à des fins de sécurité, utilisez un générateur de nombres aléatoires fort sur le plan du chiffrement, par exemple System.Security.Cryptography.RandomNumberGenerator ou System.Security.Cryptography.RNGCryptoServiceProvider.
Quand supprimer les avertissements
Vous pouvez sans risque supprimer les avertissements de cette règle si vous avez la certitude que les nombres pseudo-aléatoires faibles ne sont pas utilisés d’une manière sensible du point de vue de la sécurité.
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 CA5394
// The code that's violating the rule is on this line.
#pragma warning restore CA5394
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.CA5394.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
using System;
class ExampleClass
{
public void ExampleMethod(Random random)
{
var sensitiveVariable = random.Next();
}
}
Solution
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(int toExclusive)
{
var sensitiveVariable = RandomNumberGenerator.GetInt32(toExclusive);
}
}