Udostępnij za pośrednictwem


CA2144: Jawny kod nie powinien ładować zestawów z tablic bajtowych

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

Kategoria

Microsoft.Security

Zmiana kluczowa

Kluczowa

Przyczyna

Przezroczysta metoda ładuje zestaw z tablicy bajtów przy użyciu jednej z następujących metod:

Opis reguły

Przegląd zabezpieczeń dla kodu przezroczystego nie jest tak dokładny jak kodu krytycznego pod względem bezpieczeństwa, ponieważ przezroczysty kod nie może wykonywać czynności wrażliwych pod względem bezpieczeństwa.Zestawy, ładowane z tablicy bajtowej mogą nie być niezauważone w przezroczystym kodzie, a ta tablica bajtów może zawierać krytyczny albo, co ważniejsze, krytyczny dla bezpieczeństwa kod, który powinien być poddany inspekcji.Dlatego, przezroczysty kod nie powinien ładować zestawów z tablicy bajtów.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, oznacz metodę, która ładuje zestaw z atrybutem SecurityCriticalAttribute lub SecuritySafeCriticalAttribute.

Kiedy pominąć ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

Reguła odpala się na poniższym kodzie, ponieważ przezroczysta metoda ładuje zestawu z tablicy bajtów.

using System;
using System.IO;
using System.Reflection;

namespace TransparencyWarningsDemo
{

    public class TransparentMethodsLoadAssembliesFromByteArraysClass
    {
        public void TransparentMethod()
        {
            byte[] assemblyBytes = File.ReadAllBytes("DependentAssembly.dll");

            // CA2144 violation - transparent code loading an assembly via byte array.  The fix here is to 
            // either make TransparentMethod critical or safe-critical.
            Assembly dependent = Assembly.Load(assemblyBytes);
        }
    }
}