Question:
Dans quelle mesure les machines virtuelles sont-elles réellement sécurisées? Faux sentiment de sécurité?
T. Webster
2011-04-13 04:48:32 UTC
view on stackexchange narkive permalink

Je lisais ce livre CompTIA Security + SYO-201 et l'auteur David Prowse affirme que:

Quelle que soit la VM que vous sélectionnez, la VM ne peut pas traverser le logiciel limites établies. Par exemple, un virus peut infecter un ordinateur lorsqu'il est exécuté et se propager à d'autres fichiers du système d'exploitation. Cependant, un virus exécuté dans une VM se propage à travers la VM mais n'affecte pas le système d'exploitation réel sous-jacent.

Donc, si j'exécute VMWare Player et exécute des logiciels malveillants sur le système d'exploitation de ma machine virtuelle, Je n'ai pas à craindre que mon système hôte soit compromis, du tout tout ?

Que faire si la machine virtuelle partage le réseau avec la machine hôte et que les dossiers partagés sont activés?

N'est-il pas encore possible pour un ver de se copier sur la machine hôte de cette façon? L'utilisateur n'est-il pas toujours vulnérable à l'exécution automatique si le système d'exploitation est Windows et qu'il insère un périphérique de stockage USB?

Dans quelle mesure les machines virtuelles sont-elles réellement sécurisées? Dans quelle mesure protègent-ils la machine hôte contre les logiciels malveillants et les attaques?

