Sécurité et génération de code immédiate

Certaines bibliothèques fonctionnent en générant du code et en l'exécutant afin d'effectuer certaines opérations pour l'appelant. Le problème de base est la génération de code pour le compte de code d'un niveau de confiance moindre et son exécution à un niveau de confiance supérieur. Ce problème se complique lorsque l'appelant peut influencer la génération du code, vous devez donc vous assurer que seul du code que vous estimez sécurisé est généré.

Vous devez toujours savoir précisément quel code vous générez. Cela signifie que vous devez avoir un contrôle strict sur toutes les valeurs que vous recevez d'un utilisateur, qu'il s'agisse de chaînes entourées de guillemets (qui devraient être échappées car elles ne peuvent pas inclure d'éléments de code inattendus), d'identificateurs (dont la validité doit être vérifiée) ou tout autre élément. Les identificateurs peuvent être dangereux car vous pouvez modifier un assembly compilé pour que ses identificateurs contiennent des caractères étranges qui risquent de le bloquer (bien qu'il s'agisse rarement d'une faille en matière de sécurité).

Il est recommandé de générer votre code à l'aide de Reflection Emit qui vous aide souvent à éviter la plupart de ces problèmes.

Lors de la compilation du code, examinez s'il est possible pour un programme nuisible de le modifier. Existe-t-il un laps de temps durant lequel du code nuisible peut changer du code source sur le disque avant sa lecture par le compilateur ou avant le chargement par votre code du fichier .dll ? Si c'est le cas, vous devez protéger le répertoire contenant ces fichiers à l'aide de la sécurité d'accès du code ou d'une liste de contrôle d'accès dans le fichier système, selon le cas.

Si un appelant peut influencer le code généré au point de provoquer une erreur de compilation, le risque dans ce cas d'une faille en matière de sécurité est possible.

Exécutez le code généré avec les plus petits paramètres d'autorisation possibles à l'aide de PermitOnly ou de Deny.

Voir aussi

Autres ressources

Indications de codage sécurisé