c# - puede - ¿Qué causa que una interfaz(o ensamblaje?) Se convierta en una marca de seguridad crítica?
que es una interfaz en programacion (0)
Fondo
Tengo una clase - MobileLogging
- que implementa la interfaz IMvxTrace de MvvmCross (de la referencia Cirrious.MvvmCross.Droid, packages/MvvmCross.HotTuna.CrossCore.3.5.0/lib/MonoAndroid/Cirrious.CrossCore.dll
):
namespace Cirrious.CrossCore.Platform
{
public interface IMvxTrace
{
void Trace(MvxTraceLevel level, string tag, Func<string> message);
void Trace(MvxTraceLevel level, string tag, string message);
void Trace(MvxTraceLevel level, string tag, string message, params object[] args);
}
}
y desde una perspectiva de trabajo de código todo está bien. Sin embargo, al elegir "Ejecutar análisis de código en la solución" produce muchas advertencias de seguridad:
- El código transparente CA2140 no debe hacer referencia a elementos críticos de seguridad
- CA2151 Los campos con tipos críticos deben ser críticos para la seguridad.
- CA2146 Los tipos deben ser al menos tan críticos como sus tipos de bases e interfaces
- CA2123 Las demandas de enlace de anulación deberían ser idénticas a la base
- CA2134 Los métodos deben mantener una transparencia consistente al anular los métodos básicos
La ejecución de SecAnnotate.exe produce TransparencyAnnotations.xml que contiene, entre otras cosas
<type name="<...mynamespace...>.MobileLogging">
<annotations>
<critical>
<rule name="TypesMustBeAtLeastAsCriticalAsBaseTypes">
<reason pass="1">Transparent or safe-critical type ''MobileLogging'' derives from
critical type ''IMvxTrace'' in violation of the transparency inheritance rules.
''MobileLogging'' must be critical to derive from a critical type or implement a
critical interface.</reason>
<reason pass="1">Transparent or safe-critical type ''MobileLogging'' derives from
critical type ''IMobileLogging'' in violation of the transparency inheritance
rules. ''MobileLogging'' must be critical to derive from a critical type or
implement a critical interface.</reason>
</rule>
</critical>
</annotations>
Al principio simplemente asumí que está bien, se supone que las funciones de registro posiblemente, en algún momento, posiblemente invoquen alguna función de registro nativa (no administrada), por lo que no parece estar muy lejos de que esto esté marcado como crítico para la seguridad. Pero ahora estoy empezando a pensar que el hecho de que IMvxTrace se considere de seguridad crítica es incorrecto.
En primer lugar porque cuando se busca en el código base de MvvmCross no hay nada que indique ninguna especificación de nivel de seguridad ni nada, de hecho, la búsqueda de la cadena "secur" solo concuerda con dos líneas
SecureTextEntry = isPassword,
using System.Security.Cryptography;
Y buscar "IMvxTrace critical" en google devuelve solo 5 coincidencias, ninguna de las cuales es relevante para mí.
Pregunta
Entonces, suponiendo que IMvxTrace se haya marcado erróneamente como de seguridad crítica, ¿cuáles son las causas posibles de esto y cómo lo soluciono?