Compartilhar via


CA5401: Não usar CreateEncryptor com IV não padrão

Property Valor
ID da regra CA5401
Título Não usar CreateEncryptor com IV não padrão
Categoria Segurança
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Usando System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor com rgbIV não padrão.

Descrição da regra

A criptografia simétrica sempre deve usar um vetor de inicialização que não possa ser repetido para evitar ataques de dicionário.

Essa regra é semelhante a CA5402, mas a análise determina que o vetor de inicialização é definitivamente o padrão.

Como corrigir violações

Use o valor padrão rgbIV, ou seja, use a sobrecarga do System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor que não possui nenhum parâmetro.

Quando suprimir avisos

É seguro suprimir um aviso dessa regra se:

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

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

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

Exemplos de pseudocódigo

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        aesCng.IV = rgbIV;
        aesCng.CreateEncryptor();
    }
}

Solução

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod()
    {
        AesCng aesCng  = new AesCng();
        aesCng.CreateEncryptor();
    }
}