Un environnement virtualisé a besoin d'utiliser les ressources physiques de notre machine pour fonctionner. Alors que l'accès à ces ressources physiques se fait d'habitude directement par la machine virtuelle, l'hyperviseur est contraint parfois à prendre la main sur la machine virtuelle, et ce en utilisant la fonction VM_exit. Cependant, cette caractéristique entraîne une latence lors de l'utilisation de certaines instructions. Les logiciels malveillants (malwares) peuvent alors utiliser cette particularité en mesurant ce délai pour détecter leur exécution dans une machine virtuelle. Dans cet article, nous expliquons la fonction VM_exit, son utilisation par les malwares et nous proposons un mécanisme de détection de cette dernière.
1. Introduction
1.1 Les VM_Exit : idée générale
Afin d'être le plus performant, un système virtualisé accède directement aux ressources physiques de notre machine et notamment à notre processeur (CPU). Néanmoins, certaines instructions font exception, et le résultat de ces instructions ne peut être renvoyé directement depuis le CPU vers la machine virtuelle (Virtual Machine : VM) pour des raisons de correspondance entre les ressources virtuelles accessibles depuis la VM, et les ressources physiques de la machine. Dans ce cas particulier d'instructions, l'hyperviseur reprend la main sur la VM et va calculer un résultat « logique » qu'il associe à chacune des instructions émises par la VM. Cette transition de VM à hyperviseur se fait moyennant la fonction VM_exit. Mais ce changement d'état a un coût et exige des calculs supplémentaires : une certaine latence apparaît.
1.2 Le Sandboxing : principe et utilité
Durant ces dernières années, les...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première