Comment la sécurité est un AppDomain sandbox avec SecurityPermissionFlag.Execution?
-
25-09-2019 - |
Question
I ai un plug-in vector établi en utilisant System.AddIn qui accepte le corps d'une méthode prédéfinie, munges le corps de la méthode dans le code de passe-partout, génère l'assemblage et exécute le procédé.
Les références de montage System
et System.Core
et est sandbox avec
var pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
La seule exception que je peux trouver référence à qui pourrait peut faire tomber l'hôte est un débordement de la pile, ce qui pourrait être invoqué un certain nombre de moyens de création, par exemple fermer le corps et la déclaration d'une méthode récursive etc ...
Et puis il y a les vecteurs d'attaque possibles exposés par les ensembles référencés, System
et System.Core
.
Ma question est: Comment est-ce sécuritaire et quels sont quelques exemples de code malveillant qui pourraient potentiellement faire baisser les moyens d'accueil et possibles pour empêcher de telles attaques
MISE À JOUR:. Aussi pour ceux qui sont familiers avec le cadre AddIn géré, appliquer la même question à AddInSecurityLevel.Internet
La solution
Il est généralement pas difficile pour un complément de bombarder l'hôte. Tout ce qu'il a à faire est de commencer un fil et le faire jeter une exception non gérée. Jesse Kaplan a blogué sur une contre-mesure possible pour ce genre d'échecs. Sandboxing était couvert par Shawn Farkas ce billet de blog .