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);
}
}
}