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

Sky*_*ers 8 c# sandbox dynamic-compilation appdomain

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

程序集引用SystemSystem.Core沙箱

var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
Run Code Online (Sandbox Code Playgroud)

我可以找到唯一的例外参考可能会导致主机堆栈溢出,可以调用任意数量的创造性手段,例如关闭正文并声明递归方法等...

然后有被引用的程序集暴露的可能的攻击向量,SystemSystem.Core.

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

更新:对于那些熟悉Managed AddIn Framework的人,也应用同样的问题AddInSecurityLevel.Internet.

Han*_*ant 4

加载项轰炸主机通常并不困难。它所要做的就是启动一个线程并使其抛出一个未处理的异常。杰西·卡普兰(Jesse Kaplan)在博客中讨论了针对此类失败的可能对策。Shawn Farkas 在这篇博客文章中介绍了沙盒。