Vx32
L'environnement d'extension virtuelle VX32 est une machine virtuelle de niveau applicatif implémentée sous la forme d'une bibliothèque en espace utilisateur (libvx32.a) et conçue pour exécuter du code natif x86. Une application peut utiliser VX32 en se liant à cette bibliothèque dans le but de créer un environnement sécurisé et indépendant du système d'exploitation, dans lequel il est possible d'exécuter des greffons non fiables ou d'autres extensions écrites avec n'importe quel langage pouvant compiler en code x86.
Du point de vue du processeur hôte, les greffons tournant dans l'hyperviseur de la machine virtuelle VX32 s'exécutent dans le contexte du processus de l'application elle-même, cependant la librairie VX32 recourt à la recompilation dynamique pour empêcher le code du greffon "invité" d'accéder à de la mémoire ou sauter à des instructions situées en dehors de l'environnement qui lui est assigné. La librairie VX32 redirige vers l'application elle-même tout appel système que le greffon passe, plutôt que vers le système d'exploitation hôte, attribuant ainsi à l'application le contrôle exclusif sur l'API et la sécurité de l'environnement dans lequel le code greffon est exécuté.
VX32 fournit donc un outil pour étendre une application comparable au niveau fonctionnalités à la machine virtuelle Java ou au Common Language Runtime, mais plus simple d'utilisation et permettant d'exécuter du code écrit dans n'importe quel langage, qu'il soit sûr ou non. Son principal inconvénient réside dans la difficulté à le faire tourner sur des processeurs hôtes non x86.
Critique
Plusieurs points négatifs ont été proposés par les critiques de vx32:
- VX32 est intimement lié à l'ensemble d'instructions IA-32, ce qui le rend difficile à utiliser sur des architectures non x86.
- Le mode IA-32e (AMD64) ne peut être utilisé par les applications invitées (l'hôte peut cependant tourner en mode 64bits), à cause de l'utilisation de la segmentation qui est inhérent à la conception de vx32.
Liens externes
- The VX32 Virtual Extension Environment
- Vx32: Lightweight User-level Sandboxing on the x86 - Paper presented at USENIX 2008
- 9vx - A port of Plan 9 from Bell Labs to vx32.