2010-03-07 18 views
8

J'ai un vecteur de plug-in établi en utilisant System.AddIn qui accepte le corps d'une méthode prédéfinie, fournit le corps de la méthode dans le code standard, génère l'assemblage et exécute la méthode.Quelle est la sécurité d'un sandbox AppDomain avec SecurityPermissionFlag.Execution?

L'assemblage référence 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 créatifs , par exemple fermeture du corps et déclaration d'une méthode récursive etc ...

Et puis il y a les vecteurs d'attaque possibles exposés par les assemblages référencés, System et System.Core.

Ma question est la suivante: dans quelle mesure est-ce sécuritaire et quels sont les exemples de codes malveillants qui pourraient potentiellement faire tomber l'hôte et les moyens possibles de prévenir de telles attaques? MISE À JOUR: également pour ceux qui sont familiers avec le cadre d'ajout managé, appliquez la même question à AddInSecurityLevel.Internet.

Répondre

4

Il n'est généralement pas difficile pour un complément de bombarder l'hôte. Tout ce qu'il a à faire est de démarrer un thread et le faire jeter une exception non gérée. Jesse Kaplan has blogged sur une contre-mesure possible pour ce genre d'échecs. Sandboxing a été couvert par Shawn Farkas au this blog post.