CA5358: Não use modos de codificação não seguros

Propriedade valor
ID da regra CA5358
Cargo Não use modos de codificação não seguros
Categoria Segurança
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Não

Causa

Utilização de um dos seguintes modos de encriptação não seguros que não é aprovado:

Descrição da regra

Esses modos são vulneráveis a ataques e podem causar a exposição de informações confidenciais. Por exemplo, usar ECB para criptografar um bloco de texto sem formatação sempre produz um mesmo texto cifrado, para que ele possa facilmente dizer se duas mensagens criptografadas são idênticas. A utilização de modos aprovados pode evitar estes riscos desnecessários.

Como corrigir violações

Quando suprimir avisos

É seguro suprimir um aviso desta regra se:

  • Os especialistas em criptografia analisaram e aprovaram o uso do modo de cifra.
  • O referenciado CipherMode não é usado para uma operação criptográfica.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA5358
// The code that's violating the rule is on this line.
#pragma warning restore CA5358

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA5358.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Exemplos de pseudocódigo

Atribuir o BCE à propriedade Mode

using System.Security.Cryptography;

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

Utilização do valor BCE

using System;
using System.Security.Cryptography;

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

Solução

using System.Security.Cryptography;

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