C# MAF安全:如何防止;“中间人”;攻击

C# MAF安全:如何防止;“中间人”;攻击,c#,.net,security,man-in-the-middle,maf,C#,.net,Security,Man In The Middle,Maf,我使用MAF为用户/客户提供增强我们软件的可能性。外接程序将以有限的权限运行,并且可能是我们以及客户的潜在不可信代码,以防他们从第三方开发人员处购买外接程序 在我们的例子中,主机和主机端适配器在主AppDomain中以完全权限运行,外接程序以及外接程序端适配器几乎没有权限运行 当我通过AddInStore.FindAddIns获取外接程序令牌时,我只能验证外接程序集本身是否来自它应该来自的供应商。如果攻击者交换外接程序集,那么我们将发现这一点,并且不会激活该程序集。但无论如何,由于它几乎没有权限

我使用MAF为用户/客户提供增强我们软件的可能性。外接程序将以有限的权限运行,并且可能是我们以及客户的潜在不可信代码,以防他们从第三方开发人员处购买外接程序

在我们的例子中,主机和主机端适配器在主AppDomain中以完全权限运行,外接程序以及外接程序端适配器几乎没有权限运行

当我通过AddInStore.FindAddIns获取外接程序令牌时,我只能验证外接程序集本身是否来自它应该来自的供应商。如果攻击者交换外接程序集,那么我们将发现这一点,并且不会激活该程序集。但无论如何,由于它几乎没有权限运行,攻击者无法真正伤害应用程序和环境(主机、intranet等)

但也有可能的是,攻击者会替换主机端适配器部件。攻击者只需将新程序集放置在正确的文件夹中即可。由于这是以完全权限运行的,攻击者代码可能会真正危害应用程序和环境。当攻击者处于主机和外接程序之间(或多或少是中间人)时,它还可以更改两者之间交换的数据

当我在调试器中通过签入外接程序标记调试代码时,我可以看到指向不同程序集的所有路径,外接程序存储用于构建管道:

不幸的是,有关所获取程序集的重要信息是私有的,我无法访问它们


是否有办法访问此信息?

防止这种情况的一种方法是不要在每次启动应用程序时重新构建管道。如果管道DLL与DLL不同,并输入
管道段.Store
,则不会加载DLL。

您好,John,但我最初如何知道管道包含正确的DLL?我相信您可以生成
管道段.Store
,作为构建过程的一部分,因此,当您发货时,您知道DLL是正确的。不幸的是,MAF并没有太多好的指导,所以我们一直在努力解决这类问题。