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