Tengo cierta seguridad incorporada en un programa del lado del cliente que descarga un archivo DLL de la web y llama a una función dentro de esa DLL. La DLL tiene un nombre seguro y la función en la DLL usa Assembly.GetCallingAssembly()
para determinar el conjunto de llamadas para que pueda obtener con precisión una ruta de acceso al programa que lo llamó. Desde allí, hacemos un control de comprobación del ensamblaje y verificamos que sea el correcto.Forma de determinar el ensamblaje de llamada verdadera
Tenemos personas que se han adjuntado en modo de confianza total, y pueden falsificar la llamada GetCallingAssembly
para apuntar al ejecutable real, mientras ejecutan una versión modificada de la misma. ¿Hay alguna otra cosa que no sea GetCallingAssembly
que pueda usar para obtener la verdadera persona que llama? Algunos callstack o algo que puede proporcionar el ejecutable real desde GetCallingAssembly
parece ser fácilmente falsificado.
Prueba el método 'GetEntryAssembly' vez – hazzik
Tenga en cuenta que, si permite una confianza total, también pueden parchar GetEntryAssembly. Si permite una confianza total, también pueden parchear la DLL descargada y deshabilitar la comprobación de hash. –