Systèmes d'exploitation - Virtualisation, Sécurité et...

27
Introduction La s´ ecurit´ e La gestion des p´ eriph´ eriques Syst` emes d’exploitation Virtualisation, S´ ecurit´ e et Gestion des p´ eriph´ eriques erard Padiou epartement Informatique et Math´ ematiques appliqu´ ees ENSEEIHT Novembre 2009 erard Padiou Syst` emes d’exploitation 1 / 30

Transcript of Systèmes d'exploitation - Virtualisation, Sécurité et...

IntroductionLa securite

La gestion des peripheriques

Systemes d’exploitationVirtualisation, Securite et Gestion des peripheriques

Gerard Padiou

Departement Informatique et Mathematiques appliqueesENSEEIHT

Novembre 2009

Gerard Padiou Systemes d’exploitation 1 / 30

IntroductionLa securite

La gestion des peripheriques

plan

1 IntroductionL’ideeLes problemes a resoudreLes approches

2 La securiteLa securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

3 La gestion des peripheriquesLes principesRealisation

Gerard Padiou Systemes d’exploitation 2 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

L’ideeLa vision habituelle

Processus Processus Processus

Système d'exploitation

threads

MV MV MV

Architecture matérielle :processeurs, mémoire réelle, système d'interruption

ressources périphériques fixes ou amovibles

Gerard Padiou Systemes d’exploitation 4 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

L’ideePlusieurs machines sur une seule !

Idee fondamentale d’objet virtuel

Une vieille idee d’IBM (Cambridge-Grenoble) en 1967 ! :VM/CMS (Virtual Machine/Cambridge Monitor System)

Remise au gout du jour ;

Plusieurs implantations possibles ;

Mecanismes materiels facilitant la mise en œuvre (moded’execution).

Objectifs

Cohabitation de plusieurs systemes differents ;

Isolation : L’arret de l’un n’arrete pas les autres ;

Facilite le test : cohabitation entre serveur en exploitation ettest d’une nouvelle version.

Gerard Padiou Systemes d’exploitation 5 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

L’ideeLa vision des precurseurs

Architecture matérielle :processeurs, mémoire réelle, système d'interruption

ressources périphériques fixes ou amovibles

Machinevirtuelle

Systèmed'exploitation

modifié

Usagerinteractif

Noyau Hyperviseur

Machinevirtuelle

Systèmed'exploitation

modifié

Usagerinteractif

Machinevirtuelle

Systèmed'exploitation

modifié

Usagerinteractif

Gerard Padiou Systemes d’exploitation 6 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

Types de solutions

Probleme

Peut-on obtenir une solution performante sans modifier le systemed’exploitation ?

Types de solutions

La virtualisation par simulation complete avec plusieursvariantes :

Emulation de chaque instruction ;Compilation de blocs d’instructions a la volee.

La paravirtualisation ;

La virtualisation a hyperviseur ;

Gerard Padiou Systemes d’exploitation 7 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

Les problemes a resoudrePrincipe de base

Notion de machine virtuelle

Un systeme d’exploitation « invite » ne s’execute plus sur lamachine reelle mais sur une machine « virtuelle ».

+ Un logiciel de virtualisation est donc necessaire.

Virtualisation des ressources allouees a une machine

Partage du temps processeur entre machines virtuelles ;

Une unite de disque virtuel : realise par un « gros » fichier ;

Une carte graphique de base : realisee par une fenetre ;

Gerard Padiou Systemes d’exploitation 8 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

La virtualisation par simulation complete

Avantages et inconvenients

Avantage : pas de modification du SE « invite »

Inconvenient : performances faibles : il faut tout emuler.

Exemple

Projet BochsSite Web : http ://bochs.sourceforge.net/

Emulateur de la famille de PC a base de IA-32(x86) ;

Developpe en C++ ;

Emulation du processeur, d’un BIOS et des peripheriques debase (console, disque, . . . ) ;

Supporte plusieurs SE : Linux, DOS, Windows NT/XT,. . .

Probleme : performances faibles mais bon support de test.

Gerard Padiou Systemes d’exploitation 9 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

L’ideeLa vision actuelle : par simulation (emulation)

Architecture matérielle

Machine virtuelle

Système d'exploitationinvité

Processus Processusthreads

Machine virtuelle

Système d'exploitationinvité

Processus Processusthreads

