Bagikan melalui


CA5402: Gunakan CreateEncryptor dengan IV default

Properti Nilai
ID Aturan CA5402
Judul Menggunakan CreateEncryptor dengan IV default
Golongan Keamanan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Tidak

Penyebab

rgbIV bisa menjadi non-default saat menggunakan System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor.

Deskripsi aturan

Enkripsi simetris harus selalu menggunakan vektor inisialisasi yang tidak dapat diulang untuk mencegah serangan kamus.

Aturan ini mirip dengan CA5401, tetapi analisis tidak dapat menentukan bahwa vektor inisialisasi jelas merupakan default.

Cara memperbaiki pelanggaran

Gunakan nilai default rgbIV secara eksplisit, yaitu, gunakan kelebihan beban System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor yang tidak memiliki parameter apa pun.

Kapan harus menekan peringatan

Aman untuk menyembunyikan peringatan dari aturan ini jika:

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

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

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Contoh kode semu

using System;
using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        Random r = new Random();

        if (r.Next(6) == 4)
        {
            aesCng.IV = rgbIV;
        }

        aesCng.CreateEncryptor();
    }
}

Solusi

using System.Security.Cryptography;

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