使用 SecurityPermissionFlag.Execution 沙箱化的 AppDomain 有多安全?
-
25-09-2019 - |
题
我有一个使用 System.AddIn 建立的插件向量,它接受预定义方法的主体,将方法主体合并到样板代码中,生成程序集并执行该方法。
装配参考 System
和 System.Core
并且是沙箱化的
var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
我能找到的唯一可能导致主机瘫痪的例外是堆栈溢出,它可以被调用任意数量的创造性方法,例如关闭主体并声明递归方法等......
然后是引用的程序集暴露的可能的攻击向量, System
和 System.Core
.
我的问题是:这有多安全?有哪些可能导致主机瘫痪的恶意代码示例以及防止此类攻击的可能方法?
更新:对于那些熟悉托管插件框架的人来说,也可以将同样的问题应用于 AddInSecurityLevel.Internet
.
不隶属于 StackOverflow