Compartilhar via


CA2144: Código Transparent não deve carregar assemblies de matrizes de bytes

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

<strong>Categoria</strong>

Microsoft.Security

Alteração significativa

Quebrando

Causa

Um método transparente carrega um assembly de uma matriz de bytes usando um dos seguintes métodos:

Descrição da regra

A revisão de segurança para o código transparent não é o mais completa, como a revisão de segurança para o código critical, porque o código transparent não pode executar ações de segurança confidenciais. Assemblies carregados a partir de uma matriz de bytes não podem ser observados no código transparente e a matriz de bytes que pode conter código crítico ou seguro mais importante crítico que precisam ser auditadas. Portanto, o código transparent não deve carregar assemblies de uma matriz de bytes.

Como corrigir violações

Para corrigir uma violação desta regra, marcar o método que está carregando o assembly com o SecurityCriticalAttribute ou SecuritySafeCriticalAttribute atributo.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

A regra é acionado no código a seguir porque um método transparente carrega um assembly de uma 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);
        }
    }
}