使用SecurityPermissionFlag.Execution沙盒的AppDomain有多安全?

时间:2010-03-07 12:03:05

标签: c# appdomain sandbox dynamic-compilation

我有一个使用System.AddIn建立的插件向量,它接受预定义方法的主体,将方法体导入样板代码,生成程序集并执行方法。

程序集引用SystemSystem.Core并使用

进行沙盒处理
var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));

我能找到的唯一例外是可能导致主机崩溃的是堆栈溢出,可以调用任意数量的创造性手段,例如:关闭身体并声明递归方法等...

然后,引用的程序集SystemSystem.Core会显示可能的攻击媒介。

我的问题是:这有多安全以及哪些恶意代码可能会导致主机失效以及防止此类攻击的可能方法?

更新:对于那些熟悉Managed AddIn Framework的人,请将相同的问题应用到AddInSecurityLevel.Internet

1 个答案:

答案 0 :(得分:4)

加载项通常不会轰炸主机。它所要做的就是启动一个线程并让它抛出一个未处理的异常。杰西卡普兰has blogged关于这种失败的可能对策。 Shawn Farkas在this blog post中介绍了沙盒。