2010-03-07 9 views
8

Ich habe einen Plug-In-Vektor, der mit System.AddIn erstellt wurde, der den Rumpf einer vordefinierten Methode akzeptiert, den Methodenkörper in den Standardcode einprogrammiert, die Assembly generiert und die Methode ausführt.Wie sicher ist eine AppDomain-Sandbox mit SecurityPermissionFlag.Execution?

Die Assembly verweist System und System.Core und Sandkasten mit

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

Die einzige Ausnahme, die ich Bezug auf das möglich finden kann, könnte den Host bringen ist ein Stapelüberlauf, die eine beliebige Anzahl von kreativen Mitteln geltend gemacht werden könnte , z.B Schließen des Körpers und Deklaration einer rekursiven Methode usw. ...

Und dann gibt es die möglichen Angriff Vektoren durch die referenzierten Baugruppen, System und System.Core ausgesetzt.

Meine Frage ist: Wie sicher ist das und was sind Beispiele für bösartigen Code, der möglicherweise den Host und mögliche Wege zur Verhinderung solcher Angriffe herunterbringen könnte?

UPDATE: wenden Sie die gleiche Frage auch an diejenigen, die mit dem Managed AddIn Framework vertraut sind, an AddInSecurityLevel.Internet.

Antwort

4

Es ist normalerweise nicht schwer für ein Add-In den Host zu bombardieren. Alles, was es zu tun hat, ist einen Thread zu starten und eine nicht behandelte Ausnahme auszulösen. Jesse Kaplan has blogged über eine mögliche Gegenmaßnahme für diese Art von Fehlern. Sandboxing wurde von Shawn Farkas in this blog post abgedeckt.