CA5358 : Ne pas utiliser de modes de chiffrement non sécurisés

Propriété Value
Identificateur de la règle CA5358
Titre Ne pas utiliser de modes de chiffrement non sécurisés
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Utilisation de l’un des modes de chiffrement non sécurisés suivants qui n’est pas approuvé :

Description de la règle

Ces modes sont vulnérables aux attaques et peuvent entraîner l’exposition d’informations sensibles. Par exemple, l’utilisation de ECB pour chiffrer un bloc en texte brut produit toujours un même texte de chiffrement, afin qu’il puisse facilement déterminer si deux messages chiffrés sont identiques. L’utilisation de modes approuvés peut éviter ces risques inutiles.

Comment corriger les violations

Quand supprimer les avertissements

Vous pouvez supprimer sans risque un avertissement de cette règle si :

  • Des experts en chiffrement ont examiné et approuvé l’utilisation du mode de chiffrement.
  • Le CipherMode référencé n’est pas utilisé pour une opération de chiffrement.

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 CA5358
// The code that's violating the rule is on this line.
#pragma warning restore CA5358

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.CA5358.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Exemples de pseudo-code

Attribuer l’ECB à la propriété Mode

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.ECB
        };
    }
}

Utilisation de la valeur ECB

using System;
using System.Security.Cryptography;

class ExampleClass
{
    private static void ExampleMethod()
    {
        Console.WriteLine(CipherMode.ECB);
    }
}

Solution

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.CBC
        };
    }
}