CA2144: Transparenter Code darf keine Assemblys aus Bytearrays laden
TypeName |
TransparentMethodsShouldNotLoadAssembliesFromByteArrays |
CheckId |
CA2144 |
Kategorie |
Microsoft.Security |
Unterbrechende Änderung |
Breaking |
Ursache
Eine transparente Methode lädt eine Assembly aus einem Bytearray mit einer der folgenden Methoden:
Regelbeschreibung
Die Sicherheitsüberprüfung für transparenten Code ist nicht so umfassend wie die Sicherheitsüberprüfung für wichtigen Code, da in transparentem Code keine sicherheitsrelevanten Aktionen ausgeführt werden können. Aus einem Bytearray geladene Assemblys werden in transparentem Code eventuell nicht erkannt, und dieses Bytearray könnte wichtigen oder sicherheitsgeschützten Code enthalten, der überwacht werden muss. Daher dürfen mit transparentem Code keine Assemblys aus einem Bytearray geladen werden.
Behandeln von Verstößen
Um eine Verletzung dieser Regel zu korrigieren, markieren Sie die Methode, mit der die Assembly geladen wird, mit dem SecurityCriticalAttribute-Attribut oder dem SecuritySafeCriticalAttribute-Attribut.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Die Regel wird für den folgenden Code ausgelöst, da eine transparente Methode eine Assembly aus einem Bytearray lädt:
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);
}
}
}