Ich habe einen Plug-in-Vektor, der mit System.AddIn erstellt wurde, der den Rumpf einer vordefinierten Methode akzeptiert, den Methodenkörper in den Textbausteincode einfügt, die Assembly generiert und die Methode ausführt.
Die Assembly verweist auf System
und System.Core
und ist mit
Die einzige Ausnahme, auf die ich einen Hinweis finden kann, dass der Host einen Stack-Überlauf verursachen könnte, könnte eine beliebige Anzahl von kreativen Mitteln, z. Schließen des Körpers und Deklarieren einer rekursiven Methode etc ...
Und dann gibt es die möglichen Angriffsvektoren, die von den referenzierten Assemblies System
und System.Core
angezeigt werden.
Meine Frage ist: Wie sicher sind das und was sind Beispiele für bösartigen Code, der den Host möglicherweise zum Absturz bringen könnte, und Möglichkeiten, solche Angriffe zu verhindern?
UPDATE: Auch für diejenigen, die mit dem Managed AddIn Framework vertraut sind, wenden Sie dieselbe Frage auf AddInSecurityLevel.Internet
an.
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 hat gebloggt über eine mögliche Gegenmaßnahme für diese Art von Misserfolgen. Sandboxing wurde von Shawn Farkas in diesem Blogpost behandelt.
Tags und Links c# sandbox appdomain dynamic-compilation