CA2144: El código transparente no debe cargar ensamblados desde matrices de bytes
TypeName |
TransparentMethodsShouldNotLoadAssembliesFromByteArrays |
Identificador de comprobación |
CA2144 |
Categoría |
Microsoft.Security |
Cambio problemático |
Problemático |
Motivo
Un método transparente carga un ensamblado desde una matriz de bytes utilizando uno de los métodos siguientes:
Descripción de la regla
La revisión de seguridad del código transparente no es tan exhaustiva como la revisión de seguridad del código crítico, porque el código transparente no puede realizar acciones que afectan a la seguridad.Los ensamblados cargados desde una matriz de bytes podrían no distinguirse en el código transparente, y esa matriz de bytes podría contener código importante crítico para la seguridad, que no hace falta auditar.Por consiguiente, el código transparente no debería cargar los ensamblados de una matriz de bytes.
Cómo corregir infracciones
Para corregir una infracción de esta regla, marque el método que está cargando el ensamblado con el atributo SecuritySafeCriticalAttribute o SecurityCriticalAttribute.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
La regla se desencadena en el código siguiente porque un método transparente carga un ensamblado de una matriz de bytes.
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);
}
}
}