.NET AppDomains为不受信任或部分受信任的代码提供了几个级别的隔离。AppDomain沙箱被广泛部署在ASP.NET和Silverlight中,尽管后者的设计目的是将完全不受信任的代码与操作系统的其他部分隔离开来。
有没有已知的基于AppDomain的沙箱越狱行为?在粗略的搜索中,我找不到任何与此相关的安全建议。当然,这并不意味着沙箱是安全的;它可以简单地被很少使用。但这是个开始。
我之所以问这个问题,是因为来自MSDN的关于沙箱是否需要依赖的文档似乎自相矛盾。有一个此页声明“我们建议不要加载和执行未知来源的代码,而不采取其他的安全措施”。还有一个这篇文章,它的整个标题是“如何安全地托管不受信任的外接程序”。
发布于 2015-04-27 22:51:46
是的,有很多例子。
MS14-072是最直接的一种。攻击者可以劫持远程调用,以提高在同一执行上下文中运行的其他AppDomains的权限。几乎所有的直接代码执行错误都作为示例工作,因为一旦您摆脱了类型安全环境,就可以在系统上进行直接API调用,这违反了所有的安全保证。
还有一些应用程序级的错误可以违反AppDomain限制。例如,任意文件写入错误可能导致二级AppDomain加载DLL或其他可执行对象,从而使应用程序的两个部分都受到损害。
至于托管不受信任的代码,请记住,您所链接的后一篇文章是非常古老的。现在,托管任何类型不受信任的代码通常被认为是不安全的。代码访问安全性( Code,CAS)由于其实现效率低、实现难度大而在.NET中已不再受欢迎。如果你绝对需要托管不可信的代码,微软会给出建议,但通常情况下,这更多的是使用你没有安全度量的封闭源代码第三方库,而不是“请上传一个.NET可执行文件,我会运行它”。
https://security.stackexchange.com/questions/87001
复制相似问题