2010-03-07 46 views
8

我有一個使用System.AddIn建立的插件向量,它接受預定義方法的主體,將方法主體轉換爲樣板代碼,生成程序集並執行該方法。使用SecurityPermissionFlag.Execution進行沙盒處理的AppDomain的安全性如何?

集引用SystemSystem.Core,並且沙盒與

var pset = new PermissionSet(PermissionState.None); 
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); 

唯一的例外,我可以找到參考,可能有可能搞垮主機是一個堆棧溢出,這可能會被調用任意數量的創作手段,例如關閉主體並聲明遞歸方法等等。

然後有被引用的程序集SystemSystem.Core暴露的可能的攻擊媒介。

我的問題是:這是多麼的安全,有什麼樣的惡意代碼的例子可能會降低主機和可能的方法來防止這種攻擊?

更新:也適用於那些熟悉託管AddIn框架的人,將相同的問題應用於AddInSecurityLevel.Internet

回答

4

通常情況下,加載項不會讓主機彈出。它所要做的就是啓動一個線程並使其拋出未處理的異常。傑西卡普蘭has blogged關於這種失敗的可能對策。 Shawn Farkas在this blog post上覆蓋了沙盒。