Brevet FR2907242A1 — publié le 20080418

DOMAINE TECHNIQUE Des modes de réalisation se rapportent aux domaines du traitement des données et de la sécurité de l'information, en particulier, à la surveillance de la forme d'exécution d'un traitement cible pour déterminer si le traitement s'exécute d'une manière escomptée. CONTEXTE Les virus et les vers modernes sont une menace réelle pour la sécurité des systèmes de traitement de l'information. Des systèmes de détection d'intrusion basés sur l'hôte fournissent une solution efficace pour détecter les vers une fois qu'ils ont pénétré les défenses du système. Cependant, de nombreux vers sont capables de falsifier et de désactiver les systèmes de détection d'intrusion. Un certain nombre de solutions ont été proposées pour ce problème, en proposant des méthodes pour s'assurer que les systèmes de détection d'intrusion fonctionnent correctement. Par exemple, on connaît des services d'intégrité de système qui exigent que des agents logiciels, comme des systèmes de détection d'intrusion, fournissent une preuve non simulable de fonctionnement correct. Ces services, cependant, exigent des modifications à la programmation des instructions pour l'agent surveillé. De nombreux vendeurs de logiciels sont réticents pour faire de telles modifications. Aussi, un grand nombre d'agents logiciels existants, créés avant l'avènement des services d'intégrité de système, peuvent être incapables de fournir la preuve non simulable exigée pour cette technique. La mesure de l'agent hôte fournit une solution supplémentaire au problème des vers et virus désactivant les systèmes de détection d'intrusion. La mesure de l'agent hôte permet à un traitement de s'exécuter dans un environnement d'exécution indépendant pour vérifier périodiquement qu'un agent logiciel surveillé, comme un système de détection d'intrusion, existe dans la mémoire de 2907242 2 l'hôte sous une forme non modifiée. Cette méthode, cependant, ne fournit pas de protection contre les attaques si le virus ou le ver ne modifie pas réellement l'agent surveillé, mais désactive simplement l'agent en falsifiant 5 le planificateur du système d'exploitation. BRÈVE DESCRIPTION DES DESSINS On va décrire des modes de réalisation de la présente invention à titre d'exemples de modes de réalisation, mais pas de limitation, représentés dans les dessins annexés 10 dans lesquels les mêmes repères désignent des éléments similaires, et dans lesquels : les figures la et lb représentent des vues d'ensemble de divers modes de réalisation de la présente invention, surveillant une forme d'exécution d'un traitement cible 15 pour déterminer si le traitement s'exécute d'une manière escomptée ; la figure 2 représente un organigramme d'opérations choisies des procédés de divers modes de réalisation de la présente invention ; et 20 la figure 3 représente un exemple de système informatique approprié pour utilisation pour mettre en pratique les divers modes de réalisation de la présente invention. DESCRIPTION DÉTAILLÉE DE MODES DE RÉALISATION EXPLICATIFS 25 Des modes explicatifs de réalisation de la présente invention comprennent, mais sans y être limités, des procédés et des dispositifs pour observer, à l'aide d'un gestionnaire de machines virtuelles d'un dispositif physique, l'exécution d'un traitement cible d'une machine 30 virtuelle du dispositif physique, incluant des adresses virtuelles de la machine virtuelle auxquelles il est fait référence pendant l'exécution. Le gestionnaire de machines virtuelles détermine en outre si le traitement cible s'exécute d'une manière escomptée en se basant au moins en 35 partie sur les références à des adresses virtuelles 2907242 3 observées et sur les références à des adresses virtuelles escomptées. On va décrire divers aspects des modes explicatifs de réalisation en utilisant les termes communément employés 5 par ceux qui sont expérimentés dans l'art pour transmettre la substance de leurs travaux à d'autres personnes expérimentées dans l'art. Cependant, il apparaîtra à ceux qui sont expérimentés dans l'art que d'autres modes de réalisation peuvent être mis en pratique avec seulement 10 certains des aspects décrits. À des fins d'explication, des valeurs, des matières et des configurations spécifiques, sont présentées afin de donner une compréhension approfondie des modes explicatifs de réalisation. Néanmoins, il apparaîtra à celui qui est expérimenté dans 15 l'art que d'autres modes de réalisation peuvent être mis en pratique sans les détails spécifiques. Dans d'autres cas, des particularités bien connues sont omises ou simplifiées afin de ne pas obscurcir les modes explicatifs de réalisation. 20 En outre, diverses opérations seront décrites sous la forme de plusieurs opérations distinctes, à tour de rôle, d'une manière qui est la plus favorable à la compréhension des modes explicatifs de réalisation ; cependant, l'ordre de description ne doit pas être considéré comme impliquant 25 que ces opérations dépendent nécessairement de l'ordre. En particulier, ces opérations n'ont pas besoin d'être effectuées dans l'ordre de présentation. L'expression "dans un mode de réalisation" est utilisée de façon répétée. L'expression d'une manière 30 générale ne se réfère pas au même mode de réalisation ; cependant, ce peut être le cas. Les termes "comprenant," "ayant" et "incluant" sont synonymes, à moins que le contexte n'en décide autrement. L'expression "A/B" signifie "A ou B". L'expression "A et/ou B" signifie "(A), (B), ou 35 (A et B)". L'expression "au moins l'un de A, B et C" signifie "(A), (B), (C), (A et B), (A et C), (B et C) ou 2907242 4 (A, B et C)". L'expression "(A) B" signifie "(B) ou (AB)", c'est-à-dire que A est facultatif. Les figures la et lb représentent des vues d'ensemble de différents modes de réalisation de la présente 5 invention, surveillant une forme d'exécution d'un traitement cible pour déterminer si le traitement s'exécute d'une manière escomptée. Comme représenté, un moteur 120 de vérification du gestionnaire 106 de machines virtuelles du dispositif 102 de traitement de l'information (apte à gérer 10 des machines virtuelles du dispositif 102 de traitement de l'information) peut en outre être apte à comparer des adresses virtuelles auxquelles se réfère un traitement cible 110 d'une machine virtuelle 104 du dispositif 102 de traitement de l'information à des adresses virtuelles 15 auxquelles on escompte que se réfère le traitement cible 110. La comparaison peut impliquer la production de statistiques par le moteur 120 de vérification et la comparaison des statistiques à des valeurs de seuil pour faciliter la détermination de ce que le traitement cible 20 110 est, ou non, compromis. L'adresse virtuelle à laquelle se réfère en réalité le traitement cible peut être déterminée par l'observation des adresses virtuelles auxquelles on se réfère pendant l'exécution. Dans un mode de réalisation, représenté à la figure la, on peut observer 25 les références à des adresses virtuelles en modifiant des tables 116 de pages actives du gestionnaire 106 de machines virtuelles pour entraîner une erreur de page pour le gestionnaire 114 de mémoire à chaque fois que l'on se réfère à l'une des adresses virtuelles escomptées. Dans un 30 autre mode de réalisation, représenté par la figure lb, un moteur 118 d'instrumentation de code du gestionnaire 106 de machines virtuelles peut modifier le code du traitement cible 110 dans la mémoire de façon que lorsque le traitement cible 110 se réfère à l'une des adresses 35 virtuelles escomptées, le traitement cible 110 puisse émettre une instruction d'appel vers le moteur 118 2907242 5 d'instrumentation de code, lequel peut intercepter de tels appels. Dans divers modes de réalisation, le dispositif 102 de traitement de l'information, en plus de la machine 5 virtuelle 104 et du gestionnaire 106 de machines virtuelles, peut comprendre d'autres machines virtuelles supplémentaires. La machine virtuelle 104 peut comprendre des tables 108 de pages d'invité mémorisant une adresse de mémoire linéaire pour des transpositions d'adresses 10 physiques d'invité, et un certain nombre de traitements, comme le traitement cible 110. Dans divers modes de réalisation, le traitement cible 110 peut être un traitement crucial, comme un traitement de détection d'intrusion. Le gestionnaire 106 de machines virtuelles 15 peut comprendre un certain nombre de composants facilitant la gestion des machines virtuelles du dispositif 102 de traitement de l'information. Parmi ces composants il peut y avoir un module 112 de mesure d'intégrité apte à vérifier l'intégrité du traitement cible tel qu'il est chargé en 20 mémoire et à fournir au gestionnaire 116 de mémoire et/ou au moteur 118 d'instrumentation de code, de même qu'au moteur 120 de vérification, un manifeste d'intégrité spécifiant les références à des adresses virtuelles escomptées. De plus, les composants du gestionnaire 106 de 25 machines virtuelles peuvent comprendre en outre un gestionnaire 114 de mémoire, des tables 116 de pages actives, un moteur 120 de vérification, et, dans les modes de réalisation représentés par la figure lb, un moteur 118 d'instrumentation de code. 30 Comme on le voit, le dispositif 102 de traitement de l'information peut être n'importe quel système de traitement de l'information connu dans l'art avec une unité centrale de traitement (CPU) à monoprocesseur ou multiprocesseur ou cœur de processeur. Le dispositif 102 de 35 traitement de l'information peut être un ordinateur personnel (PC), un poste de travail, un serveur, un 2907242 6 routeur, un grand système, un ordinateur modulaire dans un serveur plat ou serveur ultradense, un assistant personnel numérique (PDA), un centre de divertissement, un boîtier externe ou un dispositif mobile. Le dispositif 102 de 5 traitement de l'information peut être capable de mettre en oeuvre une pluralité de systèmes d'exploitation d'une pluralité de machines virtuelles, comme la machine virtuelle 104, et d'un gestionnaire 106 de machines virtuelles en utilisant des techniques de virtualisation. 10 Si le système 102 de traitement de l'information est un système à multiprocesseur ou à coeur de multiprocesseur, chaque machine virtuelle/gestionnaire de machines virtuelles du dispositif 102 de traitement de l'information peut être raccordé(e) à un processeur ou à un coeur de 15 processeur spécialisé pour cette machine virtuelle/ce gestionnaire de machines virtuelles. Dans un dispositif 102 de traitement de l'information à monoprocesseur ou à coeur de monoprocesseur, la pluralité des machines virtuelles et du gestionnaire 106 de machines virtuelles peut partager le 20 monoprocesseur ou le coeur de processeur. La figure 3 représente un exemple de dispositif 102 de traitement de l'information à mono/multiprocesseur ou à coeur de processeur, et il est décrit plus en détail ci-dessous. Ci-après, y compris dans les revendications, processeur et 25 coeur de processeur seront utilisés de façon interchangeable, chaque terme incluant l'autre. Comme on l'a montré et évoqué précédemment, le dispositif 102 de traitement de l'information peut comprendre une pluralité de machines virtuelles, comme la 30 machine virtuelle 104. La machine virtuelle 104, excepté en ce qui concerne les enseignements des modes de réalisation de la présente invention, peut être de n'importe quelle sorte de machine virtuelle. La machine virtuelle 104 peut être un environnement d'exploitation autonome qui se 35 comporte comme si c'était un système informatique distinct. À un système externe raccordé au dispositif 102 de 2907242 7 traitement de l'information à travers une structure de réseau, la machine virtuelle 104 peut apparaître comme étant un dispositif informatique distinct. La machine virtuelle 104 peut aussi avoir un système d'exploitation 5 capable de gérer des traitements multiples, comme le traitement cible 110, peut comprendre des structures de données pour la transposition d'adresses de mémoire linéaire auxquelles on se réfère en adresses physiques d'invité comme les tables 108 de pages, et peut avoir un 10 espace de mémoire protégé qui appartient fonctionnellement exclusivement à la machine virtuelle 104. Les machines virtuelles et techniques de virtualisation appropriées comprennent, mais sans y être limitées, celles disponibles chez Microsoft Corporation de Redmond, WA, VMware, Inc. de 15 Pal() Alto, Californie, et chez XenSource de Cambridge, Royaume-Uni. Dans certains modes de réalisation, le dispositif 102 de traitement de l'information peut comprendre un gestionnaire 106 de machines virtuelles (ci-après, VMM pour 20 "Virtual Machine Manager") qui peut avoir un système d'exploitation (OS) (non représenté), un module 112 de mesure d'intégrité (IMM pour "Integrity Measurement Module"), un gestionnaire 114 de mémoire, des tables 116 de pages actives, un moteur 120 de vérification et, dans 25 certains modes de réalisation, comme ceux représentés à la figure lb, un moteur 118 d'instrumentation de code. Le VMM 106 peut comprendre une partition de service du dispositif 102 de traitement de l'information, la gestion des ressources réelles en matériel du dispositif 102, y compris 30 les pages de mémoire, telle que la page de mémoire du traitement 110, et la coordination de l'utilisation des ressources entre les machines virtuelles du dispositif 102 de traitement de l'information. Le VMM 106 peut être mis en œuvre par le même processeur que la machine virtuelle 104, 35 si le dispositif 102 de traitement de l'information est un dispositif monoprocesseur, ou bien un peu être mis en œuvre 2907242 8 par un processeur différent, du dispositif 102 de traitement de l'information (non représenté). Comme représenté, la machine virtuelle 104 peut comprendre des tables 108 de pages d'invité. Les tables 108 5 de pages d'invité peuvent être utilisées par le processeur de la machine virtuelle 104 pour consulter l'adresse de mémoire physique d'invité associée à une adresse de mémoire linéaire à laquelle se réfère une instruction que le processeur est en train d'exécuter. Toutefois, les tables 10 108 de pages d'invité peuvent ne pas comprendre les transpositions entre l'adresse physique d'invité et l'adresse physique d'hôte de la page de mémoire à laquelle tente d'accéder l'instruction en cours de traitement. Comme décrit davantage ci-dessous, de telles transpositions 15 peuvent être mémorisées dans les tables 116 de pages actives du VMM 106. Par conséquent, bien que ces tables 108 de pages d'invité soient créées par la machine virtuelle 104 pour faciliter la traduction d'adresses pour le traitement cible 110, les tables 108 de pages d'invité ne 20 sont pas utilisées par la machine virtuelle 104 pour la traduction complète d'adresses. Les tables de pages d'invité sont bien connues dans l'art et, par conséquent, on ne les décrira pas davantage. Dans divers modes de réalisation, la machine virtuelle 25 104 peut contenir un certain nombre de traitements, comme le traitement cible 110. Le traitement cible 110 peut être un traitement de détection d'intrusion basé sur l'hôte capable de détecter des exploitations de la faiblesse des sécurités informatiques comme des vers et des virus. Des 30 exemples de traitements de détection d'intrusion comprennent ceux proposés par McAfee de Santa Clara, Californie et par Symantec de Cupertino, Californie. Le traitement cible 110 peut être chargé dans la mémoire du dispositif 102 de traitement de l'information et peut se 35 référer à un certain nombre d'adresses virtuelles de son espace de mémoire pendant l'exécution. On peut se référer à 2907242 9 des adresses virtuelles avec une certaine fréquence et dans un certain ordre pendant l'exécution de routine du traitement cible 110. Dans certains modes de réalisation, comme ceux représentés à la figure lb, les instructions du 5 traitement cible 110 peuvent être modifiées en mémoire à l'aide d'un moteur 118 d'instrumentation de code pour faire que le traitement cible 110 émette des appels à la machine virtuelle (VMCALL pour "Virtual Machine Cali") vers le moteur 118 d'instrumentation de code du VMM 106. Après i0 émission des VMCALL, le moteur 118 d'instrumentation de code peut remettre les instructions du traitement cible 110 dans leur état d'origine. Dans un autre mode de réalisation, non représenté, plutôt que de se référer à des adresses virtuelles pour des accès en mémoire, le 15 traitement cible 110 peut se référer à des adresses virtuelles de registres transposés en mémoire du dispositif 102 de traitement de l'information. Dans encore un autre mode de réalisation, le traitement cible 110 peut se référer à une adresse virtuelle d'un autre traitement, en 20 exécutant un appel de ce traitement au niveau de l'adresse virtuelle. Comme on le voit, le VMM 106 peut comprendre un module 112 de mesure d'intégrité (IMM). Dans certains modes de réalisation, l'IMM 112 est capable de mesurer et de 25 vérifier l'intégrité du traitement cible 110 tel qu'il est chargé en mémoire. Dans la mesure et la vérification du traitement cible 110, l'IMM 112 peut se fier à un manifeste d'intégrité fourni à l'IMM par, par exemple, un administrateur. Le manifeste d'intégrité peut décrire le 30 traitement cible 110 tel qu'il est chargé en mémoire, peut comprendre de l'information statique au sujet du traitement cible 110, comme le contenu de diverses sections du traitement cible 110, et peut décrire un profil d'exécution statistique du traitement cible 110 capable d'identifier 35 les adresses virtuelles auxquelles on escompte que le traitement cible 110 se réfère, de même que la fréquence 2907242 10 avec laquelle on escompte que le traitement cible 110 se réfère à chaque adresse. Dans un mode de réalisation, le profil d'exécution statistique du manifeste d'intégrité peut comprendre un histogramme représentant la fréquence 5 avec laquelle le traitement cible 110 devrait se référer à des adresses virtuelles données. L'IMM 112 peut faire usage de la partie du manifeste d'intégrité décrivant le traitement cible 110 tel qu'il est chargé en mémoire en comparant cette description avec la façon dont le 10 traitement cible 110 est actuellement chargé en mémoire, en vérifiant ainsi que les instructions composant le traitement cible 110 n'ont pas été compromises. Après vérification du traitement cible 110, l'IMM 112 peut, dans un mode de réalisation représenté à la figure la, fournir 15 le manifeste d'intégrité au gestionnaire 114 de mémoire et au moteur 120 de vérification. Dans un autre mode de réalisation représenté à la figure lb, l'IMM 112 peut au lieu de cela fournir le manifeste d'intégrité au moteur 118 d'instrumentation de code et au moteur 120 de vérification. 20 On peut trouver des détails supplémentaires sur l'IMM 112 et sur le manifeste d'intégrité dans la demande de brevet US numéro 11/173 851 déposée le 30 juin 2005, intitulée "Signed Manifest for Run-Time Verification of Software Program Identity and Integrity". 25 Dans divers modes de réalisation, le VMM 106 peut comprendre un gestionnaire 114 de mémoire apte à créer et à entretenir des tables 116 de pages actives du VMM 106. Dans certains modes de réalisation, comme ceux représentés par la figure la, le gestionnaire 114 de mémoire du VMM 106 30 peut aussi être apte à observer les références à des adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et à avertir le moteur 120 de vérification des références. Dans un mode de réalisation, le gestionnaire 114 de mémoire peut en outre être apte à 35 surveiller des interdépendances entre le traitement cible 110 et un autre traitement auquel se réfère virtuellement 2907242 11 le traitement cible 110, et/ou à surveiller des points d'appel et de retour entre le traitement cible 110 et le traitement auquel il se réfère. Les interdépendances et/ou les points d'appel et de retour peuvent aussi être signalés 5 au moteur 120 de vérification. À réception de la vérification du traitement cible 110 en provenance de l'IMM 112 et à la réception du manifeste d'intégrité, le gestionnaire 114 de mémoire peut modifier les tables 116 de pages actives en se basant sur le profil d'exécution 10 statistique du traitement cible 110 décrit par le manifeste d'intégrité. Par exemple, pour chaque adresse virtuelle à laquelle on escompte que le traitement cible 110 se réfère, le gestionnaire 114 de mémoire peut marquer, comme "non représente", l'entrée correspondante de la table de pages 15 actives de cette adresse virtuelle. Le processeur de la machine virtuelle 104, traitant des instructions du traitement cible 110 se référant à l'adresse virtuelle marquée comme non représente, peut émettre une erreur de page vers le VMM 106 via une instruction VMEXIT (de sortie 20 de machine virtuelle). Le gestionnaire 114 de mémoire peut alors noter chaque erreur de page, et déterminer si l'adresse virtuelle à laquelle on se réfère associée à l'erreur de page est l'une des adresses virtuelles marquées par le gestionnaire 114 de mémoire comme non présentes dans 25 les tables 116 de pages actives. Si l'erreur de page est associée à l'une de ces adresses, le gestionnaire 114 de mémoire peut avertir le moteur 120 de vérification de la référence observée à l'adresse virtuelle. Dans un mode de réalisation, le gestionnaire 114 de mémoire peut seulement 30 avertir le moteur 120 de vérification des références à l'adresse virtuelle observée par lots à la fin de l'exécution du traitement cible 110. Dans d'autres modes de réalisation, en plus d'avertir le moteur 120 de vérification des adresses virtuelles auxquelles on s'est 35 référé, le gestionnaire 114 de mémoire peut aussi noter le type d'accès associé à chaque référence (c'est-à-dire, 2907242 12 accès de lecture, accès d'écriture, accès d'exécution, accès d'un registre du dispositif 102 de traitement de l'information, etc.) et peut en outre avertir le moteur 120 de vérification des types d'accès. Dans un autre mode de 5 réalisation, non représenté, le gestionnaire de mémoire peut créer et entretenir des tables de pages emboîtées et étendues au lieu des tables 116 de pages actives. De telles tables de pages emboîtées et étendues peuvent ne pas être synchronisées automatiquement avec les tables 108 de pages 10 d'invité, mais peuvent être exécutées de manière cohérente avec les tables 108 de pages d'invité. Sous tous les autres aspects, comme l'introduction d'erreurs de page décrite ci-dessus, le gestionnaire 114 de mémoire peut opérer sur les tables de pages emboîtées et étendues de la même manière 15 que celle décrite ci-dessus en se référant aux tables 116 de pages actives. Comment représenté, le VMM 106 peut comprendre les tables 116 de pages actives fournissant une adresse physique d'invité aux transpositions d'adresse physique 20 d'hôte. Comme décrit ci-dessus, les tables 116 de pages actives peuvent être créées et entretenues par le gestionnaire 114 de mémoire. Les tables 116 de pages actives peuvent correspondre aux tables 108 de pages d'invité et se synchroniser périodiquement ou 25 continuellement avec les tables de pages d'invité. Plutôt que d'utiliser les tables 108 de pages d'invité pour la traduction d'adresse, le processeur de la machine virtuelle 104 peut faire en réalité usage des tables 116 de pages actives pour obtenir l'emplacement de mémoire physique de 30 la page de mémoire à laquelle des instructions du traitement cible 110 tentent d'accéder. Dans certains modes de réalisation, représentés par la figure la, le gestionnaire 114 de mémoire peut marquer une ou plusieurs entrées des tables 116 de pages actives comme "non 35 présentes", en faisant que le processeur tente d'utiliser les entrées pour émettre une erreur de page. Les tables 116 2907242 13 de pages actives comme les tables 116 de pages actives sont bien connues dans l'art, et par conséquent ne seront pas décrites davantage. Dans certains modes de réalisation, comme ceux 5 représentés à la figure lb, le VMM 106 peut comprendre en outre un moteur 118 d'instrumentation de code. Le moteur 118 d'instrumentation de code peut être capable d'observer des adresses virtuelles auxquelles se réfère le traitement cible 110 et d'avertir le moteur 120 de vérification des 10 références. Avant l'exécution du traitement cible 110, le moteur 118 d'instrumentation de code peut modifier les instructions du traitement cible 110 telles qu'elles sont mémorisées en mémoire pour faire que le traitement cible 110 émette des VMCALL vers le moteur 118 d'instrumentation 15 de code au lieu, ou en plus, de se référer à une adresse virtuelle à laquelle on escompte que le traitement cible 110 se réfère. Les modifications peuvent être déterminées en se basant au moins en partie sur le manifeste d'intégrité décrit ci-dessus qui peut décrire un profil 20 d'exécution statistique du traitement cible 110, incluant des adresses virtuelles auxquelles on escompte que le traitement cible 110 se réfère. Pour chaque adresse, le moteur 118 d'instrumentation de code peut modifier l'instruction qui devrait se référer à l'adresse virtuelle, 25 en la remplaçant par ou en lui ajoutant une instruction qui, lorsqu'elle est exécutée, peut faire un VMCALL au moteur 118 d'instrumentation de code. Le moteur 118 d'instrumentation de code peut alors intercepter les VMCALL, noter une référence d'une adresse virtuelle pour 30 chaque VMCALL pour l'adresse virtuelle associée au VMCALL, et avertir le moteur 120 de vérification de la référence de l'adresse virtuelle. Dans un mode de réalisation, le moteur 118 d'instrumentation de code peut seulement avertir le moteur 120 de vérification des références à l'adresse 35 virtuelle observée dans un lot à la fin de l'exécution du traitement cible 110. Dans d'autres modes de réalisation, 2907242 14 en plus d'avertir le moteur 120 de vérification des adresses virtuelles auxquelles on s'est référé, le moteur 118 d'instrumentation de code peut aussi noter le type d'accès associé à chaque référence (c'est-à-dire, accès de 5 lecture, accès d'écriture, etc.) et peut en outre avertir le moteur 120 de vérification des types d'accès. Aussi, dans d'autres modes de réalisation, le moteur 118 d'instrumentation de code peut mémoriser une copie des instructions modifiées préalablement du traitement cible 10 110 et, à réception d'un VMCALL, effectuer une correction au moment de l'exécution du traitement cible 110, en le rétablissant dans son état avant modification et en émulant l'exécution non modifiée du traitement cible 110. Le moteur 118 d'instrumentation de code peut alors réintroduire la 15 modification dans la mémoire du traitement cible 110, en permettant de se référer encore au résultat dans des VMCALL ultérieurs. Comme le montrent les deux figures la et lb, le VMM 106 peut aussi comprendre un moteur 120 de vérification 20 apte à comparer les références à des adresses virtuelles observées aux références à des adresses virtuelles escomptées, à engendrer des statistiques basées sur la comparaison, et à comparer au moins l'une des statistiques engendrées à une valeur de seuil. Comme décrit ci-dessus, 25 le moteur 120 de vérification peut recevoir notification des références à des adresses virtuelles observées soit du gestionnaire 114 de mémoire (dans la série de modes de réalisation représentée par la figure la) soit du moteur 118 d'instrumentation de code (dans la série de modes de 30 réalisation représentée par la figure lb). Dans un mode de réalisation, le moteur 120 de vérification peut aussi être averti des types d'accès d'au moins certaines des références à des adresses virtuelles observées. Comme c'est également décrit ci-dessus, le moteur 120 de vérification 35 peut aussi recevoir de l'IMM 112 le manifeste d'intégrité décrivant le profil d'exécution statistique dutraitement 2907242 15 cible 110, incluant les adresses virtuelles auxquelles on escompte que le traitement cible 110 se réfère et également une fréquence avec laquelle on escompte que le traitement cible 110 se réfère à une ou plusieurs des adresses 5 virtuelles. Dans un mode de réalisation, le manifeste d'intégrité peut aussi fournir des valeurs de seuil. Après réception des références à des adresses virtuelles observées et du manifeste d'intégrité, le moteur 120 de vérification peut comparer les références observées 10 aux références escomptées et engendrer une mesure statistique, comme un pourcentage, pour décrire l'exécution observée. Dans certains modes de réalisation, le moteur 120 de vérification peut aussi déterminer une fréquence ou des fréquences observées décrivant la fréquence avec laquelle 15 on s'est référé à une ou plusieurs adresses virtuelles, peut comparer la fréquence observée calculée à une fréquence escomptée, et peut engendrer une mesure statistique, comme un écart type, pour décrire l'amplitude de variation par rapport à la fréquence escomptée. 20 Dans certains modes de réalisation, le manifeste d'intégrité peut aussi comprendre un type d'accès escompté, et le moteur 120 de vérification peut comparer le type d'accès observé à un type d'accès escompté, et peut engendrer des mesures statistiques, comme celles décrites 25 ci-dessus, en se basant sur la comparaison. Dans un mode de réalisation, le manifeste d'intégrité peut aussi comprendre des interdépendances et/ou des points d'appel et de retour, escomptés comme ceux mentionnés ci-dessus, et le moteur 120 de vérification peut comparer les interdépendances et/ou 30 les points d'appel et de retour observés à des interdépendances et/ou des points d'appel et de retour escomptés, et peut engendrer des mesures statistiques comme celles décrites ci-dessus, en se basant sur la comparaison. Après génération des mesures statistiques, le moteur 35 120 de vérification peut comparer les mesures à des valeurs de seuil. Les valeurs de seuil peuvent représenter, par 2907242 16 exemple, une valeur que la mesure doit satisfaire. Si la comparaison a pour résultat la conclusion que la mesure ne satisfait pas la valeur de seuil, le moteur 120 de vérification peut, par exemple, avertir un administrateur 5 du dispositif 102 de traitement de l'information au moyen d'une alerte ou de n'importe quel autre mécanisme approprié connu dans l'art. La figure 2 représente un organigramme d'opérations choisies des procédés de divers modes de réalisation de la 10 présente invention. Comme représenté au bloc 202, un IMM d'un VMM d'un dispositif de traitement de l'information peut vérifier l'intégrité d'un traitement cible d'une machine virtuelle du dispositif de traitement de l'information tel qu'il est chargé en mémoire. Dans la 15 vérification de l'intégrité du traitement cible, l'IMM peut faire usage d'un manifeste d'intégrité décrivant le traitement tel qu'il est chargé en mémoire, de même que décrivant un profil d'exécution statistique du traitement cible, incluant des adresses virtuelles auxquelles on 20 escompte que le traitement cible se réfère et des fréquences avec lesquelles on escompte que le traitement cible se réfère à des adresses virtuelles. Dans certains modes de réalisation représentés par la figure la et décrits ci-dessus, l'IMM, après vérification 25 du traitement cible, peut fournir le manifeste d'intégrité à un gestionnaire de mémoire et à un moteur de vérification du VMM. Le gestionnaire de mémoire peut alors modifier les tables de pages actives du VMM, bloc 204, en marquant comme "non présentes" les adresses virtuelles énumérées par le 30 manifeste d'intégrité comme étant celles auxquelles on escompte que l'on se réfère. Le gestionnaire de mémoire peut ensuite observer l'exécution du traitement cible, bloc 206, en interceptant/notant les erreurs de page, bloc 208, émises par le processeur de la machine virtuelle en 35 traitant les instructions du traitement cible. Le processeur peut émettre des erreurs lors de la tentative de 2907242 17 traduction de l'adresse virtuelle à laquelle on se réfère en utilisant les tables de pages actives, puisque les tables de pages actives ont été modifiées par le gestionnaire de mémoire pour marquer l'adresse virtuelle 5 comme "non présente". Après avoir intercepté/noté une erreur de page, le gestionnaire de mémoire peut noter l'observation d'une référence à une adresse virtuelle et peut avertir le moteur de vérification de la référence observée, bloc 210. 10 Dans d'autres modes de réalisation représentés par la figure lb et décrits ci-dessus, l'IMM, après vérification du traitement cible, peut fournir le manifeste d'intégrité à un moteur d'instrumentation de code et au moteur de vérification du VMM. Le moteur d'instrumentation de code 15 peut alors noter les adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et peut modifier les instructions constituant le traitement cible en mémoire, bloc 212, pour faire que le traitement cible émette des VMCALL vers le moteur d'instrumentation de code 20 lorsqu'il atteint une instruction de se référer à l'une des adresses virtuelles escomptées. Le moteur d'instrumentation de code peut aussi mémoriser les instructions du traitement cible sous forme non modifiée avant de modifier le traitement cible. Après modification du traitement cible, 25 le moteur d'instrumentation de code peut observer l'exécution du traitement cible, bloc 214, en interceptant/recevant les VMCALL faits par le traitement cible en réponse aux modifications, bloc 216. À réception de chaque VMCALL, le moteur d'instrumentation de code peut 30 faire une réparation au moment de l'exécution du traitement cible, bloc 218, en remettant les instructions dans leur état avant modification, en émulant ainsi l'exécution non modifiée du traitement cible. Après interception d'un VMCALL, le moteur d'instrumentation de code peut observer 35 une référence à l'adresse virtuelle associée au VMCALL, et 2907242 18 peut avertir le moteur de vérification de l'observation d'une référence à l'adresse virtuelle, bloc 220. À réception des avertissements d'observation de références à des adresses virtuelles provenant soit du 5 gestionnaire de mémoire soit du moteur d'instrumentation de code, le moteur de vérification peut comparer les références observées à des références à des adresses virtuelles escomptées, obtenues du manifeste d'intégrité, bloc 222, et peut engendrer une ou plusieurs mesures 10 statistiques, comme un pourcentage, pour résumer l'exécution observée. Dans un mode de réalisation, le moteur de vérification peut aussi déterminer une ou plusieurs fréquences avec lesquelles on s'est référé à des adresses virtuelles observées, peut comparer cette 15 fréquence ou ces fréquences à des fréquences escomptées obtenues du manifeste d'intégrité, et peut engendrer une ou plusieurs mesures statistiques, comme un écart type. Après génération des mesures statistiques, le moteur de vérification peut comparer les mesures statistiques à des 20 valeurs de seuil, bloc 224, pour déterminer si l'on doit alerter un administrateur du dispositif de traitement de l'information. La figure 3 représente un exemple de système informatique approprié pour utilisation pour mettre en 25 pratique divers modes de réalisation de la présente invention. Comme montré, le système 300 de traitement de l'information comprend un certain nombre de processeurs ou cœurs de processeur 302, et une mémoire 304 du système. Pour la présente demande, y compris les revendications, les 30 termes "processeur" et "coeur de processeur" peuvent être considérés comme synonymes, à moins que le contexte n'en décide clairement autrement. De plus, le système 300 de traitement de l'information comprend des dispositifs 306 de mémoire de masse (comme une disquette, un disque dur, et 35 une mémoire morte sur disque compact (CD-ROM) et analogue), des dispositifs 308 d'entrée/sortie (comme un clavier, une 2907242 19 commande de curseur et analogue) et des interfaces 310 de communication (comme des cartes d'interface de réseau, des modems et analogues). Les éléments sont raccordés les uns aux autres via un bus 312 du système, qui représente un ou 5 plusieurs bus. Dans le cas de plusieurs bus, ils sont pontés par un ou plusieurs ponts (non représentés). Dans divers modes de réalisation, les dispositifs 306 de mémoire de masse peuvent être divisés en de multiples partitions pour utilisation par les machines virtuelles, chaque 10 machine virtuelle ayant l'usage exclusif de la partition affectée. Chacun de ces éléments assure ses fonctions classiques connues dans l'art. En particulier, la mémoire 304 du système et la mémoire de masse 306 peuvent être employées 15 pour mémoriser une copie de travail et une copie permanente des instructions de programmation mettant en oeuvre tous les aspects ou des aspects choisis du gestionnaire de mémoire, du module de mesure d'intégrité, du moteur d'instrumentation de code, du moteur de vérification, et 20 ainsi de suite, collectivement désignés ici par 322. Les instructions peuvent être compilées à partir d'instructions en assembleur supportées par le ou les processeurs 302 ou à partir de langages de niveau élevé, comme le langage C. La copie permanente des instructions de programmation 25 peut être placée dans la mémoire permanente 306 en usine, ou sur place, au moyen, par exemple, d'un support de distribution (non représenté), comme un disque compact (CD), ou au moyen d'une interface 310 de communication (à partir d'un serveur de distribution (non représenté)). 30 La constitution de ces éléments 302 à 312 est connue, et par conséquent ne sera pas décrite davantage. Bien que l'on ait représenté et décrit ici des modes spécifiques de réalisation, ceux qui sont normalement expérimentés dans l'art noteront de nombreuses réalisations 35 alternatives et/ou équivalentes peuvent se substituer aux modes spécifiques de réalisation montrés et décrits, sans 2907242 20 sortir de la portée des modes de réalisation de la présente invention. La présente demande est censée couvrir toutes les adaptations ou variations des modes de réalisation qui y sont décrits. Par conséquent, il est bien entendu que les 5 modes de réalisation de la présente invention sont limités seulement par les revendications et leurs équivalents. REVENDICATIONS 1. Procédé, comprenant : l'observation, par un gestionnaire de machines virtuelles d'un dispositif physique, de l'exécution d'un traitement cible d'une machine virtuelle du dispositif physique, y compris d'adresses virtuelles de la machine virtuelle auxquelles on se réfère pendant l'exécution ; et la détermination, par le gestionnaire de machines virtuelles, de ce que le traitement cible s'exécute d'une manière escomptée en se basant au moins en partie sur les références à des adresses virtuelles observées et les références à des adresses virtuelles escomptées. 2. Procédé selon la revendication 1, dans lequel la manière escomptée d'exécution est reflétée dans un manifeste d'intégrité, le manifeste incluant des adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et dans lequel la détermination comprend une comparaison par le gestionnaire de machines virtuelles des références à des adresses virtuelles observées avec les références à des adresses virtuelles escomptées. 3. Procédé selon la revendication 2, dans lequel l'observation se fait par un gestionnaire de mémoire du gestionnaire de machines virtuelles, et dans lequel le procédé comprend en outre la modification, par le gestionnaire de mémoire, de tables de pages actives du gestionnaire de machines virtuelles, de sorte que lesdites références à des adresses virtuelles sont interceptées pour traitement par le gestionnaire de mémoire. 4. Le procédé selon la revendication 3, dans lequel ladite modification, par le gestionnaire de mémoire, comprend la modification des tables de pages actives du gestionnaire de machines virtuelles de sorte que lesdites références à des adresses virtuelles provoquent des erreurs de page pour le gestionnaire de mémoire. 5. Procédé selon la revendication 2, dans lequel l'observation se fait par un gestionnaire de mémoire du 2907242 22 gestionnaire de machines virtuelles, et dans lequel le procédé comprend en outre la modification, par le gestionnaire de mémoire, de tables de pages emboîtées et étendues du gestionnaire de machines virtuelles, de sorte 5 que lesdites références à des adresses virtuelles sont interceptées pour traitement par le gestionnaire de mémoire. 6. Procédé selon la revendication 2, dans lequel l'observation se fait par un moteur d'instrumentation de 10 code du gestionnaire de machines virtuelles, et dans lequel le procédé comprend en outre la modification du traitement cible, par le moteur d'instrumentation de code, de sorte que lesdites références aux adresses virtuelles sont interceptées pour traitement par le moteur 15 d'instrumentation de code. 7. Procédé selon la revendication 6, dans lequel la modification comprend la modification du traitement cible pour appeler le moteur d'instrumentation de code lorsque l'on doit se référer aux adresses virtuelles, et dans 20 lequel le procédé comprend en outre : premièrement, lors de l'interception d'une référence, le rétablissement, par le moteur d'instrumentation de code, des instructions remplacées du traitement cible pour permettre d'exécuter une fonction d'origine ; 25 deuxièmement, lors de l'interception d'une référence, la notification, par le moteur d'instrumentation de code, à un moteur de vérification, de l'interception, le moteur de vérification notant la référence à l'adresse virtuelle ; et troisièmement, lors de l'exécution, la remodification, 30 par le moteur d'instrumentation de code, de l'instruction pour permettre que la référence future à l'adresse virtuelle soit interceptée à nouveau vers le moteur d'instrumentation de code. 8. Procédé selon la revendication 1, dans lequel les 35 adresses virtuelles sont transposées en mémoire dans un registre.de dispositif de traitement de l'information. 2907242 23 9. Procédé selon la revendication 1, comprenant en outre l'observation supplémentaire d'un type d'accès à la mémoire pour au moins l'une des références à des adresses virtuelles observées. 5 10. Procédé selon la revendication 1, comprenant en outre une comparaison, par le moteur de vérification, de statistiques de références de diverses adresses virtuelles avec des valeurs de seuil correspondantes. 11. Procédé selon la revendication 1, dans lequel le 10 traitement cible est un traitement de détection d'intrusion. 12. Procédé selon la revendication 1, dans lequel ladite observation comprend en outre la surveillance d'au moins les unes ou les autres d'interdépendances et de 15 points d'appel et de retour du traitement cible et d'un autre traitement auquel se réfère virtuellement le traitement cible. 13. Dispositif physique comprenant : un ou plusieurs processeurs ; et 20 un gestionnaire de machines virtuelles mis en œuvre par les un ou plusieurs processeurs et apte à observer l'exécution d'un traitement cible d'une machine virtuelle du dispositif physique, y compris l'observation d'adresses virtuelles de la machine virtuelle auxquelles on se réfère 25 pendant l'exécution, et à déterminer si le traitement cible s'exécute d'une manière escomptée en se basant au moins en partie sur les références à des adresses virtuelles observées et les références à des adresses virtuelles escomptées, le gestionnaire de machines virtuelles incluant 30 un gestionnaire de mémoire apte à faire ladite observation, incluant la modification de tables de pages actives de sorte que des références à des adresses virtuelles sont interceptées pour traitement par le gestionnaire de mémoire. 35 14. Dispositif physique selon la revendication 13, dans lequel la machine virtuelle et le gestionnaire de 2907242 24 machines virtuelles sont mis en oeuvre par le même processeur. 15. Dispositif physique selon la revendication 13, dans lequel ledit gestionnaire de mémoire est apte à 5 modifier les tables de pages actives du gestionnaire de machines virtuelles de sorte que lesdites références à des adresses virtuelles provoquent des erreurs de page pour le gestionnaire de mémoire. 16. Dispositif physique selon la revendication 15, 10 dans lequel la manière escomptée d'exécution est reflétée dans un manifeste d'intégrité, le manifeste incluant des adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et dans lequel le gestionnaire de machines virtuelles comprend en outre un moteur de 15 vérification apte à effectuer ladite détermination en comparant les références à des adresses virtuelles observées avec les références à des adresses virtuelles escomptées et à engendrer des statistiques de références basées sur la comparaison. 20 17. Dispositif physique selon la revendication 16, dans lequel le gestionnaire de machines virtuelles comprend en outre un module de gestion d'intégrité apte à vérifier l'intégrité du traitement cible en utilisant le manifeste d'intégrité, dans lequel le manifeste d'intégrité décrit en 25 outre le traitement cible tel qu'il est chargé dans la mémoire du dispositif physique. 18. Dispositif physique selon la revendication 16, dans lequel le moteur de vérification est en outre apte à comparer les statistiques de références de diverses 30 adresses virtuelles à des valeurs de seuil correspondantes. 19. Dispositif physique selon la revendication 13, dans lequel le traitement cible est un traitement de détection d'intrusion. 20. Article fabriqué comprenant : 35 un support de mémorisation ; et 2907242 25 une pluralité d'instructions de programmation conçue pour programmer un dispositif physique pour fournir, au dispositif physique, un gestionnaire de machines virtuelles incluant un moteur d'instrumentation de code, pour 5 permettre au dispositif physique : de modifier, en utilisant le moteur d'instrumentation de code, un traitement cible d'une machine virtuelle du dispositif physique, de sorte que lesdites références à des adresses virtuelles de la 10 machine virtuelle sont interceptées pour traitement par le moteur d'instrumentation de code ; d'observer, en utilisant le moteur d'instrumentation de code du gestionnaire de machines virtuelles du dispositif physique, l'exécution du 15 traitement cible, y compris des adresses virtuelles de la machine virtuelle auxquelles on se réfère pendant l'exécution ; et de déterminer, à l'aide du gestionnaire de machines virtuelles, si le traitement cible s'exécute 20 d'une manière escomptée en se basant au moins en partie sur les références à des adresses virtuelles observées et les références à des adresses virtuelles escomptées. 21. Article selon la revendication 20, dans lequel la 25 manière escomptée d'exécution est reflétée dans un manifeste d'intégrité, le manifeste incluant des adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et les instructions de programmation permettent en outre au dispositif physique d'effectuer la 30 détermination à l'aide du gestionnaire de machines virtuelles qui compare les références à des adresses virtuelles observées avec les références à des adresses virtuelles escomptées. 22. Article selon la revendication 21, dans lequel la 35 pluralité d'instructions de programmation est en outre conçue pour procurer au gestionnaire de machines virtuelles 2907242 26 un moteur de vérification, permettant au dispositif physique d'effectuer en outre la détermination à l'aide du moteur de vérification qui compare des statistiques de références de diverses adresses virtuelles à des valeurs de 5 seuil correspondantes. 23. Article selon la revendication 20, dans lequel la pluralité d'instructions de programmation est en outre conçue pour programmer le dispositif physique pour permettre au dispositif physique de modifier le traitement 10 cible, en utilisant le moteur d'instrumentation de code, de façon que le traitement cible appelle le moteur d'instrumentation de code lorsque l'on doit se référer aux adresses virtuelles ; et la pluralité d'instructions de programmation est en 15 outre conçue pour programmer le dispositif physique pour permettre au dispositif physique de rétablir le traitement cible lors de l'interception d'une référence, en utilisant le moteur d'instrumentation de code, en remplaçant des instructions du traitement cible pour permettre d'exécuter 20 une fonction d'origine, et de remodifier le traitement à l'exécution, pour permettre que la référence future à l'adresse virtuelle soit interceptée à nouveau vers le moteur d'instrumentation de code. 24. Article selon la revendication 23, dans lequel 25 les instructions de programmation sont en outre aptes à procurer au gestionnaire de machines virtuelles un moteur de vérification, et à rendre le moteur d'instrumentation de code apte à avertir le moteur de vérification, lors de l'interception d'une référence, le moteur de vérification 30 notant la référence à l'adresse virtuelle. 25. Article selon la revendication 20, dans lequel le traitement cible est un traitement de détection d'intrusion. 26. Système comprenant : 35 un ou plusieurs processeurs ; 2907242 27 une mémoire volatile raccordée aux un ou plusieurs processeurs, et capable de mémoriser des adresses virtuelles observées auxquelles on se réfère pendant l'exécution d'un traitement cible d'une machine virtuelle 5 du système et des références à des adresses virtuelles escomptées pour comparaison ; et une mémoire de masse raccordée aux un ou plusieurs processeurs, et dans laquelle sont mémorisées des instructions réalisant un gestionnaire de machines 10 virtuelles mis en oeuvre par l'un des un ou plusieurs processeurs et apte : à observer, à l'aide du gestionnaire de machines virtuelles, l'exécution du traitement cible, y compris les adresses virtuelles auxquelles on se réfère 15 pendant l'exécution ; et à déterminer si le traitement cible s'exécute d'une manière escomptée en se basant au moins en partie sur les références à des adresses virtuelles observées et les références à des adresses virtuelles 20 escomptées. 27. Système selon la revendication 26, dans lequel le gestionnaire de machines virtuelles comprend en outre un gestionnaire de mémoire apte à effectuer ladite observation et à modifier des tables de pages actives du gestionnaire 25 de machines virtuelles de sorte que lesdites références à des adresses virtuelles entraînent des erreurs de page pour le gestionnaire de mémoire. 28. Système selon la revendication 26, dans lequel la manière escomptée d'exécution est reflétée dans un 30 manifeste d'intégrité, le manifeste incluant des adresses virtuelles auxquelles on escompte que le traitement cible se réfère, et le gestionnaire de machines virtuelles comprend en outre un moteur de vérification apte à comparer les références à des adresses virtuelles observées avec les 35 références à des adresses virtuelles escomptées et à 2907242 28 engendrer les statistiques de références basées sur la comparaison. 29. Système selon la revendication 28, dans lequel le gestionnaire de machines virtuelles comprend en outre un 5 module de gestion d'intégrité, le module de mesure d'intégrité étant apte à vérifier l'intégrité du traitement cible en utilisant le manifeste d'intégrité, dans lequel le manifeste d'intégrité décrit en outre le traitement cible tel qu'il est chargé dans la mémoire de masse. 10 30. Système selon la revendication 26, dans lequel le traitement cible est un traitement de détection d'intrusion.