Quanto è sicuro è un dominio di applicazione in modalità sandbox con SecurityPermissionFlag.Execution?
-
25-09-2019 - |
Domanda
Ho un plug-in vettoriale stabilita utilizzando System.AddIn che accetta il corpo di un metodo predefinito, munges il corpo del metodo in codice standard, genera l'assemblaggio ed esegue il metodo.
La riferimenti di montaggio System
e System.Core
ed è in modalità sandbox con
var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
L'unica eccezione che può trovare riferimento che poteva possibile abbattere l'host è un overflow dello stack, che potrebbe essere invocata qualsiasi numero di mezzi creativi, ad esempio chiudendo il corpo e dichiarando un metodo ricorsivo ecc ...
E poi ci sono i possibili vettori di attacco esposti dal assemblee di riferimento, System
e System.Core
.
La mia domanda è:? Quanto è sicuro questo e quali sono alcuni esempi di codice dannoso in grado di abbattere i modi di accoglienza e possibili per prevenire tali attacchi
UPDATE:. Anche per chi ha familiarità con l'aggiungere quadro gestito, si applica la stessa domanda a AddInSecurityLevel.Internet
Soluzione
E 'di solito non è difficile per un componente aggiuntivo per bombardare l'host. Tutto ciò che deve fare è avviare una discussione e rendere un'eccezione non gestita. Jesse Kaplan ha bloggato su un possibile contromisura per questo tipo di errori. Sandboxing era coperto da Shawn Farkas in questo post del blog .