Si j'étais le rédacteur en chef, j'interjecterais un «j'espère» et un «théoriquement» dans quelques emplacements de choix dans cette citation. En l'état, c'est définitivement une fausse déclaration.
Un exemple d'attaque réelle d'un système d'exploitation invité à un système d'exploitation hôte. http://venom.crowdstrike.com
Une déclaration très générique est que la sécurité de l'hôte et du réseau dépend de la sécurité des interfaces entre ledit hôte / réseau et la VM cliente. Vous devriez envisager d'installer le minimum absolu d'outils, de configurer un accès réseau minimum et de configurer un minimum de périphériques matériels pour minimiser les risques. Si vous exécutez simplement une machine virtuelle dans un sandbox de mémoire, vous serez probablement en sécurité; les seules interfaces à attaquer seraient le sous-système CPU et mémoire de la visière. Vous auriez également une VM assez inutile. Par exemple. avez-vous besoin d'une [disquette] (http://blog.crowdstrike.com/venom-vulnerability-details/)?
Neuf réponses:
Marcin
2011-04-13 05:38:58 UTC
view on stackexchange narkive permalink

Les VM peuvent certainement se croiser. Habituellement, vous les avez mis en réseau, de sorte que tout logiciel malveillant avec un composant réseau (c'est-à-dire des vers) se propage là où son adressage / routage le permet. Les virus ordinaires ont tendance à ne fonctionner qu'en mode utilisateur, donc même s'ils ne peuvent pas communiquer ouvertement, ils peuvent toujours mettre en place un canal secret. Si vous partagez des processeurs, un processus occupé sur une machine virtuelle peut communiquer efficacement l'état à une autre machine virtuelle (c'est votre canal caché de synchronisation prototypique). Le canal secret de stockage serait un peu plus difficile car les disques virtuels ont tendance à avoir une limite stricte, donc à moins que vous n'ayez un système qui peut surcharger l'espace disque, cela ne devrait pas être un problème.

Le L'approche la plus intéressante pour sécuriser les VM est appelée le noyau de séparation. C'est le résultat de l ' article de 1981 de John Rushby qui déclare essentiellement que pour avoir des VM isolées d'une manière qui pourrait être équivalente à une séparation physique, l'ordinateur doit exporter ses ressources vers des VM spécifiques d'une manière où à aucune ressource qui peut stocker l'état n'est partagée entre les VM. Cela a des conséquences profondes, car cela nécessite que l'architecture informatique sous-jacente soit conçue de manière à ce que cela puisse être réalisé de manière non contournable.

30 ans après cet article, nous avons finalement peu de produits qui prétendre le faire. x86 n'est pas la meilleure plate-forme pour cela, car il existe de nombreuses instructions qui ne peuvent pas être virtualisées, pour prendre pleinement en charge l'idée du «pas de partage». Ce n'est pas non plus très pratique pour les systèmes courants, car pour avoir quatre VM, il faudrait quatre disques durs suspendus à quatre contrôleurs de disque, quatre cartes vidéo, quatre contrôleurs USB avec quatre souris, etc.

Mise à jour 2020: toutes les vulnérabilités matérielles récentes (Meltdown, Spectre, Foreshadow, ZombieLoad, CacheOut, SPOILER, etc.) de la famille de vulnérabilités sont de bons exemples de la façon dont les VM pourront toujours communiquer, simplement parce qu'elles partagent du matériel (caches, TLB, prédiction de branche, TSX, SGX) qui n'ont jamais été prévus ou préparés pour être partitionnés et isolés.

Quel serait l'avantage de ce type de communication secrète pour l'auteur du virus? Il semble qu'il ne puisse pas être utilisé tant que les deux machines n'ont pas été infectées, mais pourquoi en auriez-vous besoin après ce point?
@JackO'Connor: Afin de * communiquer * entre eux. Considérez par exemple si l'une des machines virtuelles a une carte réseau connectée à Internet mais pas au centre de données interne, et l'autre a une carte réseau connectée au centre de données interne mais pas à Internet. En utilisant ce canal secret, l'attaquant dispose désormais d'une route pour attaquer le contrôleur de domaine depuis Internet et exfiler des données. De plus, une machine virtuelle pourrait éventuellement attaquer une autre machine virtuelle via cette méthode, par exemple une machine virtuelle compromise (sur Azure / EC2 peut-être) attaquant une autre machine virtuelle pour obtenir les clés privées SSL de l'autre machine virtuelle, par exemple.
Si une VM n'exécute pas réellement le code machine directement, mais l'interprète à la place, devrait-il y avoir une difficulté fondamentale à rendre la machine 100% sécurisée si les seules façons dont elle peut interagir avec le monde extérieur sont initiées de l'extérieur d'elle-même (par exemple utilitaire qui copie les données sur le "disque dur" de la machine virtuelle?)
"_pour avoir quatre VM, vous auriez besoin de quatre disques durs accrochés à quatre contrôleurs de disque, quatre [etc ...] _" On dirait qu'il manque le point des machines * virtuelles *.
@Marcin - Si les machines virtuelles ne sont pas mises en réseau à des fins de test, mais que les dossiers partagés et le presse-papiers sont activés entre l'invité et l'hôte, quelle est la probabilité d'infection de l'invité à l'hôte?
@Motivated qui aurait la même probabilité d'infection d'un téléchargement au volant ou d'une pièce jointe à un e-mail: le logiciel malveillant de la VM peut placer des fichiers dans les dossiers partagés, mais un utilisateur doit prendre des mesures pour qu'il fasse quelque chose.
Il n'existe pas de système totalement «sans partage».Même si vous avez des cartes réseau, un disque dur, etc. dédiés pour chaque VM, vous partagerez toujours la carte mère.Et si vos machines virtuelles ont réellement leurs propres cartes mères, vous ne pouvez plus vraiment appeler la machine virtuelle de votre système.
Marcin, 8 ans se sont écoulés depuis la réponse.pouvez-vous le mettre à jour?le sujet est très important ... merci
sysadmin1138
2011-04-13 06:22:58 UTC
view on stackexchange narkive permalink

Des livres blancs ont été publiés au fil des ans décrivant les moyens par lesquels les chercheurs ont réussi à infester un système d'exploitation hôte à partir d'une VM. Celles-ci sont généralement considérées, à juste titre, comme des failles de sécurité par les fournisseurs de VM et traitées comme telles. Depuis que j'ai vu ces articles pour la première fois, Intel a apporté des améliorations significatives au jeu d'instructions du processeur en permettant la séparation de la VM et de l'hyperviseur.

Les quelques vulnérabilités que je vois ces jours-ci sont davantage basées sur la partie «vmtools». C'est le logiciel que vous installez pour rendre le système d'exploitation invité plus efficace (pour VMWare, c'est ce qui permet la capture du curseur à la volée et le partage entre l'invité et l'hôte sans réseau). Il s'agit d'une voie logicielle spéciale pour l'infection; n'installez pas les outils, ne possédez pas la vulnérabilité.

Certains logiciels malveillants ont montré la capacité de détecter qu'ils sont exécutés à l'intérieur d'une VM et donc de modifier leur comportement , en grande partie à l'aggravation des chercheurs de logiciels malveillants qui tentent d'utiliser des machines virtuelles pour tester des logiciels malveillants. Cependant, je ne sais pas à quel point c'est répandu de nos jours.

J'ai entendu dire qu'ils exécutent généralement le logiciel malveillant dans le débogueur, définissent un point d'arrêt pour la branche qui provoque un comportement spécifique à la VM et modifient le résultat de cette condition après son évaluation. Mais c'est moins répandu de nos jours car de nombreuses cibles intéressantes sont virtualisées.
"C'est une voie logicielle spéciale pour l'infection; n'installez pas les outils, ne possédez pas la vulnérabilité."Même si les outils ne sont pas installés, l'attaquant peut simplement les installer.Pour fermer correctement le vecteur d'attaque, vous devez fermer les API avec lesquelles les outils parlent.
harley
2011-04-21 21:55:01 UTC
view on stackexchange narkive permalink

Un exemple d'exécution de code d'invité à hôte peut être trouvé dans l'exploit Cloudburst. Il existe une vidéo la démontrant et un article d'Immunity détaillant leur succès sur VMware Workstation 6.5.0 build118166 sur Windows Vista SP1, VMware Workstation 6.5.1 build126130 sur Windows Vista SP1 et (encore plus effrayant) VMware ESX Server 4.0.0 build133495.

Cela n'apporte probablement que peu de réconfort, mais je n'ai jamais entendu parler de cette utilisation dans la nature et l'exploit date de 2009. Ce livre a été publié en 2010, donc l'auteur devrait nettoyer cette déclaration.

Ormis
2011-04-13 23:32:18 UTC
view on stackexchange narkive permalink

Une machine virtuelle est exactement cela, une machine logiquement séparée, donc elle doit avoir les mêmes couches de sécurité placées dessus que vous le feriez pour un système nu. L'utilisation d'une machine virtuelle n'arrêtera pas une vul si elle utilise des canaux normaux pour accéder à la machine hôte.

La vraie beauté de la virtualisation est la possibilité de ramener les VM à un état où elles n'ont pas été affectées, comme ainsi que la possibilité de mieux gérer les ressources disponibles.

Si les mesures appropriées sont prises pour protéger la machine hôte, la virtualisation peut être extrêmement sécurisée. Des pratiques telles que le maintien de la gestion du serveur ESX / VM sur un réseau logique différent et le fait de ne pas utiliser d'outils d'interfaçage VM-hôte garderont les attaquants inconscients du fait qu'une machine est virtuelle, sans parler de la façon d'accéder à l'hôte.

De plus, il existe des exploits connus qui affectent les hôtes VM (j'ai joué avec eux dans VMWare et Hyper-V). Je ne suis actuellement au courant des exploits de l'hôte DoS qu'en ce qui concerne l'hyper-v (voir ceci), mais je suis sûr qu'il y a d'autres découvertes à l'horizon. VMWare en a aussi dans son histoire (c'est-à-dire ceci, il est basé sur des outils VMWare, mais cela s'applique toujours).

En fonction de ce que vous faites, il existe des outils en ligne qui peut être en mesure de supprimer votre besoin de faire l'analyse sur votre propre machine. Voici quelques sites à consulter:
- Threatexpert.com
- anubis.iseclab.org
- virustotal. com

P.S. consultez malwaredomainlist.com si vous souhaitez tester votre environnement sandbox ... mais soyez averti, ne l'utilisez que si vous souhaitez être infecté par de nouveaux logiciels malveillants amusants :-)
+1, mais le leader reconnu dans ce domaine, Joanna Rutkowska, peut être trouvé à http://theinvisiblethings.blogspot.com/
Une VM sur x86 n'est PAS une machine parfaitement séparée logiquement. Lisez http://en.wikipedia.org/wiki/Popek_and_Goldberg_virtualization_requirements et http://www.usenix.org/events/sec2000/robin.html et vous découvrirez que 17 instructions ne peuvent pas être virtualisées.
Logiquement séparé ne signifie pas techniquement séparé. Même si toutes les instructions ne peuvent pas être virtualisées, l'application de la machine est toujours une entité logique différente. Ceux qui les déploient doivent garder cet état d'esprit, n'assument pas la sécurité à cause de l'abstraction. N'oubliez pas non plus de faire les bases ... pour VMWare, essayez d'utiliser un système d'exploitation hôte différent du système d'exploitation invité que vous testez, examinez les options d'isolation et assurez-vous que les réseaux sont correctement construits. Donc, @Marcin, je comprends ce que vous essayez de dire, mais je crois que mes commentaires sont toujours valables (simplement cette virtualisation! = Sécurité).
K. Brian Kelley
2011-04-13 05:40:36 UTC
view on stackexchange narkive permalink

Ce que signifie le matériel Security +, c'est que jusqu'à présent, les logiciels malveillants n'ont pas pu s'échapper du bac à sable de la VM en exploitant le fait qu'il s'agit d'une VM et en frappant d'une manière ou d'une autre l'hyperviseur. D'autres mécanismes, tels que la diffusion sur un réseau partagé, sont les mêmes que s'il s'agissait de boîtes physiques différentes.

Malheureusement, votre réponse est factuellement incorrecte. Je ne suis pas sûr que ce soit connu en 2011, mais c'est définitivement le cas maintenant. http://www.vupen.com/blog/20120904.Advanced_Exploitation_of_Xen_Sysret_VM_Escape_CVE-2012-0217.phpvia http://www.insinuator.net/2013/05/analysis-of-hypervisor-breakouts/
goodguys_activate
2015-06-06 04:31:13 UTC
view on stackexchange narkive permalink

Ils ne sont pas parfaitement sécurisés, comme le démontre cet exploit:

VENOM, CVE-2015-3456, est une vulnérabilité de sécurité qui affecte certaines plates-formes de virtualisation informatique courantes, notamment Xen, KVM, VirtualBox, et le client QEMU natif.

Cette vulnérabilité peut permettre à un attaquant de s'échapper des limites d'un invité de machine virtuelle (VM) affecté et d'obtenir potentiellement un accès d'exécution de code à l'hôte. Vous trouverez plus de détails sur la vulnérabilité ici.

Notez que CVE-2015-3456 est atténué en utilisant l'option chroot de QEMU, en supposant qu'elle ne s'exécute pas en tant que root.Tout ce que fait cette vulnérabilité est de compromettre le frontend QEMU de l'espace utilisateur, pas le backend kernelspace Xen / KVM.De plus, je ne pense pas que cela affecte VirtualBox, comme du tout.C'est spécifiquement une vulnérabilité dans le pilote fdc de QEMU.VirtualBox ne partage pas ce code.La seule raison pour laquelle il affecte KVM et Xen est que ces deux éléments sont rarement utilisés seuls et agissent à la place comme des backends pour QEMU.Quelque chose comme kvmtool plutôt que QEMU, même s'il utilise toujours KVM, ne serait pas affecté.
JackSparrow
2015-09-11 16:37:48 UTC
view on stackexchange narkive permalink

Je pense que l'affirmation de l'auteur n'est pas complètement vraie. En fait, il existe deux types d ' hyperviseur dans la zone de virtualisation. Hypervisor est un logiciel, un micrologiciel ou un matériel informatique qui crée et exécute des machines virtuelles . Ces types sont:

  • Hyperviseurs de type 1
  • Hyperviseurs de type 2

L'hyperviseur de type 1 s'exécute directement sur le matériel de l'hôte pour contrôler le matériel et gérer les systèmes d'exploitation invités. Pour cette raison, ils sont parfois appelés hyperviseurs bare metal alors que l'hyperviseur de type 2 fonctionne sur un système d'exploitation conventionnel tout comme le font d'autres programmes informatiques. VMWare ou VirtualBox sont des exemples d'hyperviseur de type 2 car ils sont exécutés en tant que programmes dans les OS hôtes.

Pour les hyperviseurs de type 2, il existe un projet RoboLinux qui possède une fonctionnalité unique appelée Stealth VM . Programme d'installation du logiciel Stealth VM qui vous permet de créer un clone Windows 7 s'exécutant sur une partition Linux sécurisée . Le système est protégé contre les logiciels malveillants, tout ce que vous téléchargez sera contenu dans la machine virtuelle et il est destiné aux personnes qui doivent avoir un programme Windows spécifique avec la commodité de pouvoir restaurer le système d'exploitation comme nouveau en seulement deux clics.

Il existe Qubes OS qui est développé sous Linux et Xen comme un exemple pour les hyperviseurs de type 1. Qubes OS adopte une approche appelée sécurité par isolation , ce qui, dans ce contexte, signifie garder les choses que vous faites sur votre ordinateur isolées de manière sécurisée dans différentes VM afin qu’une VM compromise gagne » t affecter les autres. Contrairement aux hyperviseurs de type 2, il dispose d'un système de transfert de fichiers entre VM sécurisé pour gérer le risque de partage des dossiers. En théorie, cette organisation est plus sécurisée que la virtualisation de type 2 selon les développeurs.

En bref, l'auteur doit indiquer quel hyperviseur ou système virtuel.

Vous voulez dire que Qubes est un exemple pour les hyperviseurs de type 1, sûrement?
Oui (j'aurais dû avoir une erreur d'écriture; maintenant j'ai édité le message thx), aussi, vous pouvez trouver cette information sur leur site Web. "En revanche, Qubes utilise un hyperviseur de" Type 1 "ou" bare metal "appelé Xen. Au lieu de fonctionner à l'intérieur d'un système d'exploitation, les hyperviseurs de Type 1 s'exécutent directement sur le" bare metal "du matériel. Cela signifie qu'un attaquant doit être capable de subvertir l'hyperviseur lui-même afin de compromettre l'ensemble du système, ce qui est bien plus difficile. " depuis https://www.qubes-os.org/tour/#what-is-qubes-os
Stilez
2016-03-25 02:47:58 UTC
view on stackexchange narkive permalink

D'intérêt et de pertinence, le concours de sécurité "Pwn2Own" pour 2016 a comme l'une de ses compétitions, échapper à une machine virtuelle VMWare Workstation. (D'autres incluent l'échappement des sandbox de navigateur ou la reprise de machines physiques). Cela devrait donner une idée que 1) c'est au moins plausible et 2) si c'est facile, nous avons un moyen de l'entendre - il suffit de vérifier le résultat :)

Plus généralement, la sécurité des VM pourrait en théorie être échappée dans plusieurs façons. Par exemple -

  • Invité pour héberger des commandes et des API (par exemple des outils VMware)

  • Faiblesses exploitables dans le système d'exploitation hôte lui-même qui sont non atténué par l'exécution dans un processus de machine virtuelle (si certains appels du système d'exploitation invité sont jugés à tort "sûrs" et transmis directement par un pilote invité au système d'exploitation hôte ou au pilote de périphérique pour la vitesse, mais qu'un exploit existe)

  • Bogues dans les pilotes du fournisseur ou le code du fournisseur (par exemple, un pilote d'hôte permet le pontage réseau pour le système d'exploitation invité; peut-être qu'un bogue pourrait permettre d'effectuer des appels ou du code sur l'hôte au niveau du noyau). / p>

  • Vulnérabilités résultant d'autres logiciels sur l'hôte (exemple artificiel - si l'antivirus local intercepte tout le trafic réseau de l'hôte à analyser, et le trafic invité est analysé dans le cadre de cela (par opposition être ignoré en raison d'un périphérique NIC virtuel), alors une vulnérabilité du moteur A / V à un trafic ou un paquet malveillant pourrait être capable de permettre au trafic provenant de la VM de s'échapper vers l'hôte)

  • Mauvaise configuration par utilisateur (fichiers hôtes mappés ou insuffisamment sécurisés / séparés pour que l'invité puisse les atteindre)

La portée existe, et étant donné la prévalence, elle est sûrement en cours d'examen activement pour les exploits. Des vulnérabilités, sinon des exploits, seront régulièrement découvertes et nécessiteront des correctifs.

ddyer
2014-02-18 14:15:11 UTC
view on stackexchange narkive permalink

Les exploits spécialement conçus pour s'exécuter dans vms et cibler les bogues dans le noyau hôte sous-jacent sont inévitables. Recherchez-les d'abord sur les plates-formes cloud populaires.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...