我正在使用MAF为用户/客户提供增强软件的可能性。加载项将以有限的权限运行,对于我们以及客户,如果他们从第三方开发人员处购买加载项,则可能是不受信任的代码。
在我们的案例中,主机和主机端适配器在主AppDomain中运行,具有完全权限和加载项以及加载项侧适配器,几乎没有权限运行。
当我通过AddInStore.FindAddIns获取加载项令牌时,我只能验证加载项程序集本身是否来自它应该是的供应商。如果攻击者交换了加载项程序集,那么我们将发现该程序集并且不会激活该程序集。但无论如何,由于几乎没有权限运行,攻击者无法真正损害应用程序和环境(主机,内部网等)。
但也有可能的是,攻击者会替换主机端适配器程序集。攻击者只需将新程序集放在正确的文件夹中即可。由于这是以完全权限运行的,因此攻击者代码可能会严重损害应用程序和环境。由于攻击者在主机和加载项之间(或多或少是中间人),它也可以改变两者之间交换的数据。
当我调试我的代码时,在调试器中检查加载项令牌,我可以看到不同程序集的所有路径,加载项存储用于构建管道:
不幸的是,有关大会的重要信息是私密的,我无法访问它们。
是否有解决方法来访问此信息?
答案 0 :(得分:0)
防止这种情况的一种方法是每次启动应用程序时都不重建管道。如果管道DLL与PipelineSegments.Store
中的DLL和键不同,则不会加载DLL。