CA2144: o código transparente não deve carregar assemblies a partir de matrizes de bytes
TypeName |
TransparentMethodsShouldNotLoadAssembliesFromByteArrays |
CheckId |
CA2144 |
Categoria |
Microsoft.Security |
Alteração Significativa |
Quebra |
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 transparente não é tão completa quanto a revisão de segurança para o código crítico, porque o código transparente não pode executar ações confidenciais de segurança.Os assemblies carregados de uma matriz de bytes não podem ser anotados no código transparente, e a matriz de bytes pode conter código crítico ou, mais importante seguro- crítico, que precisa ser auditado.Em virtude disso, o código transparente não deve carregar os assemblies SMO uma matriz de bytes.
Como Corrigir Violações
Para corrigir uma violação desta regra, marque o método que está carregando o assembly com SecurityCriticalAttribute ou atributo de SecuritySafeCriticalAttribute .
Quando Suprimir Alertas
Não elimine um alerta desta regra.
Exemplo
Aciona de regra no seguinte código 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);
}
}
}