Share via


CA5358: Não usar modos de criptografia não seguros

Property Valor
ID da regra CA5358
Título Não usar modos de criptografia não seguros
Categoria Segurança
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Uso de um dos seguintes modos de criptografia não seguros que não são aprovados:

Descrição da regra

Esses modos são vulneráveis a ataques e podem causar exposição de informações confidenciais. Por exemplo, usar ECB para criptografar um bloco de texto sem formatação sempre produz um mesmo texto codificado e, portanto, pode facilmente identificar se duas mensagens criptografadas são idênticas. O uso de modos aprovados pode evitar esses riscos desnecessários.

Como corrigir violações

Quando suprimir avisos

É seguro suprimir um aviso dessa regra se:

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

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar 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 em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

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

Exemplos de pseudocódigo

Atribuir a propriedade ECB para Modo

using System.Security.Cryptography;

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

Usar o 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
        };
    }
}