一个使用SecurityPermissionFlag.Execution进行沙箱隔离的AppDomain有多安全?

8
我有一个使用System.AddIn建立的插件向量,它接受预定义方法的主体,将方法主体混合成样板代码,生成程序集并执行该方法。
程序集引用System和System.Core,并进行沙盒处理。
var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));

我唯一能找到的可能会使主机崩溃的例外是堆栈溢出,可以通过任意数量的创造性手段来调用,例如关闭body并声明递归方法等等...
此外,引用的程序集System和System.Core也暴露了可能的攻击向量。
我的问题是:这有多安全?有哪些恶意代码的例子可能会导致主机崩溃,以及可能防止此类攻击的方法是什么?
更新:对于熟悉托管AddIn框架的人,请将同样的问题应用于AddInSecurityLevel.Internet。
1个回答

4
通常情况下,插件轻易就能够炸毁主机。只需要启动一个线程并让其抛出未处理的异常即可。Jesse Kaplan在他的博客文章中提到了一种可能的应对措施来解决此类故障。沙箱技术在Shawn Farkas的博客文章中也有介绍。请参见这篇博客这篇博客

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接