Virtualisation, Sécurité et Gestion des périphériques
Transcription
Virtualisation, Sécurité et Gestion des périphériques
Introduction La sécurité La gestion des périphériques Systèmes d’exploitation Virtualisation, Sécurité et Gestion des périphériques Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Novembre 2009 Gérard Padiou Systèmes d’exploitation 1 / 30 Introduction La sécurité La gestion des périphériques plan 1 Introduction L’idée Les problèmes à résoudre Les approches 2 La sécurité La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants 3 La gestion des périphériques Les principes Réalisation Gérard Padiou Systèmes d’exploitation 2 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches L’idée La vision habituelle Architecture matérielle : processeurs, mémoire réelle, système d'interruption ressources périphériques fixes ou amovibles Système d'exploitation Processus Processus Processus threads MV MV Gérard Padiou MV Systèmes d’exploitation 4 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches L’idée Plusieurs machines sur une seule ! Idée fondamentale d’objet virtuel Une vieille idée d’IBM (Cambridge-Grenoble) en 1967 ! : VM/CMS (Virtual Machine/Cambridge Monitor System) Remise au goût du jour ; Plusieurs implantations possibles ; Mecanismes matériels facilitant la mise en œuvre (mode d’exécution). Objectifs Cohabitation de plusieurs systèmes différents ; Isolation : L’arrêt de l’un n’arrête pas les autres ; Facilite le test : cohabitation entre serveur en exploitation et test d’une nouvelle version. Gérard Padiou Systèmes d’exploitation 5 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches L’idée La vision des précurseurs Architecture matérielle : processeurs, mémoire réelle, système d'interruption ressources périphériques fixes ou amovibles Noyau Hyperviseur Système d'exploitation modifié Système d'exploitation modifié Système d'exploitation modifié Usager interactif Usager interactif Usager interactif Machine virtuelle Machine virtuelle Machine virtuelle Gérard Padiou Systèmes d’exploitation 6 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches Types de solutions Problème Peut-on obtenir une solution performante sans modifier le système d’exploitation ? Types de solutions La virtualisation par simulation complète avec plusieurs variantes : Emulation de chaque instruction ; Compilation de blocs d’instructions à la volée. La paravirtualisation ; La virtualisation à hyperviseur ; Gérard Padiou Systèmes d’exploitation 7 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches Les problèmes à résoudre Principe de base Notion de machine virtuelle Un système d’exploitation « invité » ne s’exécute plus sur la machine réelle mais sur une machine « virtuelle ». + Un logiciel de virtualisation est donc nécessaire. Virtualisation des ressources allouées à une machine Partage du temps processeur entre machines virtuelles ; Une unité de disque virtuel : réalisé par un « gros » fichier ; Une carte graphique de base : réalisée par une fenêtre ; Gérard Padiou Systèmes d’exploitation 8 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches La virtualisation par simulation complète Avantages et inconvénients Avantage : pas de modification du SE « invité » Inconvénient : performances faibles : il faut tout émuler. Exemple Projet Bochs Site Web : http ://bochs.sourceforge.net/ Emulateur de la famille de PC à base de IA-32(x86) ; Développé en C++ ; Emulation du processeur, d’un BIOS et des périphériques de base (console, disque, . . . ) ; Supporte plusieurs SE : Linux, DOS, Windows NT/XT,. . . Problème : performances faibles mais bon support de test. Gérard Padiou Systèmes d’exploitation 9 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches L’idée La vision actuelle : par simulation (émulation) Architecture matérielle Système d'exploitation hôte Machine virtuelle Machine virtuelle encapsule et exécute encapsule et exécute Système d'exploitation invité Système d'exploitation invité Processus Processus Processus Processus threads threads Gérard Padiou Systèmes d’exploitation 10 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches Exemple de configuration PC émulée par Parallels Desktop Un processeur Intel Pentium. Jusqu’à 1500 MB de mémoire. une carte graphique VGA. Jusqu’à 4 disques d’interface IDE (de 20 à 128 GB représenté par un fichie dont un de démarrage. Jusqu’à 5 interfaces réseaux , dont une carte virtuelle Ethernet. 4 ports séries (COM) ports. 3 ports parallèles (LPT) un controleur USB 2.0 controller. une carte son. un clavier PC générique. une souris PS/2. Gérard Padiou Systèmes d’exploitation 11 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches L’idée La vision actuelle : par hyperviseur Architecture matérielle Hyperviseur Système d'exploitation (couches basses) Système d'exploitation (couches basses) (couches hautes) (couches hautes) Processus Processus Processus Processus threads threads Machine virtuelle Gérard Padiou Machine virtuelle Systèmes d’exploitation 12 / 30 Introduction La sécurité La gestion des périphériques L’idée Les problèmes à résoudre Les approches Des produits commerciaux Exemple Famille VMware Site Web : http ://www.vmware.com/fr/ Famille de logiciels de virtualisation. Versions serveurs ; Approche par hyperviseur ; Limite : processeur Intel (Pas d’émulation) Gérard Padiou Systèmes d’exploitation 13 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants La sécurité d’un système Problème fondamental Comment empêcher les accès frauduleux et/ou la destruction d’information ? Comment garantir qu’un système d’exploitation «résistera » à ses usagers (locaux ou distants) + Beaucoup de possibilités à contrer . . . Gérard Padiou Systèmes d’exploitation 15 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants La sécurité d’un système Une règle qui éviterait bien des ennuis + N’exécuter que les programmes que l’on a écrit . . . Le problème de base Un programme est toujours exécuté avec les droits de l’usager pour lequel « roule » le processus ; Les droits de l’usager qui a écrit le programme n’entrent donc pas en jeu ; Conclusion : celui qui a écrit le programme a pu prévoir qu’il aurait les droits d’accès d’un autre usager ; La grande quête du programmeur malveillant : arriver à faire exécuter ses programmes par un usager disposant du plus de droits possibles ⇒ par exemple, l’administrateur root Gérard Padiou Systèmes d’exploitation 16 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants L’exploitation des points faibles Les débordements de tableaux Avant la lecture de la chaı̂ne rangées à l’adresse @ch : SP @ retour @ch Bloc d'activation de Proc jsr Proc Code Pile Code pirate @ @r retour Gérard Padiou @ch SP jsr Proc Code Après la lecture de la chaı̂ne trop longue : Systèmes d’exploitation 17 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants L’exploitation des points faibles Les résultats de fonctions de la libc Code pirate @ @r retour SP @ch jsr Proc Code Usage malveillant de la fonction strcopy Après la lecture de la chaı̂ne trop longue : Gérard Padiou Code pirate @dst @src @dst @strcopy @ retour @ch SP Code pirate Code jsr Proc Après l’exécution de strcopy : Systèmes d’exploitation 18 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants L’exploitation des points faibles Que faire faire au code pirate ? Il faut avoir choisi le bon programme à attaquer Si le programme « au point faible » a son bit SETUID positionné et qu’il a été créé par root alors . . . : Il peut lancer par une primitive exec un shell avec les droits du super-utilisateur ; Il peut télécharger un programme via une connexion Internet et créer un processus qui exécutera ce programme. Ce processus peut alors accepter lui aussi des commandes, etc Gérard Padiou Systèmes d’exploitation 19 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants L’exploitation des points faibles L’injection de code Idée Introduire des commandes dans une donnée d’entrée Un programme accepte un nom de fichier en argument : argv[i] ; Il appelle la fonction system avec une commande en paramètre incluant la valeur argv[i] : strcat(cmd,argv[i]) ; system(cmd) ; dans argv[i] il y a : ”toto ; rm ∗” Gérard Padiou Systèmes d’exploitation 20 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants Les logiciels malveillants Principe Utiliser la faille incontournable : un utilisateur exécute un programme qu’il n’a pas écrit. Le programme est un freeware qui fait quelque chose de rigolo ou joli . . . Mais il fait aussi autre chose. . . de moins visible. Deux approches : Approche « cheval de Troie » Approche « virus » Gérard Padiou Systèmes d’exploitation 21 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants Les logiciels malveillants Approche « cheval de Troie » Principe Le programme malveillant installe un autre programme caché ; Ce programme caché est prévu pour être exécuté soit régulièrement, soit involontairement par un utilisateur . . . Exemple Le programme est caché dans /usr/X11R6/bin et s’appelle lq ; L’utilisateur malheureux a dans sa variable PATH : /bin :/usr/bin :/usr/local/bin :/usr/X11R6/bin L’utilisateur malheureux frappe par erreur > lq (pour > ls) Le cheval de Troie est exécuté. . . et remplace /bin/ls par un autre cheval de Troie. Gérard Padiou Systèmes d’exploitation 22 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants Les logiciels malveillants Approche « virus » Principe Au départ, principe de base identique au cheval de Troie ; Un programme contient un bout de code viral ; Lorsque le programme infecté est récupéré par un utilisateur, dès que celui-ci s’exécute, l’infection se propage. Un jour ou l’autre les programmes infectés déclenche . . . la maladie appelée charge utile (payload) Gérard Padiou Systèmes d’exploitation 23 / 30 Introduction La sécurité La gestion des périphériques La sécurité d’un système L’exploitation des points faibles Les logiciels malveillants Les logiciels malveillants Approche « virus » Plusieurs types de virus Ceux qui se propagent dans les codes binaires par écrasement ou ajout (parasites, bouche-trou) Ceux qui se propagent dans du code source ; Ceux qui se cachent en mémoire réelle et filtrent les appels de primitives ; Ceux qui infectent les pilotes de périphériques ; etc Gérard Padiou Systèmes d’exploitation 24 / 30 Introduction La sécurité La gestion des périphériques Les principes Réalisation Unix : La gestion des péripériques Les pilotes (drivers) Les principes Définition d’une interface générique ; Indépendance vis-à-vis du matériel ; Reconfiguration dynamique ; Les difficultés Grande diversité de ressources matérielles ; Périphériques amovibles ; Protection de la structure logique des systèmes de fichiers. Gérard Padiou Systèmes d’exploitation 26 / 30 Introduction La sécurité La gestion des périphériques Les principes Réalisation Unix : La gestion des périphériques L’interface d’accès aux périphériques Principes de conception Intégration dans l’espace de fichiers, dits spéciaux ; La désignation est identique ; L’interface d’usage au niveau commandes et primitives est celle des fichiers ; Les mécanismes de protection sont les mêmes. Répertoire dédié : /dev Deux catégories de périphériques (méthode d’accès) : modes « blocs » ou « caractères » A un fichier spécial correspond un pilote ; Désignation interne d’un périphérique : couple de numéros (majeur, mineur) Gérard Padiou Systèmes d’exploitation 27 / 30 Introduction La sécurité La gestion des périphériques Les principes Réalisation Interface générique Les primitives d’accès open : connexion au périphérique ; close : déconnexion ; read : lecture (si possible) ; write : écriture (si possible) ; ioctl : action spécifique. Remarque : la norme POSIX a introduit des primitives spécifiques pour remplacer la primitive « à tout faire » ioctl pour un terminal. + cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed, cfsetspeed, cfmakeraw, tcgetattr, tcsetattr Gérard Padiou Systèmes d’exploitation 28 / 30 Introduction La sécurité La gestion des périphériques Les principes Réalisation Réalisation Les pilotes > ls -l /dev/ttyp1 crw-w--- 1 PE tty 4, 1 .../dev/ttyp1 cc = open(/dev/ttyp1,...) 0 1 2 3 4 Pilote tty (partie supérieure) ... tty_open(1, ...) Gérard Padiou Systèmes d’exploitation 29 / 30 Introduction La sécurité La gestion des périphériques Les principes Réalisation Modes d’accès par bloc ou « caractère » Cache noyau Espace usager Espace usager Mode caractère Mode bloc Gérard Padiou Systèmes d’exploitation 30 / 30