CA2144: El código transparente no debe cargar ensamblados desde matrices de bytes

Elemento Valor
RuleId CA2144
Category Microsoft.Security
Cambio importante Problemático

Causa

Un método transparente carga un ensamblado desde una matriz de bytes mediante uno de los métodos siguientes:

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

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 lo tanto, el código transparente no debe cargar ensamblados desde una matriz de bytes.

Cómo corregir infracciones

Para corregir una infracción de esta regla, marque el método que carga el ensamblado con los atributos SecurityCriticalAttribute o SecuritySafeCriticalAttribute.

Cuándo suprimir las 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 desde 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);
        }
    }
}