encapsuleet exécute

encapsuleet exécute

Système d'exploitation hôte

Gerard Padiou Systemes d’exploitation 10 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

Exemple de configuration PC emulee par Parallels Desktop

Un processeur Intel Pentium.

Jusqu’a 1500 MB de memoire.

une carte graphique VGA.

Jusqu’a 4 disques d’interface IDE (de 20 a 128 GB representepar un fichie dont un de demarrage.

Jusqu’a 5 interfaces reseaux , dont une carte virtuelleEthernet.

4 ports series (COM) ports.

3 ports paralleles (LPT)

un controleur USB 2.0 controller.

une carte son.

un clavier PC generique.

une souris PS/2.

Gerard Padiou Systemes d’exploitation 11 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

L’ideeLa vision actuelle : par hyperviseur

Architecture matérielle

Machine virtuelle

Système d'exploitation(couches basses)

(couches hautes)

Processus Processusthreads

Hyperviseur

Machine virtuelle

Système d'exploitation(couches basses)

(couches hautes)

Processus Processusthreads

Gerard Padiou Systemes d’exploitation 12 / 30

IntroductionLa securite

La gestion des peripheriques

L’ideeLes problemes a resoudreLes approches

Des produits commerciaux

Exemple

Famille VMwareSite Web : http ://www.vmware.com/fr/

Famille de logiciels de virtualisation.

Versions serveurs ;

Approche par hyperviseur ;

Limite : processeur Intel (Pas d’emulation)

Gerard Padiou Systemes d’exploitation 13 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

La securite d’un systeme

Probleme fondamental

Comment empecher les acces frauduleux et/ou la destructiond’information ?

Comment garantir qu’un systeme d’exploitation «resistera » ases usagers (locaux ou distants)

+ Beaucoup de possibilites a contrer . . .

Gerard Padiou Systemes d’exploitation 15 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

La securite d’un systemeUne regle qui eviterait bien des ennuis

+ N’executer que les programmes que l’on a ecrit . . .

Le probleme de base

Un programme est toujours execute avec les droits de l’usagerpour lequel « roule » le processus ;

Les droits de l’usager qui a ecrit le programme n’entrent doncpas en jeu ;

Conclusion : celui qui a ecrit le programme a pu prevoir qu’ilaurait les droits d’acces d’un autre usager ;

La grande quete du programmeur malveillant : arriver a faireexecuter ses programmes par un usager disposant du plus dedroits possibles ⇒ par exemple, l’administrateur root

Gerard Padiou Systemes d’exploitation 16 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

L’exploitation des points faiblesLes debordements de tableaux

Avant la lecture de la chaıne rangees a l’adresse @ch :

@ re

tour

@ch

Cod

ePile

SP

Blocd'activation

de Proc

jsr

Pro

c

Apres la lecture de la chaıne trop longue :

@ re

tour

@ch

Cod

e

SP

jsr

Pro

c

@r

Cod

epi

rate

Gerard Padiou Systemes d’exploitation 17 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

L’exploitation des points faiblesLes resultats de fonctions de la libc

Usage malveillant de la fonction strcopy

Apres la lecture de la chaıne trop longue :

@ re

tour

@ch

Cod

e

SP

jsr

Pro

c

@r

Cod

epi

rate

Apres l’execution de strcopy :

@ re

tour

@ch

Cod

e

SP

jsr

Pro

c

Cod

epi

rate

@st

rcop

y

@sr

c

@ds

t@

dst

Cod

epi

rate

Gerard Padiou Systemes d’exploitation 18 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

L’exploitation des points faiblesQue faire faire au code pirate ?

Il faut avoir choisi le bon programme a attaquer

Si le programme « au point faible » a son bit SETUID positionneet qu’il a ete cree par root alors . . . :

Il peut lancer par une primitive exec un shell avec les droits dusuper-utilisateur ;

Il peut telecharger un programme via une connexion Internetet creer un processus qui executera ce programme.

Ce processus peut alors accepter lui aussi des commandes, etc

Gerard Padiou Systemes d’exploitation 19 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

L’exploitation des points faiblesL’injection de code

Idee

Introduire des commandes dans une donnee d’entreeUn programme accepte un nom de fichier en argument :argv[i] ;

Il appelle la fonction system avec une commande enparametre incluant la valeur argv[i] :

strcat(cmd,argv[i]) ;system(cmd) ;

dans argv[i] il y a : ”toto ; rm ∗”

Gerard Padiou Systemes d’exploitation 20 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

Les logiciels malveillants

Principe

Utiliser la faille incontournable : un utilisateur execute unprogramme qu’il n’a pas ecrit.

Le programme est un freeware qui fait quelque chose de rigoloou joli . . .

Mais il fait aussi autre chose. . . de moins visible.

Deux approches :

Approche « cheval de Troie »Approche « virus »

Gerard Padiou Systemes d’exploitation 21 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

Les logiciels malveillantsApproche « cheval de Troie »

Principe

Le programme malveillant installe un autre programme cache ;

Ce programme cache est prevu pour etre execute soitregulierement, soit involontairement par un utilisateur . . .

Exemple

Le programme est cache 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 execute. . . et remplace /bin/ls par unautre cheval de Troie.

Gerard Padiou Systemes d’exploitation 22 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

Les logiciels malveillantsApproche « virus »

Principe

Au depart, principe de base identique au cheval de Troie ;

Un programme contient un bout de code viral ;

Lorsque le programme infecte est recupere par un utilisateur,des que celui-ci s’execute, l’infection se propage.

Un jour ou l’autre les programmes infectes declenche . . . lamaladie appelee charge utile (payload)

Gerard Padiou Systemes d’exploitation 23 / 30

IntroductionLa securite

La gestion des peripheriques

La securite d’un systemeL’exploitation des points faiblesLes logiciels malveillants

Les logiciels malveillantsApproche « virus »

Plusieurs types de virus

Ceux qui se propagent dans les codes binaires par ecrasementou ajout (parasites, bouche-trou)

Ceux qui se propagent dans du code source ;

Ceux qui se cachent en memoire reelle et filtrent les appels deprimitives ;

Ceux qui infectent les pilotes de peripheriques ;

etc

Gerard Padiou Systemes d’exploitation 24 / 30

IntroductionLa securite

La gestion des peripheriques

Les principesRealisation

Unix : La gestion des periperiquesLes pilotes (drivers)

Les principes

Definition d’une interface generique ;

Independance vis-a-vis du materiel ;

Reconfiguration dynamique ;

Les difficultes

Grande diversite de ressources materielles ;

Peripheriques amovibles ;

Protection de la structure logique des systemes de fichiers.

Gerard Padiou Systemes d’exploitation 26 / 30

IntroductionLa securite

La gestion des peripheriques

Les principesRealisation

Unix : La gestion des peripheriquesL’interface d’acces aux peripheriques

Principes de conception

Integration dans l’espace de fichiers, dits speciaux ;

La designation est identique ;L’interface d’usage au niveau commandes et primitives est celledes fichiers ;Les mecanismes de protection sont les memes.

Repertoire dedie : /dev

Deux categories de peripheriques (methode d’acces) :modes « blocs » ou « caracteres »

A un fichier special correspond un pilote ;

Designation interne d’un peripherique : couple de numeros(majeur, mineur)

Gerard Padiou Systemes d’exploitation 27 / 30

IntroductionLa securite

La gestion des peripheriques

Les principesRealisation

Interface generique

Les primitives d’acces

open : connexion au peripherique ;

close : deconnexion ;

read : lecture (si possible) ;

write : ecriture (si possible) ;

ioctl : action specifique.

Remarque : la norme POSIX a introduit des primitives specifiquespour remplacer la primitive « a tout faire » ioctl pour un terminal.+ cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed, cfsetspeed,cfmakeraw, tcgetattr, tcsetattr

Gerard Padiou Systemes d’exploitation 28 / 30

IntroductionLa securite

La gestion des peripheriques

Les principesRealisation

RealisationLes pilotes

> ls -l /dev/ttyp1crw-w--- 1 PE tty 4, 1 .../dev/ttyp1

...cc = open(/dev/ttyp1,...)

01234 tty_open(1, ...)

Pilote tty (partie supérieure)

Gerard Padiou Systemes d’exploitation 29 / 30

IntroductionLa securite

La gestion des peripheriques

Les principesRealisation

Modes d’acces par bloc ou « caractere »

Cachenoyau

Espaceusager

Espaceusager

Mode bloc

Modecaractère

Gerard Padiou Systemes d’exploitation 30 / 30