CA5401: Använd inte CreateEncryptor med icke-standard IV
Property | Värde |
---|---|
Regel-ID | CA5401 |
Title | Använd inte CreateEncryptor med icke-standard-IV |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Använda System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor med icke-standard rgbIV
.
Regelbeskrivning
Symmetrisk kryptering bör alltid använda en icke-repeterbar initieringsvektor för att förhindra ordlisteattacker.
Den här regeln liknar CA5402, men analysen bestämmer att initieringsvektorn definitivt är standard.
Så här åtgärdar du överträdelser
Använd standardvärdet rgbIV
, d.v.s. använd överlagringen av som System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor inte har någon parameter.
När du ska ignorera varningar
Det är säkert att ignorera en varning från den här regeln om:
- Parametern
rgbIV
genererades av System.Security.Cryptography.SymmetricAlgorithm.GenerateIV. - Du är säker på att är
rgbIV
verkligen slumpmässig och icke-repeterbar.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5401
// The code that's violating the rule is on this line.
#pragma warning restore CA5401
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5401.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(byte[] rgbIV)
{
AesCng aesCng = new AesCng();
aesCng.IV = rgbIV;
aesCng.CreateEncryptor();
}
}
Lösning
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
AesCng aesCng = new AesCng();
aesCng.CreateEncryptor();
}
}