Partager via


CA2144 : Le code transparent ne doit pas charger d'assemblys depuis des tableaux d'octets

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

Catégorie

Microsoft.Security

Modification avec rupture

Oui

Cause

Une méthode transparente charge un assembly à partir d'un tableau d'octets à l'aide de l'une des méthodes suivantes :

Description de la règle

La révision de sécurité du code transparent n'est pas aussi complète que la révision de sécurité du code critique, car le code transparent ne peut pas exécuter d'actions relatives à la sécurité. Les assemblys chargés à partir d'un tableau d'octets peuvent ne pas être remarqués dans du code transparent, et ce tableau d'octets peut contenir du code critique, voire critique de sécurité, qui doit être audité. Par conséquent, le code transparent ne doit pas charger d'assemblys à partir d'un tableau d'octets.

Comment corriger les violations

Pour résoudre une violation de cette règle, marquez la méthode qui charge l'assembly avec l'attribut SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

La règle se déclenche sur le code suivant car une méthode transparente charge un assembly à partir d'un tableau d'octets.

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