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

Élément Valeur
ID de la règle CA2144
Category Microsoft.Security
Modification avec rupture Rupture

Cause

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

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

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