Vous êtes sur la page 1sur 45

Elies Jebri

2008

1

Introduction à la sécurité

Table des matières

Notions et principes de base

3

Définitions

3

Système d'information

3

Sécurité du système d'information

3

Besoin de sécurité

3

Critères de sensibilité et de sécurité

3

Menace

4

Risque

5

Sécuriser un système

5

La défense en profondeur

5

La sécurité au sein de l'entreprise

5

Une approche globale

5

La politique de sécurité

6

Plan de continuité d'activité

6

Moyens techniques

7

Contrôle d'accès

7

Définition

7

Ressources, droits et profil

7

Authentification

8

Architecture

9

Protection des données

10

Contrôle d'intégrité

10

Protection de la confidentialité

11

Disponibilité

13

Surveillance du réseau

14

Segmentation du réseau

14

Parefeux et DMZ

15

Translation

d'adresse

16

Serveur mandataire et interconnexion

16

Sonde, IDS et IPS

16

Chiffrement

des liens

17

Les services essentiels: DNS et NTP

18

Protection applicative

19

Séparation des privilèges

19

Protection antivirus

19

Renforcement du système d'exploitation, empreinte et pot de miel

19

Architecture logicielle et principe du moindre privilège

20

Gestion de la mémoire et contrôle des formats de données

21

Les attaques

23

Programmes malveillants

23

Outils génériques

23

Attaques spécifiques aux messageries

23

1/32

Elies Jebri

2008

2

Attaques par le réseau

23

Principales techniques

23

Cartographie du réseau

25

Attaques cryptanalytiques par canaux auxiliaires

26

Recherche de vulnérabilités sur des binaires

27

En pratique

29

Les applications web

29

Le wifi

32

2/32

Elies Jebri

2008

3

Notions et principes de base

Définitions

Système d'information

Le système d'information représente l'ensemble des éléments participant à la gestion, au stockage, au traitement, au transport et à la diffusion de l'information dans l'entreprise.

Il est composé de plusieurs éléments :

d'une infrastructure constituée de réseaux et d'équipements actifs visant à assurer le stockage (ex

: serveur de fichier),

la

transmission

(ex

:

réseau

de

données),

l'affichage

((ex

: écran)), l'échange (ex

:

passerelle

d'interconnexion)

et

l'acquisition de données (ex :

caméra, poste de travail, robot logiciel).

d'un ensemble organisés d'outils logiciels, d'humains et de procédures assurant le traitement des données afin de répondre aux besoins de l'organisation tant dans les fonctions opérationnelles (production, réalisation de processus industriels) que les fonctions support (aide à la décision,

gestion RH,

).

D'une manière générale, le système d'information permet de :

collecter des informations ; stocker les informations ; traiter les informations ; diffuser les informations.

Sécurité du système d'information

La sécurité du système d'information ne se limite pas à la protection des systèmes informatiques ou de l'information numérique. Elle s'applique à la protection de l'information sous toute ses formes. L'objectif est de protéger l'information contre l'accès, la diffusion, la destruction et la modification illégitimes tout en garantissant sa disponibilité et son intégrité pour le système d'information.

Pour assurer la sécurité, il est nécessaire d'apprécier les risques qui pèsent sur le système d'information et de prendre les mesures nécessaires afin de garantir un niveau de sécurité conforme au besoin de sécurité.

Besoin de sécurité

Le

système indépendamment

des

besoin

niveaux

de

sécur ité

correspond

toute

à

l'expression

des

exigences

Il

s'appuie

de

considération

technique.

à atteindre en matière de critères de sensibilité et de sécurité.

Critères de sensibilité et de sécurité

Les critères habituellement utilisés sont :

La disponibilité ; L'intégrité ;

3/32

opérationnelles

la

du

définition

sur

Elies Jebri

2008

4

La confidentialité ; La traçabilité, l'imputabilité, la preuve, ou la non-répudiation.

La disponibilité correspond à la mesure du rapport entre la période durant laquelle un système est opérationnel est celle durant laquelle on aurait souhaité qu'il le soit. Par exemple, un système opérationnel à 99% est utilisable 99% du temps pendant lequel on désire l'utiliser (et non pas disponible 99% du temps).

L'intégrité correspond au niveau de protection du système contre une altération ou une destruction volontaire ou accidentelle qui entraîne l'impossibilité de l'utiliser de la manière prévue initialement. L'intégrité correspond à la prise en compte de quatre informations : l'intégralité (il ne manque pas d'élément), la précision (ex : l'heure donnée est suffisamment précise), l'exactitude (fiabilité de l'information) et la validité (pertinence et légitimité de l'information par rapport à son usage).

La confidentialité correspond au niveau de protection contre un accès à une information par des entités non autorisées.

La traçabilité et l'imputabilité correspondent à la capacité à identifier et suivre un élément du système d'information. Elle vise a assurer la non-répudiation.

La non-répudiation correspond à la possibilité de vérifier que l'envoyeur et le destinataire sont bien les parties qui disent avoir respectivement envoyé ou reçu le message. Autrement dit, la non- répudiation de l'origine prouve que les données ont été envoyées, et la non-répudiation de l'arrivée prouve qu'elles ont été reçues.

Menace

Une menace correspond à une méthode d'attaque résultant d'un élément menaçant.

L'élément menaçant peut être :

un humain ; la nature ; l'environnement (social, juridique, logiciel, matériel,

).

La méthode d'attaque peut être d'origine :

volontaire (malveillance) ; accidentelle; involontaire, c'est-à-dire liée à une erreur, ce qui suppose une action ou une absence d'action (maladresse, négligence, inconscience).

Elle peut être de nature :

technique :

logiciel : virus, cheval de troie, rootkit, logiciel espion. matériel : défaillance matérielle. environnement : incendie, inondation, climatisation. humaine :

ingénierie sociale ; espionnage. juridique, financière, législation relative à la cryptographie ; législation relative à la vie privée ;

4/32

Elies Jebri

2008

5

législation relative aux licences ; législation relative à la gestion des documents d'archive.

L'élément impacté par une menace est de nature variée :

un matériel ; un logiciel ; une personne ; un processus.

d'une personne des

informations confidentielles, que l'on n'est pas normalement autorisé à obtenir, en vue de les

exploiter à d'autres fins. Elle consiste à se faire passer pour quelqu’un que l’on est pas (en général un administrateur) et

de

données confidentielles, etc.) en inventant un quelconque prétexte (problème dans le réseau, modification de celui-ci, heure tardive, etc.). Elle peut se faire soit au moyen d’une simple communication téléphonique, soit par mail, soit en se déplaçant directement sur place (très rare).

L'ingénier ie sociale est

une

méthode

visant

à

obtenir

demander

des

informations

personnelles

(nom

de

connexion,

mot

de

passe,

Risque

Le r isque est l'appréciation d'une menace en fonction de la probabilité et l'impact de sa réalisation. L'impact peut être apprécié de manière qualitative ou quantitative (y compris monétaire).

est

d'autant plus vulnérable que la probabilité de réalisation et l'impact des menaces sont importants. De manière caricatural, on peut écrire : Vulnérabilité = probabilité X impact.

La vulnérabilité d'un système traduit

son

exposition

au

risque.

Un

système

La vulnérabilité global du système résulte de la somme des vulnérabilité marginales du systèmes aux différentes menaces.

Sécuriser un système

La confrontation des menaces aux besoins de sécurité permet de ne retenir que les risques qu'il est nécessaire de prendre en compte du fait de leur importance. Ceci permet de mettre en œuvre des mesures de sécurité qui diminuent le niveau de risque afin d'atteindre un niveau de sécurité qui soit conforme au besoin de sécurité.

La défense en profondeur

Le

chaque

périphérique.

confie la réalisation d'une action à la plus petite

qui

que la sécurité ne

pr incipe

sous-

se résume

de

défense

du

en

indépendamment

protection

la défense en profondeur est le principe de subsidiarité qui

la

profondeur

Il

consiste

à

à

sécuriser

vision

ensemble

Le

en

système.

s'oppose

d'une

corollaire

disant

de

entité

se délègue pas à quelque niveau que ce soit.

capable

de

la réaliser

elle-même.

Ce

La sécurité au sein de l'entreprise

Une approche globale

La sécurité du système d'information doit traiter de l'ensemble des éléments qui compose le système d'information, ce qui comprend de manière non exhaustive :

5/32

Elies Jebri

2008

6

la sécurité physique ; la sécurité des zones d'hébergement ; la sécurité des réseaux et de leur interconnexions ; la sécurité des systèmes d'exploitations ; la sécurité des applications ; la sécurité des données ; la sécurité des utilisateurs.

La politique de sécurité

La politique de sécurité est un ensemble d'orientation fixée en matière de sécurité. Elle est déclinée par les entités responsable de la sécurité dans leur domaine de responsabilité. Ceci se traduit

généralement sous la forme de :

de règles et de procédures à respecter ; de la mise en place d'outils techniques contribuant au respect de ces règles ; de formations des utilisateurs sur les comportements à avoir ; d'actions à entreprendre et de personnes à entreprendre lorsque des événements contrevenant aux règles sont détectées.

Concernant

niveau

du

règles permet de limiter les inadéquations

possibilité

tous

au

les utilisateurs

bon niveau de formation des utilisateurs et la précision dans la définition des

les

les

acteurs

de

par

au

sein

de

concernée,

l'entreprise,

car

les

elle

elle

usages

se

doit

d'être

tous

élaborée

et

de

la direction

Un

offertes

l'organisation

le

concerne

des

système.

entre

utilisateurs

système d'information.

Plan de continuité d'activité

Le plan de continuité est le complément de la politique de sécurité. Il a pour but de limiter les éventuelles conséquences d'une catastrophe et de définir les opérations à mener en cas de réalisation d'une menace dont l'impact rend impossible le maintien du fonctionnement nominal du système d'information. Il est aussi appelé "plan de reprise d'activité".

6/32

Elies Jebri

2008

7

Moyens techniques

Contrôle d'accès

Définition

Le contrôle d'accès est la première mesure essentielle et indispensable à mettre en oeuvre dans le cadre de la protection d'un système. Concrètement, c'est permettre à un sujet d'accéder à une ressource sous certaines conditions afin d'effectuer un certain nombre d'opérations. Autrement dit, il vise à garantir les droits d'accès aux données et ressources d'un système, en mettant en place des mécanismes d'authentification et de contrôle. Ces mécanismes permettent d'assurer que les utilisateurs des dites ressources possèdent uniquement les droits qui leurs ont été octroyés.

Le contrôle est généralement discrétionnaire. C'est le propriétaire qui définit les règles d'accès sur les informations ou systèmes dont il a la responsabilité. La définition des responsabilités est donc un préalable afin de savoir qui doit définir ces règles.

Ressources, droits et profil

Les r essour ces peuvent être très diverses dans leur nature :

pièce dans un bâtiment ; partage de fichiers ; librairie ou exécutables; flux multimédias (image, son, fichier sur un disque local ; boîte de messagerie ;

)

Les r ègles applicables peuvent généralement être rangées dans trois catégories :

droit de lecture ; droit d'écriture ; droit d'exécution.

Elles sont généralement associées à des conditions d'environnement. Par exemple, un utilisateur distant aura des droits réduits par rapport à la situation où il travaille au sein même de l'entreprise. Le droit d'écriture peut être conditionné à la concurrence des accès. Par exemple, la modification simultanée des données sur une tout ou partie d'une base de données par plusieurs utilisateurs peut être interdite, ce généralement en fonction des dépendances entre les données.

L'attribution

manipulant des informations. Il est en général courant qu'une même ressource soit utilisée à la

système

de

règles

ne

se

limite

pas

à

des

utilisateurs

mais

à

tout

fois par des êtres humains et des automates. Par exemple : les données d'un serveur de fichiers sont utilisées par les utilisateurs et les outils de sauvegardes (on ne veut généralement

pas que

Le nombre de catégories de règles d'accès ne se limite pas à trois. Par exemple, pour le droit d'écriture, on distingue souvent l'ajout d'information, la suppression d'information et la modification des informations existantes.

les données soient modifiées pendant la sauvegarde).

7/32

Elies Jebri

2008

8

Les dr oits d' accès ne sont pas directement attribuées aux utilisateurs. En effet, dès que le nombre d'utilisateur devient conséquent il devient impossible de s'assurer la cohérence des règles de chaque utilisateur au cours du temps. C'est pourquoi, on crée des profils d'utilisateurs correspondant à des configurations type de droits et ceux sont ces profils qui sont attribuées aux utilisateurs. Ainsi pour modifier les droits de tous les utilisateurs d'une même catégorie, il suffit de modifier un profil et non les droits de tous les utilisateurs.

Authentification

Pour pouvoir appliquer les règles d'accès, une condition nécessaire est d'authentifier l'utilisateur. Il est ainsi possible d'associer à l'identité de l'utilisateur l'ensemble des règles d'accès associées à son profil.

L'utilisation de profils facilite la délégation de l'authentification à un système tiers. Ce dernier met

en

une

oeuvre

les

mécanismes

en

associés,

il

transmet

ensuite

profil

un

à

identifiant

utiliser.

associée

évite

à

de

session contenant

particulier

l'information

du

Ceci

multipli er

les bases de comptes et facilite d'autant l'exactitude et

la validité des données

dans

le temps.

Ce

mécanisme impose

de

rendre

le

canal

de

communication

entre

le

système

opérationnel

et

le

système d'authentification sûr et le passage par la solution

d'authentification incontournable.

Authentification forte

L'authentification

repose

catégories suivantes :

forte

sur

la

vérification

de

deux

éléments

dans

ce que l'on possède : carte à puce ; ce que l'on est : biométrie ; ce que l'on sait : mot de passe, code confidentiel.

les

trois

Dans les solutions basées sur ce que l'on possède, on distingue les solutions passives

actives (appareil électronique). Les solutions

électroniques se divisent en dispositifs déconnectés qui fournissent à l'utilisateur un code (token) et ceux connectés qui utilisent un dialogue entre l'élément physique et le système d'authentification (carte

à puce). Les dernières sont les plus coûteuses mais permettent de rendre des services complémentaires comme le

(pistes magnétiques,

clef)

des

solutions

stockage du dossier d'un utilisateur.

Dans les solutions basées sur ce que l'on sait, il existe notamment les techniques suivantes :

l'empreinte digitale ; la reconnaissance de la main ; la reconnaissance faciale ; l'analyse vocale ; l'analyse de l'iris ; la reconnaissance dynamique de la signature.

Le principe de ces solutions repose sur le stockage une empreinte numérique des informations de

l'utilisateur

analysées

qui

peut

être

formée

à

partir

de

points

caractéristiques.

Lors

de l'authentif ication

de

l'utilisateur,

cette

empreinte

est

recalculée

dynamiquement

et

comparée à la base d'empreinte stockée.

 

Ce système ne permet pas de révoquer des accès en cas de compromission. L'information utilisée peut potentiellement être facile obtenir soit dans la vie quotidienne pour l'empreinte digitale soit via un système biométrique basé sur le même principe.

8/32

Elies Jebri

2008

9

Dans les solutions basées sur ce que l'on sait, l'utilisateur transmet une information qu'il est seul à connaître, le système d'authentification vérifie que l'information fournie par l'utilisateur est bien celle attendue. Un exemple simple est le mot de passe. L'information doit être

véhiculée par

Une solution alternative est de demander à l'utilisateur de fournir une information différente à chaque fois qu'il peut calculer à partir d'une information que lui et le système d'authentification possèdent. C'est le challenge/réponse. Par un exemple, l'utilisateur reçoit une chaîne de donnée. Il utilise son secret et cette chaîne de donnée pour calculer une nouvelle chaîne de donnée avec une fonction à sens unique ou fonction de hachage. Il transmet le résultat de ce calcul au système d'authentification qui vérifie que le résultat est le bon. Ceci permet d'éviter le rejeu.

Les solutions basées sur ce que l'on sait dépendent beaucoup des règles de gestion du secret :

complexité du mot de passe, durée de vie, stockage de cette information sur le serveur, réutilisation du mot de passe,

un canal sûr afin d'éviter l'interception de l'information.

La règle

de

base est

de ne jamais donner

aucun

mot

de passe à personne

et

en

particulier

à un administrateur.

 

I nfrastructur e de gestion de clefs

Une infrastructure de gestion de clefs

gérer les certificats électroniques durant toute leur vie. Elle fournit les services suivants :

Enregistrement des utilisateurs ; Génération de certificats ; Renouvellement de certificats ; Révocation de certificats ; Publication des certificats ; Publication des listes de révocation (comprenant la liste des certificats révoqués) ; Identification et authentification des utilisateurs ; Archivage, séquestre et recouvrement des certificats (option).

Elles contients les entités suivantes :

(ou

infrastructure à clefs

publiques)

permet

de

L'Autorité de Certification (AC ou CA) qui a pour mission de signer les demandes de certificat

(CSR

:

Certificate Signing

Request)

et

de

signer

les listes de révocation

(CRL

:

Certificate Revocation List). L'Autorité d'Enregistrement

(AE

ou

RA)

qui

a

pour

mission

de

générer

les

certificats, et d'effectuer les vérifications d'usage sur l'identité de l'utilisateur final (les certificats numériques sont nominatifs et uniques pour l'ensemble de l'IGC). L'Autorité de Dépôt (Repository) qui a pour mission de stocker les certificats numériques ainsi

que les listes de révocation (CRL).

Les certificats sont normalement délivrés pour un usage donné. On distingue en général les certificats de signature et ceux de chiffrement. Un découpage plus fin peut évidemment être choisi.

Architecture

On distingue principalement deux architectures de délégation de l'authentification :

le

L'utilisateur s'authentifie une fois auprès d'un portail

l'utilisateur

portail

unifié

généralement

basé

sur

l'utilisation

d'un

serveur

les

qui

avec le profil associé auprès des autres applications;

relaie

mandataire.

de

requêtes

Elies Jebri

2008

10

9/32

Elies Jebri

2008

11

le

serveur

d'authentification

:

l'utilisateur

accède

directement

à

l'application

qui

demande

au

serveur

d'authentification

de

vérifier

les

informations

d'authentification

transmises

par l'utilisateur.

 

Dans le cas où l'authentification n'est pas déléguée, l'une des deux solutions est adoptée au sein d'un unique système.

Protection des données

Contrôle d'intégrité

Les codes correcteurs d'erreurs

Lors du stockage ou du transfert d'une information, le signal subir des modification affectant l'intégrité de celle-ci du fait :

ou

le

support

peut

de la perte d'un paquet ; de l'impossibilité de savoir si un bit est à 0 ou 1 (vieillissement du support) ;

Le codage correcteur

l'information. Ils sont caractérisés par leur capacité à détecter et corriger des erreurs en fonction de leur type. Les erreurs peuvent être isolées, en bloc, uniformément aléatoires. Le choix du code correcteur repose donc d'une part sur la connaissance des erreurs possibles

et d'autre part sur la fréquence avec laquelle elles se produisent.

Le principe est de rajouter à l’information numérique, des symboles binaires, appelés symboles de redondance, suivant une loi mathématique particulière. Le décodeur vérifie que la loi de codage n’a pas été modifié lors des divers traitements réalisés sur l’i nformation numérique codée. Si c’est le cas, le décodeur conclut à l’absence d’erreurs ; dans le cas contraire, par un traitement approprié, il repère les symboles erronés puis les corrige par simple inversion binaire.

assurent une redondance de

d'erreur,

ou

codage

de

canal,

Un exemple simple est le contrôle de parité. Sur un octet (8 bits d'information 0 ou 1), un bit est utilisé pour indiquer la parité des sept autres. Si un nombre impair d'erreurs se produit, on peut détecter qu'il y a eu une erreur mais pas la corriger.

Un exemple plus complexe mais beaucoup plus performant sont les turbocodes qui sont par exemples utilisés dans l'UMTS. Ils permettent d'obtenir de très bons résultats proches de la limite théorique de pouvoir de correction de Shannon.

Le principe est d'associer deux codes correcteurs simples pour obtenir un code composite à deux dimensions. Concrètement, le turbo codeur produira trois sorties à envoyer sur le canal de transmission (après modulation éventuelle) :

l'entrée du turbo-codeur ; la sortie du premier codeur ; la sortie du deuxième codeur.

Ce codage permet donc de répartir l'information apporté par un bit de la trame sur ses voisins (avec le codage du premier codeur) et même sur toute la longueur de la trame transmise (avec le codage du deuxième codeur). Ainsi, si une partie du message est fortement abîmée pendant la transmission, l'information peut encore se retrouver ailleurs.

Pour

décoder,

chaque

code

élémentaire

est

d'abord

décodé

avec

le

premier

codeur

puis

on

 

10/32

Elies Jebri

2008

12

renouvelle le processus de décodage dans le second et ainsi de suite. Ceci permet à chaque étape de corriger de nouvelles erreurs.

Le pouvoir de correction de tout code correcteur ne permet pas de dépasser la capacité du canal qui est définit par la limite de Shannon ou seuil plancher pour le rapport signal/bruit.

Les codes correcteurs d'erreurs ne permettent pas de se prémunir des modifications intentionnelles. L'attaquant est en effet en mesure de recalculer les valeurs de redondances et ainsi cacher les modifications qu'il a effectuées.

Condensat numérique ou fonction de hashage

Une fonction de hachage est une fonction qui fait subir une succession de traitements à une donnée quelconque fournie en entrée pour en produire une empreinte servant à identifier la donnée initiale.

Ceci permet de stocker des mots de passe. En ne stockant que l'empreinte, on ne dispose pas du mot de passe. Lorsque l'utilisateur s'authentifie, on compare l'empreinte calculée avec celle stockée. L'utilisation d'un sel par utilisateur permet d'éviter que deux utilisateurs avec le même mot de passe aient la même empreinte.

Des exemples de fonction de hashage sont md5, sha-1 ou sha-2.

Les condensats numériques permettent également de calculer des sommes de contrôles. Ceci donne un moyen simple de vérifier l'intégrité lors d'une transmission de données.

Scellement numérique et signature numérique

Deux techniques peuvent être utilisées : le scellement numérique et la signature électronique.

Le scellement numérique repose sur un algorithme non linéaire irréversible qui permet de calculer un sceau à partir des données transmises. Ce sceau est ensuite ajouté aux données utiles et transmis avec l'information. L'algorithme de scellement peut être un algorithme de chiffrement par bloc en mode CBC dans lequel on utilise le bloc précédent chiffré et le bloc à chiffrer pour calculer le nouveau chiffré.

Ce peut également être une fonction de condensation ou fonction de hachage dont le résultat est chiffré avec un algorithme de chiffrement symétrique.

La signature numérique est un scellement particulier dans lequel on chiffre le condensat numérique avec un algorithme asymétrique ce qui garantit l'identité de la personne qui a créé le message.

Protection de la confidentialité

Chiffrement

Le chiffrement des informations vise à rendre incompréhensibles les données par un attaquant. Elle est utilisée pour les connexions sécurisées dans le cadre du commerce électronique. La sécurité repose sur la connaissance d'un secret. Une attaque courante contre cette technique est l'attaque par le milieu ou man in the middle. Elle consiste à se faire passer auprès de chacun des intervenants pour l'autre intervenant.

Les principaux systèmes de chiffrement sont :

le chiffrement symétrique. Il utilise la même clef pour chiffrer et déchiffrer. Le chiffrement asymétrique. Il utilise des clefs différentes : une paire composée d'une clef publique, servant au chiffrement, et d'une clé privée, servant à déchiffrer. Le point fondamental

11/32

Elies Jebri

2008

13

soutenant cette décomposition publique/privée est l'impossibilité calculatoire de déduire la clé privée de la clé publique.

La sécurité du chiffrement repose non pas sur l'algorithme utilisé mais sur le secret utilisé. Il est donc recommandé d'utiliser des longueurs minimales :

pour un chiffrement symétrique, une clef d'au moins 128 bits. pour un chiffrement asymétrique, une clef d'au moins 2048 bits.

La taille de la clef doit être d'autant plus longue que l'information sera confidentielle longtemps. Il est par ailleurs recommandé d'utilisé des chiffrements par blocs et non par flot avec des tailles de blocs d'au moins 128 bits. Il est recommandé d'utiliser un chiffrement symétrique AES-CBC et la fonction de hashage SHA-256. Sauf exception, il faut également limiter la crytopériode (la durée limitée d'emploi d'une clé de chiffrement) à une durée inférieure à deux ans.

Stéganographie

La stéganographie est l'art de la dissimulation. L'objet n'est pas de rendre un message inintelligible mais de le faire passer inaperçu. Pour être efficace, il faut que le procédé utilisé empêche une personne interceptant le message :

de découvrir le contenu caché ; de savoir qu'un contenu est caché ; empêcher la transmission d'un contenu caché éventuel ; d'envoyer une fausse information en se faisant passer pour l'émetteur.

Les techniques pouvant être utilisées sont l'utilisation :

d'un message adhoc ou codage sous forme d'une apparence de spam. Le message utilise une convention connue pour transmettre via des banalités de l'information. Le principe est d'utiliser un codage binaire simple basé sur l'utilisation de synonyme par exemple (succès = 1, réussite = 0). Ce procédé est difficilement utilisable de manière répétée. de modification mineures du contenu, par exemple l'usage des bits de poids faible d'une image (LSB) ou la modulation fine d'un texte écrit. Décaler une lettre de quelque pixels est pratiquement invisible à l'œil nu. En jouant sur les interlettrages d'un texte très long et à raison de deux valeurs d'espacement correspondant à 1 et 0, il est possibe de transmettre un message sous forme papier. De la même façon, on peut marquer les caractères (avec un point par exemple). La dissimulation dans un élément annexe du contenu. Cela consiste par exemple à maintenir une image intacte mais à y incorporer une table des couleurs ou palette construite dans un ordre qui paraît arbitraire.

Les canaux cachés

Un canal caché est un canal de communication qui utilise la bande passante d'un autre canal dans l'objectif de transmettre des informations sans l'autorisation ou la connaissance du propriétaire de l'information. Il existe deux types de canaux cachés :

Les storage channels : le processus émetteur modifie une donnée particulière, et le processus récepteur détecte et interprète la donnée modifiée pour recevoir indirectement des informations. Les timing channels : le processus émetteur module la durée d'une tâche effectuée par le processus récepteur, et le processus récepteur interprète cette variation comme une information.

La protection contre de tels système est très difficile et n'est généralement possible que dans le cas

Elies Jebri

2008

14

12/32

Elies Jebri

2008

15

de

comportements

facile

à

détecter

et

peu

ambigu.

Tout

canal

qui

permet

d'envoyer

deux informations peut être utilisé comme canal caché.

 

Les données oubliées

La protection de la confidentialité nécessite de se premunir on a oublié l'existence.

contre

le

vol

de données dont

Par exemple, une femme de ménage dans une entreprise volant chaque jour quelques pages en bas d'une des piles de papier sur un bureau a toute les chances que l'on ne s'aperçoive pas de la disparition de ces documents.

Les disques durs contiennent de nombreuses données résiduelles. Pour accéder à un fichier le système utilise une table des fichiers qui donne la correspondance entre le nom du fichier et son emplacement sur le support physique. Pour des raisons de performance, lors de l'effacement d'un fichier, on ne supprime que la référence dans la table. Le fichier est donc toujours accessible si l'on lit le support au bon endroit.

Des outils permettent de récupérer l'information sur un support sans la table des fichiers. Les outils d'effacement résiduel suppriment le fichier du support en écrivant des données aléatoires sur les espaces non affectés à des fichiers présent dans la table. Il effectuent cette tâche plusieurs fois car à chaque écriture les données précédentes ne sont pas totalement effacées. En effet la tête du disque dur n'inscrit jamais la donnée exactement au même endroit sur le disque.

Des données peuvent également être conservées dans les imprimantes réseaux, sur les disques réseaux de partage de fichiers, fichiers de quarantaine des antivirus, fichiers temporaires, Toutes ces zones peuvent être la source de fuite d'informations.

Disponibilité

Haute-disponibilité

La haute disponibilité correspond à des sytèmes pour lesquels on a mis en place des mécanismes assurant une disponibilité suffisante. On distingue quatre techniques :

l'asynchronisme. Un élément synchrone peut être bloqué car il attend une ressource pour être actif. Un fonctionnement asynchrone lui permet d'être disponible même si des ressources lui manque pour traiter la requête. la répartition de charge. La puissance des éléments doit être suffisante pour assurer le service si l'un d'entre eux est défaillant. Par exemple avec trois machines, chaque serveur doit pouvoir assurer 50% de la charge. Ceci permet d'avoir une très bonne fiabilité puisqu'un élément fiable à 99% redondé une fois donne une fiabilité de 99,99% (probabilité que les deux éléments soit défaillants au même moment = 1/100x1/100 = 1/10.000 ). Dans un fonctionnement actif/actif, tous les composants sont actifs en permanence. En mode actif/passif, le secours surveille les autres équipements et remplace l'élément défaillant lorsqu'il le détecte. la redondance différentielle. On utilise des outils différents pour assurer la même fonction. Par exemple : utilisation de deux antivirus de marque différente. la redondance avec système de vote. Différents composants traitent les mêmes entrées et produisent donc (en principe) les mêmes sorties. Les résultats produits par tous les composants sont collectés, puis un algorithme est mis en œuvre pour produire le résultat final. L’algorithme peut être simple (vote à la majorité) ou complexe (moyenne, moyenne pondérée, médiane…), l’objectif étant d’éliminer les résultats erronés imputables à un dysfonctionnement sur l’un des

Elies Jebri

2008

16

13/32

Elies Jebri

2008

17

composants et/ou de fiabiliser un résultat en combinant plusieurs résultats légèrement différents. Ce

procédé est utilisé généralement dans les cas suivants :

Des systèmes reposant sur des capteurs (exemple : capteurs de température) pour lesquels les capteurs sont redondés Des systèmes ou plusieurs composants différents assurant la même fonction sont utilisés et pour lesquels un meilleur résultat final peut être obtenu en combinant les résultats produits par les composants (exemple : système de reconnaissance de formes utilisant plusieurs algorithmes pour obtenir un meilleur taux de reconnaissance.

Raid

de

nombreuses pièces mécaniques. La mise en raid permet de combiner de nombreux périphériques de stockage de sorte que ce groupement offre une capacité, une fiabilité et/ou des performances accrues, et ce pour un coût largement inférieur à un périphérique de stockage unique équivalent. Il peut être logiciel ou matériel.

Le raid 0 consiste à faire travailler n disques en parallèle. La perte d'un disque entraîne la perte de données. Les performances sont améliorées.

Le raid 1 consiste à faire travailler les disques en miroir. La capacité est celle du plus petit disque. La fiabilité est élevée puisqu'il faut perdre tout les disques pour perdre les données. Le coût est élevé.

Le raid 5 ajoute au raid 0 de la redondance afin de permettre de stocker sur n disques de taille X, (n-1) * X données. Il supporte la perte d'un disque et est pénalisé en écriture du fait de l'ajout de la redondance.

Le

exemple

Les sauvegardes

La sauvegarde consiste à dupliquer et à mettre en sécurité les données contenues dans un système informatique. La principale difficulté est la restauration des données sauvegardées dans le système en production.

L'archivage

L'archivage correspond à un enregistrement des données sur un support, généralement non réinscriptible, pour une conservation de longues durée. Les données archivées ne sont normalement plus utiles en production. La principale difficulté est le choix d'un support matériel et d'un format de fichiers pérennes en particulier dans les stockage de très longues durées (>30 ans).

Le disque dur est

l'une

des

pièces

les

plus

fragiles

car

il

comporte

raid

ne

permet

pas de protéger

contre les destructions

importantes du fait

par

d'un incident électrique.

Surveillance du réseau

Segmentation du réseau

ACL

La mise en place d'un plan d'adressage définissant la manière dont seront distribuées les adresses IP et du routage qui va permettre le transfert des informations sur le WAN constituent deux préalables à la maîtrise des flux. Ceci peut s'accompagner de la mise en place d'ACL (liste de contrôle

Elies Jebri

2008

18

14/32

Elies Jebri

2008

19

d'accès ) définissant les adresses Ips ayant le droit de communiquer. Les ACL peuvent être utiliser pour filter des protocoles utilisant des ports statiques mais pas les protocoles complexes à port dynamiques.

VLAN

L'IEEE a défini les VLAN (Virtual Area Network) sous la référence 802.1Q. Il s'agit d'un réseau local logique indépendant. Plusieurs VLAN peuvent être créer sur un même réseau physique. Ceci permet de segmenter le réseau en diminuant la zone de broadcast et contribue également à la sécurité du réseau en rendant plus difficile le dialogue entre des machines appartenant à des VLAN différents.

Il existe des VLAN

par port physique ; par adresse MAC ; par adresse IP ou sous-réseau.

Parefeux et DMZ

Parefeux

Un pare-feu est parfois appelé coupe-feu ou encore firewall en anglais est un équipement offrant des fonctions de filtrage de paquets. Le filtrage se fait selon divers critères, les plus courants étant :

l'origine ou la destination des paquets (adresse IP, ports TCP ou UDP, interface réseau, etc.) les options contenues dans les données (fragmentation, validité, etc.) les données elles-mêmes (taille, correspondance à un motif, etc.)

On distingue au moins deux familles de parefeux :

pare-feu à états (stateful firewall) : ils permettent de filtrer les protocoles avec un suivi de la connexion. Ce suivi de connexion est soit lié au protocole dans le cas de TCP soit simulé pour UDP. Pare-feu applicatif : il vérifie la conformité du paquet à un protocole attendu. Il permet en outre de suivre les protocoles utilisant des ports dynamiques tels que FTP qui échangent au niveau applicatif des informations du niveau IP (échange d'adresses) ou du niveau TCP (échange de ports).

Le filtrage applicatif n'est pas toujours possible. Avec IRC, par exemple, une requête DCC (direct client to client) fait passer dans la requête au serveur le pseudo de l'utilisateur et non son adresse IP, le pare-feu ne peut donc pas connaître l'adresse IP du client distant qui va essayer d'établir la connexion.

DMZ

Les parefeux permettent d'isoler

appelées zones démilitarisées ou DMZ. Ces zones sont séparées suivant le niveau de confiance qu'on

leur porte.

La DMZ (zone démilitarisées) se définit comme une zone, un sous-réseau voire même une plage d'adresses IP (ou une seule adresse IP) sur un réseau n'étant pas soumise aux règles d'un pare-feu mais dont les échanges avec d'autres zones sont filtrés. Généralement une DMZ n'accepte que les connexions entrantes si elle n'héberge que des serveurs, à l'exception de certains protocoles de base comme DNS ou NTP que les serveurs peuvent avoir besoin d'utiliser.

le

réseau

en

plusieurs

zones

de

sécurité

15/32

Elies Jebri

2008

20

Translation d'adresse

La

non-uniques et souvent non routables à un ensemble d'adresses externes uniques et routables.

On distingue les types suivants :

translation

d'adresse

consiste

à

faire

correspondre

des

adresses

IP

internes

NAT : changement de l'adresse IP par une autre ; PAT : changement de l'adresse IP et du port.

statiques ou dynamiques,

unidirectionnelles ou bidirectionnelles. Le NAT améliore la sécurité en cachant le réseau interne vis-à-vis de l'extérieur, une fois la connexion établie, la sécurité de la connexion n'est pas améliorée.

Les règles de correspondances peuvent

être

Serveur mandataire et interconnexion

Le serveur mandataire ou proxy (de l'anglais) est un serveur informatique qui a pour fonction de relayer des requêtes entre un poste client et un serveur. Les serveurs mandataires sont notamment utilisés pour assurer les fonctions suivantes :

mémoire cache ; la journalisation des requêtes ; le filtrage et l'anonymat.

Le reverse proxy est implémenté du coté des serveurs. L'utilisateur passe par son intermédiaire pour accéder aux applications. Cette technique permet entre autre de protéger un serveur des attaques provenant de l'extérieur. Il permet en outre de fournir les services suivants :

accélération SSL ; équilibrage de charges entre les serveurs ; cache des éléments statiques et compresssion des données.

Les serveurs mandataires permettent la mise en place d'interconnexions, c'est -à-dire de relier des systèmes ayant des caractéristiques différentes et en particulier des niveaux de sécurité différents. Une interconnexion entre deux acteurs implique normalement :

un engagement d'innocuité vis-à vis de l'autre ; un engagement de coopération pour contribuer à la sécurité ; la possibilité unilatérale de rompre ou de restaurer l'interconnexion ; la possibilité de contrôler les mesures de sécurité.

Sonde, IDS et IPS

Les sondes permettent d'écouter le trafic sans perturber le réseau. Elles comprennent un prisme (pour les fibres optiques) ou bien une connectique adaptée qui permet de capter une partie du signal afin de ne pas couper la liaison en cas de dysfonctionnement de la sonde. Le signal est ensuite stocké et peut être analysée par la sonde.

Un système de détection d'intrusion (ou IDS : Intrusion Detection System) est un mécanisme destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou un hôte). Il permet ainsi d'avoir une connaissance sur les tentatives réussies comme échouées des intrusions.

Comme

un

antivirus,

il

s'appuie

sur

la recherche de signature

ou

de

motifs

(pattern).

Il

peut

également essayer de faire de la corrélation entre plusieurs événéments issus de sondes différentes.

Elies Jebri

2008

21

16/32

Elies Jebri

2008

22

Un système de prévention d'intrusion (ou IPS, Intrusion Prevention System) est un outil similaire aux IDS, sauf que ce système peut prendre des mesures afin de diminuer les risques d'impact d'une attaque. C'est un IDS actif, il détecte un balayage automatisé, l'IPS peut bloquer les ports automatiquement.

Des comportements typiquement suspects sont par exemples :

les scans : généralement

sessions établies et beaucoup de messages icmp pour indiquer des ports fermés ; les virus et les vers : beaucoup de petits flux courts vers un grand nombre de machine et/ou de ports. Les destinations peuvent être aléatoires et ne pas correspondre à des segments réseaux routés. L'adresse source peut également ne pas faire partie du réseau si les paquets sont forgés. les réseaux cachés : encapsulation dans des flux DNS, icmp ou http. Des flux DNS ou icmp de plus de quelques secondes et ko sont suspects. Des flux http symétriques sont également à surveiller en particulier s'ils durent dans le temps. La détection d'adresses publiques ou de ports non standards est à surveiller. les flux répétifs : ceux-ci peuvent correspondre à de la messagerie ou de la navigation web. les changements de protocoles entre deux points qui peuvent correspondre à différentes tentatives d'encapsulation.

beaucoup de petits flux

depuis une adresse IP

avec peu

de

Chiffrement des liens

IPSEC

Réalisé pour le protocole IPv6, IPSec fut adapté pour Ipv4. Il permet d'assurer un chiffrement et une authentif ication des flux au niveau de la couche transport. Il est l'un des éléments essentiel pour la mise en place des réseaux privés virtuels (VPN).

Son fonctionnement repose sur deux étapes :

l'échange des clefs

ISAKMP

Internet Security Association and Key Management Protocol). Le protocole IKE est en charge de négocier la connexion. Ce protocole permet deux types d'authentifications, PSK (Pre-Shared Key ou secret partagé) pour la génération de clefs de sessions ou à l'aide de certificats/signatures RSA. un ou plusieurs canaux de données par lesquels le trafic du réseau privé est véhiculé, deux protocoles sont possibles :

:

une

connexion

UDP

depuis

et

vers

le

port

500

(canal

pour

le

protocole

n°50,

ESP

(Encapsulating

Security

Payload)

qui

fournit

l'intégrité

et

la confidentialité ;

 

le protocole n°51, AH, (Authentication Header) qui ne fournit que l'intégrité.

Deux modes sont possibles :

le mode transport : les données utiles sont chiffrées et le paquet est modifié en conséquence (en particulier la valeur du ckecksum). le mode tunnel. chaque paquet est chiffré dans son ensemble et le résultat devient l'information utile d'un nouveau paquet. Le tunnel préserve la confidentialité de toutes les informations sur les émetteurs et récepteurs dans le cas où on utilise le mode ESP.

Ceci permet de créer des chaînes de tunnels avec des redirections, des séparations et des multiplexation de flux. La compatibilité et l'interropérabilité des produits est le problème essentiel.

SSL/TLS

Elies Jebri

2008

23

17/32

Elies Jebri

2008

24

SSL/TLS est un protocole de sécurisation des échanges au niveau de la couche de session. Le chiffrement est réalisé par un chiffrement asymétrique (qui va permettre une authentification) et un chiffrement symétrique (qui est plus léger qu'un chiffrement asymétrique) qui va assurer la transmission des informations. On y adjoint une fonction de hachage pour s'assurer que les données sont transmises sans être corrompues.

Dans la majorité des cas, l'utilisateur authentifie le serveur SSL sur lequel il se connecte. Cette authentif ication est réalisée par l'utilisation d'un certificat numérique X 509 délivré par une autorité de confiance (AC). Mais de plus en plus d'applications web utilisent maintenant l'authentification du poste client en exploitant SSL. Il est alors possible d'offrir une authentification mutuelle entre le client et le serveur.

Le protocole utilisant le plus SSL/TLS pour fournir la couche de sécurité est HTTPS.

S/MIME

Multipurpose Internet Mail Extensions (MIME) est un standard internet qui étend le format de données des courriels pour supporter des textes en différents codage de caractères autres que l'ASCII, des contenus non textuels, des contenus multiples, et des informations d'en-tête en d'autres codages que l'ASCII. Les courriels étant généralement envoyés via le protocole SMTP au format MIME, ces courriels sont souvent appelés courriels SMTP/MIME.

L'utilisation des types multipart/signed et multipart/encrypted permet de sécuriser le contenu des courriels.

multipart/signed est utilisé pour attacher une signature numérique à un message. Il est composé de deux parties : le corps du message et la partie signature. L'ensemble de la partie corps du message, y compris les en-têtes MIME, est utilisé pour générer la signature.

multipart/encrypted

définit les informations nécessaires pour décrypter la seconde partie (application/octet-stream).

un

est

utilisé pour

envoyer

contenu

encrypté.

Sa première

partie

Les services essentiels: DNS et NTP

Le service de nommage (DNS : domain name service) est l'un des services les plus utilisés et n'est pas le plus souvent correctement protégé. Les principales vulnérabilités sont :

la fuite d'informations ; la corruption de la résolution ; le déni de service.

Dans le cas où une station interne peut effectuer des requêtes DNS vers l'extérieur, il est possible d'envoyer de l'information soit par un tunnel ssh sur le port 53 ou bien en faisant un tunnel IP directement dans le trafic DNS. La solution est de n'autoriser que les serveurs mandataires à effectuer des requêtes vers l'extérieur du réseau.

La corruption de la résolution vise à corrompre les données DNS pour assurer un trafic avec un autre site que celui désiré en :

compromettant le processus de résolution ; en modifiant le trafic DNS ; en modifiant le cache dans le serveur de nom.

Le déni de service consiste à envoyer un grand nombre de question sur les serveurs DNS exposé à l'extérieur.

18/32

Elies Jebri

2008

25

serveur

DNS cache interne permet la résolution des adresses internes auprès des machines internes. Pour les proxys cherchant à résoudre des adresses externes, les serveurs caches relaient la question auprès de serveurs placés en DMZ et qui ne peuvent que faire la résolution des sites externes. Pour les interrogations externes, un serveur dédié et isolé effectue la résolution des noms des domaines dont on a la responsabilité.

Pour la sécurisation du DNS vis-à-vis du contrôleur de domaine ou du serveur DHCP qui peuvent effectuer des mise à jours dynamiques du DNS, il est possible de créer des sous-domaines sur lesquels ces serveurs ont des droits limités.

L'exploitation des journaux n'est possible que si les équipements sont à l'heure. Il donc important de les faire se synchroniser sur un serveur de temps en utilisant le protocole NTP.

Il

est

nécessaire

de

segmenter

le

service

DNS

en

fonction

des

besoins.

Le

Protection applicative

Séparation des privilèges

Protection antivirus

protégé

techniques principales :

Censé

le

micro-ordinateur

contre

les malwares,

l'antivirus repose sur quatre

la recherche de séquences de programmes caractéristiques (détection sur signature), la méthode la plus usitée; l'analyse heuristique ou analyse du comportement la modification de zones réservées.

Les antivirus sont globalement satisfaisante pour se prémunir des attaques communes mais sont inefficaces face aux attaques ciblées ou aux codes malicieux complexes.

Lors de la détection d'un virus, l'antivirus dispose de trois options, il peut :

tenter de réparer les fichiers endommagés en éliminant le virus ; mettre le fichier en quarantaine afin qu’ils ne puissent être accessibles aux autres fichiers ni se répandre et qu'il puisse éventuellement être réparé ultérieurement ; supprimer les fichiers contaminés.

En pratique, seule la suppression a un intérêt réel.

Renforcement du système d'exploitation, empreinte et pot de miel

Le renforcement des systèmes d'exploitation s'appuie avant tout sur l'utilisation de règles simples :

verrouiller les comptes utilisateurs avec un mot de passe ayant un niveau de complexité suffisante (mélanger chiffre et lettres, minuscules et majuscules, attention à l'attaque par dictionnaire et aux substitutions basique o > 0 ou aux séquences de clavier " azerty ") ; gérer les accès au système de fichiers ; minimiser le nombre de services ; faire les mises à jour.

Une mesure complémentaire est de diminuer l'information diffusée par le serveur afin de rendre plus difficile l'identification du système d'exploitation utilisé et des logiciels associés.

19/32

Elies Jebri

2008

26

On peut configurer les services afin de limiter l'information fournie par les banières. On peut aussi modifier le comportement réseau par une personnalisation de la pile TCP/IP. Ceci peut se faire soit avec un dispositif en coupure qui va appliquer des filtres (par exemple netfilter) modifiant ainsi les réponses soit en modifiant directement le comportement de la pile au niveau du noyau. La seconde solution est plus intrusive et n'est pas toujours possible en particulier pour les systèmes d'exploitation propriétaires.

De nombreux paramètres dépendent du système d'exploitation, généralement pour des questions de

Des outils

performances : taille de la fenêtre, réponse sur des ports fermés en UDP et en TCP,

sont également basés sur la réponse à des paquets mal formés. Une solution est d'utiliser un filtre suprimant les paquets mal formatés (taille de l'en-tête, combinaison de drapeaux invalide,

)

et réécrivant certains paramètres (recalcul du checksum, modification des drapeaux, complété par une reconstruction des paquets fragmentés.

Ces techniques sont en général difficiles à mettre en oeuvre car elles rendent plus difficiles l'application des correctifs et des nouvelles versions.

Pour comprendre les attaques qui sont menés contre des serveurs, une technique est la mise en place de serveurs dédiés, les honypots, qui servent de cibles pour les attaques. L'analyse des comportements permet de mieux détecter les attaques sur les vrais serveurs.

)

Architecture logicielle et principe du moindre privilège

Les risques

si

initiale. Certains facteurs sont propices à des failles de sécurité et nécessitent des précautions particulières :

Un

logiciel

ne

peut

être

sécuri

que

la problématique est traitée dès la conception

utilisation d'un langage de bas niveau comme C qui permet nu grand nombre d'erreurs ; développement spécifique à une plate-forme avec utilisation de mécanismes spécifiques à la plate-forme ; utilisation de démons fournissant des services réseaux qui exposent le logiciel à une exploitation à distance; utilisation de protocole Internet complexes et qui contiennent parfois des problèmes de sécurité inhérents : messagerie électronique, téléphonie sur IP.

Une bonne organisation des sources facilite la relecture du code. Un exemple d'organisation est la séparation des différentes parties du source en fonction des sous-systèmes associés. Une verbosité importante du code et des commentaires facilitent la compréhension de celui-ci.

La relecture des sources, l'audit du code et la vérification de l'utilisation mémoire sont indispensable au maintien de la sécurité d'un programme mais ces tâches sont complexes et coûteuses en temps.

Moindr e pr ivilège

Les logiciels sont souvent amenés à faire des tâches complexes. L'utilisation d'une architecture monolithique rend difficile le maintien d'un bon niveau de sécurité. Certains services nécessitent des droits élevés comme par exemple l'écoute sur des ports privilégiés tandis que le programme peut être amené à traiter des données non sûres, gérer des files d'attentes, se connecter sur d'autres programmes, assurer de la disponibilité. La séparation en module permet de répartir les contraintes et d'appliquer des exigences adaptées à chaque sous-partie. Ceci évite que des erreurs de programmation sur une sous-partie affecte le bon fonctionnement de l'ensemble.

Elies Jebri

2008

27

20/32

Elies Jebri

2008

28

Le programme doit utiliser le moindre privilège. C'est-à-dire que s'il n'a besoin d'aucun privilège, il n'a aucune raison d'être lancé avec les droits root. Si le programme a besoin d'effectuer des actions privilégiées, il doit les effectuer le plus tôt possible dans son fonctionnement.

Si le logiciel doit effectuer régulièrement des actions nécessitant des droits élevés, par exemple lancer des nouveaux processus, il faut isoler ces fonctions dans un sous-système spécifique dont le nombre de tâche sera réduit au minimum. En particulier l'utilisateur ne devra pas pouvoir effectuer des tâches dans ce contexte et les données en entrée et en sortie devront être soigneusement

vérifiées.

Chroot et jail

Chroot ou jail permettent de changer pour un programme le répertoire racine de la machine hôte. Ceci permet d'isoler l'exécution d'un programme et d'éviter ainsi certaines malveillances, comme l'exploitation d'un dépassement de tampon, pour ensuite accéder au répertoire racine de la machine hôte. Il permet également de faire tourner plusieurs instances d'un même ensemble de services ou démons sur la même machine hôte.

Gestion de la mémoire et contrôle des formats de données

Format des données

Le programme doit considérer comme non sûres toutes les informations qu'il reçoit d'autres programmes ou d'un utilisateur. Ceci implique en particulier de vérifier que les chaînes de caractères reçues sont bien des chaînes de caractères, c'est-à-dire qu'elles se terminent par le caractère '\0'. Il faut également vérifier la longueur des données pour éviter d'avoir des débordements de tampons dans le cas où les données seraient de taille trop importante. Enfin, il est important de vérifier que de la mémoire est effectivement disponible. On peut se retrouver avec un pointeur NULL ou encore provoquer une erreur de programme pour manque de mémoire.

Gestion de la mémoire

Plusieurs solutions permettent de gérer plus ou moins efficacement la mémoire dans un programme. Une solution est d'utiliser une librairie qui gère les tampons et les chaînes de caractères afin de gérer la taille de ceux-ci. On peut également utiliser des buffers de taille fixe mais ce n'est pas très souple. Certains langages de haut niveau utilisent un ramasse-miette ce qui permet de ne pas avoir à gérer la mémoire. Ceci n'empêche pas de prendre en compte la charge induite par le traitement de la mémoire afin de ne pas dégrader les performances de l'ensemble.

Enfin une solution est de combiner l'utilisation d'une pile pour stocker les données temporaires et d'un espace mémoire partagé que le programme répartie entre les différentes parties du programme. La pile permet de stocker les données temporaires et pour désallouer, on supprime la pile entière.

Sensibilité de la mémoire

Un examen de la mémoire lors ou en dehors de l'exécution d'un programme permet de récupérer des informations sensibles. Ceci est particulièrement vrai pour les mots de passe. La première chose évidente à ne pas faire est de stocker dans le code un mot de passe. Celui-ci sera conservé lors de la compilation et l'attaquant pourra le retrouver en parcourant le fichier binaire.

Suivant les droits possédés par l'attaquant, celui-ci peut examiner le contenu de la mémoire. Ceci est possible sous windows avec winhex qui permet de parcourir la mémoire vive. Si des mots de passe ont été stockés en mémoire vive en clair, ils pourront être lu. Dans le cas de données sensibles, une

21/32

Elies Jebri

2008

29

technique

consiste

à

réécrire

 

sur

l'espace

mémoire.

Dans

le

cas

d'une

base

de

données,

il

est judicieux

de

ne

pas

conserver

les mots

de

passe

en

clair

mais

leur

image via une fonction de hashage.

 

22/32

Elies Jebri

2008

30

Les attaques

Programmes malveillants

Outils génériques

On distingue les types suivants :

Le virus : programme se dupliquant sur d'autres ordinateurs ; Le ver (worm en anglais) : exploite les ressources d'un ordinateur pour se dupliquer ;

Le wabbit : programme qui se réplique par lui-même (mais qui n'est ni un virus, ni un ver) ; Le cheval de Troie (trojan en anglais) : programme à apparence légitime (voulue) qui exécute des routines nuisibles sans l'autorisation de l'utilisateur ;

La

système informatique, à distance ; Le logiciel espion (spyware en anglais) : collecteur d'informations personnelles sur l'ordinateur

d'un utilisateur sans son autorisation, et en envoyant celles-ci à un organisme tiers ; L'enregistreur de frappe (keylogger en anglais) : programme généralement invisible installé sur le poste d'un utilisateur et chargé d'enregistrer à son insu ses frappes clavier ; L'exploit : programme permettant d'exploiter une faille de sécurité d'un logiciel ; Le rootkit : ensemble de logiciels permettant généralement d'obtenir les droits d'administrateur sur une machine, d'installer une porte dérobée, de truquer les informations susceptibles de révéler la compromission, et d'effacer les traces laissées par l'opération dans les journaux système.

porte

dérobée

(backdoor

en

anglais)

:

ouvreur

d'un

accès

frauduleux

sur

un

Attaques spécifiques aux messageries

En dehors des nombreux programmes malveillants qui se propagent par la messagerie électronique, il existe des attaques spécifiques à celle-ci :

Le pourriel (spam en anglais) : un courrier électronique non sollicité, la plupart du temps de la publicité. Ils encombrent le réseau, et font perdre du temps à leurs destinataires ; L'hameçonnage (phishing en anglais) : envoi massif d'un courriel dont l'expéditeur se fait généralement passer pour un organisme financier et demandant au destinataire de fournir des informations confidentielles ; Le canular informatique (hoax en anglais) : un courrier électronique incitant généralement le destinataire à retransmettre le message à ses contacts sous divers prétextes. Ils encombrent le réseau, et font perdre du temps à leurs destinataires. Dans certains cas, ils incitent l'utilisateur à effectuer des manipulations dangereuses sur son poste (suppression d'un fichier prétendument lié à un virus par exemple).

Attaques par le réseau

Principales techniques

Voici les principales techniques d'attaques sur le réseau :

Le sniffing : technique permettant de récupérer toutes les informations transitant sur un réseau

Elies Jebri

2008

31

23/32

Elies Jebri

2008

32

(on utilise pour cela un logiciel sniffer).Elle est généralement utilisée pour récupérer les mots de passe des applications qui ne chiffrent pas leurs communications, et pour identifier les machines qui communiquent sur le réseau. La mystification (en anglais spoofing) : technique consistant à prendre l'identité d'une autre personne ou d'une autre machine. Elle est généralement utilisée pour récupérer des informations sensibles, que l'on ne pourrait pas avoir autrement ; L'ARP Spoofing : c'est probablement le cas le plus fréquent. Si l'un des interlocuteurs et l'attaquant se trouvent sur le même réseau local, il est possible, voire relativement aisé, pour l'attaquant de forcer les communications à transiter par son ordinateur en se faisant passer pour un « relais » (routeur, passerelle) indispensable. Il est alors assez simple de modifier ces communications. Le Spoofing de DNS : L'attaquant altère le ou les serveur(s) DNS des parties de façon à rediriger vers lui leurs communications sans qu'elles s'en aperçoivent. Le déni de service (en anglais denial of service) : technique visant à générer des arrêts de service, et ainsi d’empêcher le bon fonctionnement d’un système. Elle peut se faire via l'utilisation d'une faille ou plus couramment par l'utilisation massive de requêtes. Attaque de l'homme du milieu (man in the middle) : une attaque dans laquelle l'attaquant est capable de lire, insérer et modifier comme il le souhaite les messages chiffrés entre deux parties, sans que ni l'un ni l'autre ne puisse se douter que la ligne entre eux

a été compromise. L'attaquant doit d'abord être capable d'observer et d'intercepter les

messages d'une victime à l'autre. L'attaque HDM est particulièrement applicable dans le protocole original d'échange de clés Diffie-Hellman, quand il est utilisé sans authentification.

Et d'autres techniques (généralement obsolètes) utilisant les différences de comportement entre les équipements et les mauvais implémentations de TCP/IP :

vol de session TCP (hijacking) : il s'agit d'une attaque à l'aveugle dans laquelle on établit une session avec un hôte en se faisant passer pour un autre. Quand l'attaquant effectue la première étape de ce procédé, il va mettre l'adresse IP de l'hôte de confiance de la cible comme adresse source dans l'en-tête IP du paquet SYN. Mais quand la cible répond par un paquet SYN|ACK,

ce dernier va être envoyé au véritable propriétaire de l'adresse à savoir l'hôte de confiance. L'attaquant ignore donc le numéro de séquence envoyé par la cible, or il en a besoin pour établir la connexion. S'il se trompe de numéro d'acquittement, la cible va envoyer un paquet RESET qui met fin à la procédure. L'attaquant a donc besoin de prédire le numéro de séquence envoyé par la cible en fonction du numéro de séquence initiale du paquet qu'il a envoyé. Mais s'il arrive à deviner une plage de valeurs possibles, il peut éventuellement « inonder » la cible avec des paquets ACK et espérer que l'un des paquets aura le bon numéro d'acquittement. ; Syn flood : cette attaque permet un déni de service par un envoi massif de requêtes SYN vers la cible. En ne terminant pas le dialogue d'initialisation, on crée un grand nombre de connexion semi-ouvertes, ce qui empêche l'ouverture de nouvelles sessions. Plusieurs solutions existent :

limitation du nombre de connexions depuis la même source ou la même plage d'IP, avec un délai imparti plus ou moins grand ; libération des connexions semi-ouvertes selon un choix de client et un délai aléatoires ; réorganisation de la gestion des clients en évitant de consommer des ressources avec des champs inutiles tant que la connexion n'est pas complètement établie.

attaque

par

fragmentation

(fragments

attacks)

:

une

attaque

réseau

par

saturation

(déni

de

service) exploitant le principe de fragmentation du protocole IP. En effet, le protocole IP

est prévu pour fragmenter les paquets de taille importante en plusieurs paquets IP possédant chacun

Elies Jebri

2008

33

un numéro

de séquence et

un numéro d'identification commun.

A

réception des

données, le

24/32

Elies Jebri

2008

34

destinataire réassemble les paquets grâce aux valeurs de décalage (en anglais offset) qu'ils contiennent. L'attaque par fragmentation la plus célèbre est l'attaque Teardrop. Le principe de l'attaque Teardrop consiste à insérer dans des paquets fragmentés des informations de décalage erronées. Ainsi, lors du réassemblage il existe des vides ou des recoupements (overlapping), pouvant provoquer une instabilité du système. Tiny Fragments : L’attaque consiste à fragmenter sur deux paquets IP une demande de connexion TCP. Le premier paquet IP de 68 octets ne contient comme données que les 8 premiers octets de l’en-tête TCP (ports source et destination ainsi que le numéro de séquence). Les données du second paquet IP renferment alors la demande de connexion TCP (flag SYN à 1 et flag ACK à 0). Or, les filtres IP appliquent la même règle de filtrage à tous les fragments d’un paquet. Le filtrage du premier fragment (Fragment Offset égal à 0) déterminant cette règle elle s’applique donc aux autres (Fragment Offset égal à 1) sans aucune autre forme de vérification. Ainsi, lors de la défragmentation au niveau IP de la machine cible, le paquet de demande de connexion est reconstitué et passé à la couche TCP. La connexion s’ établit alors malgré le filtre IP. Fragment Overlapping : si deux fragments IP se superposent, le deuxième écrase le premier. L’attaque consiste à forger deux fragments d’un paquet IP. Le filtre IP accepte le premier car il ne contient aucune demande de connexion TCP (flag SYN = 0 et flag ACK = 0). Cette règle d’acceptation s’applique, là encore, aux autres fragments du paquet. Le deuxième contenant les véritables données de connexion est alors accepté par le filtre IP.

Attaques sur les mots de passe

Les deux méthodes suivantes sont les plus utilisées :

L'attaque par dictionnaire : le mot testé est pris dans une liste prédéfinie contenant les mots de passe les plus courants et aussi des variantes de ceux-ci (à l’envers, avec un chiffre à la fin, etc.). Ces listes sont généralement dans toutes les langues les plus utilisées, contiennent des mots existants, ou des diminutifs (comme par exemple “ powa” pour “ power”, ou “ G0d” pour “ god”). L'attaque par force brute : toutes les possibilités sont faites dans l’ordre jusqu’à trouver la bonne solution (par exemple de “ aaaaaa” jusqu'à “ ZZZZZZ” pour un mot de passe composé strictement de six caractères alphabétiques).

Cartographie du réseau

Reconnaissance passive

La première démarche pour cartographier un réseau est d'utiliser un ensemble de techniques non intrusives (qui ne pourront pas être détectée) :

utilisation du Web ; les Outils réseau : Whois (donne les informations sur les enregistrements dns), nslookup.

Cette

mais pouvant être confidentielles (diffusées généralement par erreur ou insouciance).

Ceci

adresses

électroniques.

Reconnaissance semi-active

Bien que non intrusives, les techniques suivantes deviennent détectables par la cible, notamment à

démarche

permet

permet

d'obtenir

des

noms

des

de

informations

responsable,

sur

des

la

cible,

diffusées

publiquement,

et

des

d'avoir

numéros

téléphonique

Elies Jebri

2008

35

l'aide d'un système de détection d'intrusion :

25/32

Elies Jebri

2008

36

ping, traceroute et utilisation des propriétés du protocole ICMP ; Balayage de port (port scan en anglais) via Nmap ; Prise d'empreinte TCP/IP (TCP/IP fingerprinting en anglais).

Ces techniques permettent généralement de recenser et d'identifier une grande partie des éléments du réseau cible.

Reconnaissance active

On passe dans les techniques réellement intrusives, donc clairement détectables, mais ne représentant pas un risque immédiat pour la cible :

Utilisation des propriétés des protocoles SNMP, SMB, RPC ; Détection automatisée de vulnérabilités : Nessus.

Techniques d'intrusion système

Connexion à une ressource partagée ; Attaque par force brute ; Attaque par débordement de tampon ; Accès à un interpréteur de commandes interactif ; Élévation des privilèges ; Installation d'un rootkit ; Effacement des traces

Attaques avancées

Le cassage de logiciel (Cracking en version anglaise) : cette technique a pour but la modification d'un programme pour déjouer sa protection (en général pour permettre une utilisation complète, ou à durée illimi tée) ; La rétro-ingénierie (compréhension des mécanismes internes des logiciels) ; Exploitation des bogues de formats : exploite le fait de ne pas vérifier le format des entrées fournies à un programme ; Détournement et utilisation de données WEB : Cookie, CSS, CGI, vulnérabilités concernant les langages PHP, ASP, SQL, etc.

Attaques cryptanalytiques par canaux auxiliaires

Une sécurité mathématique ne garantit pas forcément une sécurité lors de l'utilisation en pratique. On distingue deux grandes catégories d'attaques :

les attaques invasives qui endommagent le matériel (voire le détruisent totalement) :

attaque par sondage : elle consiste à placer une sonde directement dans le circuit à étudier, afin d'observer son comportement (généralement utilisée dans le cas des bus chiffrés) ;

les

attaques

extérieure

du

système :

non-invasives

qui

se

contentent

de

procéder

à

une

observation

attaque temporelle : étude du temps mis pour effectuer certaines opérations ;

une

machine qui chiffre. En effet, le processeur émet du bruit qui varie en intensité

et

analyse d'émanations

en utilisant le rayonnement électromagnétique (émission d'ondes, analyse d'une image thermique, lumière émise par un écran, etc.) ;

cryptanalyse acoustique :

en

étude

du

bruit

généré

par

un

ordinateur

ou

nature selon sa consommation et les opérations effectuées ;

électromagnétiques :

similaire à la cryptanalyse acoustique

mais

26/32

Elies Jebri

2008

37

analyse de consommation : une consommation accrue indique un calcul important et peut donner des renseignements sur la clé ; attaque par faute : introduction volontaire d'erreurs dans le système pour provoquer certains comportements révélateurs. Notons que ce type d'attaque peut être considérée comme invasive dans certains cas.

Les constructeurs de puces de chiffrement visent à aplanir la courbe de consommation électrique pour dissimuler les opérations sous-jacentes. Des protections et des blindages permettent de limiter le rayonnement en dehors du circuit. Il faut également tenir compte des états impossibles qui ne doivent pas se produire et doivent être traités correctement s'ils venaient à être détectés. Limiter les messages d'erreur et la communication d'informations diverses avec l'extérieur est aussi une solution mais elle pénalise les développeurs et les utilisateurs du système.

Recherche de vulnérabilités sur des binaires

Analyse par graphes

Les seules

informations accessibles sont les commandes au niveau assembleur. Des changements mineurs dans le code peuvent changer considérablement la suite d'instructions du fait :

Les logiciels sont généralement disponibles sous forme compilée.

d'allocation de registres différents ; de la réorganisation des instructions par le compilateur ; d'inversion de branchements entre les blocs d'instructions pour des raisons d'optimisation.

Une approche est de considérer l'exécutable comme un graphe de fonctions qui s'appellent entre elles, c'est le graphe des appels. Une première comparaison permet de détecter l'ajout de contrôle ou

le remplacement d'un appel

logiciel, on calcule la signature structurelle des différentes fonctions en s'appuyant sur le nombre de blocs basiques dans la fonction, le nombre d'arcs vers cette fonction et le nombre d'appels. Ceci permet de trouver des points fixes d'une version à une autre et par propagation de trouver les isomorphismes entre les versions.

L'utilisation d'une distance euclidienne permet de résoudre les ambiguités en calculant la racine carré de la somme des carrés des différences entre les points. Au sein des fonctions on peut appliquer le même schéma aux blocs basiques en utilisant une signature structurelle telle que nombres d'arcs pour arriver à l'entrée du bloc, nombre d'arc pour arriver à la fin du bloc et nombre de sous-blocs appelés. On n'utilise plus le nombre d'appels de la fonction car en général le point d'entrée est unique.

Pour la recherche de vulnérabilités, on se concentre sur les changements apportés, ce qui permet de trouver plus facilement des zones susceptibles de contenir des vulnérabilités.

Fuzzing

Une autre technique, le fuzzing, consiste à envoyer des données aléatoires presques conformes à un système afin de détecter des comportements anormaux. Les comportements anormaux sont par exemple une utilisation anormale de ressources mémoires ou processeurs. Les changements les plus usités sont :

par

un

autre.

Pour

comparer

différentes

versions

d'un

des chaînes aléatoires dans leur contenu et leur longueur ; des chaînes typiques ; un grand nombre aléatoire d'arguments ;

Elies Jebri

2008

38

27/32

Elies Jebri

2008

39

des longues chaînes alphanumériques ; des chaînes de caractères quelconques ; création de contenu adaptés avec des erreurs de compression.

28/32

Elies Jebri

2008

40

En pratique

Les applications web

Les banières suffisent en général à identifier le serveur :

telnet www.microsoft.com 80

HEAD

/ HTTP/1.0

HTTP/1.1 200

Server: Microsoft­IIS/5.0

OK

P3P:

CP='ALL

IND

DSP

COR

ADM

CONo CUR

CUSo

IVAo IVDo

PSA

PSD

TAI

TELo OUR SAMo

CNT

COM

INT

NAV

ONL

PHY

PRE

PUR UNI'

Content­Location: http://tkmsftwbw11/default.htm

Date: Fri,

09:18:47 GMT Content­Type:

text/html Accept­Ranges: bytes

Last­Modified: Thu,

GMT ETag: "188b883934dc11:854" Content­Length: 23062

05

Oct

2001

04

Oct

2001

18:34:38

Server: Apache/1.3.14 (Unix)(Red­Hat/Linux) PHP/4.0.3pl1 mod_perl/1.24

Certains langages sont typiques d'un serveur :

Apache, Netscape : script PHP ; IIS : pages dynamiques ASP ; Lotus : bases NSF ; Tomcat, WebLogic : script JSP.

Les messages d'erreurs peuvent également être exploités. Il permettent en outre de connaître l'existence ou non d'un utilisateur dans le cas d'une authentification basic http.

GET /pipo HTTP/1.0

HTTP/1.1 404

Not Found

Date: Sat,

03

Nov 2001

14:33:08 GMT Server: Apache Connection: close Content­Type: text/html; charset=iso­8859­1

<!DOCTYPE HTML PUBLIC "­//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>404 Not Found</TITLE> </HEAD><BODY> <H1>Not Found</H1>

The

<HR> <ADDRESS>Apache/1.3.12 Server at p500.labo.net Port 80</ADDRESS> </BODY></HTML>

requested URL /pipo was

not found

on this server.<P>

Les attaques les plus courantes sont :

l'accès à un shell via une requête par exemple GET

l'injection de requête SQL : elle s'appuie sur l'injection d'une requête SQL non prévue ;

le

serveur sans filtrage. Ces attaques ne compromettent pas le serveur mais permettent de voler des

données.

/

/winnt/system32/cmd.exe /

html

ou

javascript

cross

site

scripting

par

envoi

de

contenus

affiché

par

le

29/32

Elies Jebri

2008

41

Le cross site scripting consiste à injecter du javascript dans les données envoyées au serveur. Ce code est ensuite exécuter sur le poste client. Il existe trois types de failles XSS :

faille locale : le problème est dans le script d'une page côté client. Par exemple, si un fragment de javascript accède à un paramètre d'une requête d'URL, et utilise cette information pour écrire du HTML dans sa propre page, et que cette information n'est pas encodée sous forme d'entités HTM L, alors il y a probablement un trou XSS, puis les données écrites seront réinterprétées par le navigateur comme du HTML contenant éventuellement un script ajouté. faille non permanente : elle apparaît lorsque des données fournies par un client web sont utilisées telles quelles par les scripts du serveur pour produire

sont incluses dans la page de résultat

une page de résultats. Si les données non vérifiées

sans encodage des entités HTML, elles pourront être utilisées pour injecter du code dans la page dynamique reçue par le navigateur client. faille permanente : elle se produit quand les données fournies par un utilisateur sont stockées sur un serveur (dans une base de données, des fichiers, ou autre), et ensuite réaffichées sans que les caractères spéciaux HTML aient été encodés. Elle est souvent présente sur des forums.

La méthode HTTP TRACE permet de faire du XSS. Cette méthode est traditionnellement utilisée pour déterminer la vision qu’a le serveur d’une requête. Le serveur renvoyant exactement l’argument fourni par l’utilisateur, cette méthode est couramment utilisée pour réaliser des attaques de type X SS.

var xmlHttp = new ActiveObject("Microsoft.XMLHTTP") xmlHttp.open("TRACE", "./", false)

TRACE

/mail/victime.nsf/c1dee9080256c3f003dccf5/33cc18a13483c9f2c125704400447cf

6/$FILE/

HTTP/1.1

Accept: */* Accept­Language: fr Referer:

http://Srv_Domino/mail/victime.nsf/c1cdee9080256c3f003dccf5/33cc18a13483c

9f2c125704400447cf6/$FILE/Humour.htm

Accept­Encoding: gzip, deflate

User­Agent: Mozilla/4.0 (compatible; MSIE CLR

6.0;

Windows NT

5.0;

.NET

1.1.4322)

Host: Srv_Domino Content­Length: 0 Connection: Keep­Alive Cache­Control: no­cache

Authorization:,dmljdGltZTptZHBfc2VjcmV0IA

La seconde attaque la plus courante est l'injection de code SQL qui permet de corrompre la base ou de faire des requête arbitraires. Par exemple :

Private Sub btnLogin_Click(ByVal sender As

System.Object, _ ByVal System.EventArgs) _ Handles btnLogin.Click

SqlConnection1.Open()

e

As

Dim

str

As

String = "SELECT

*

FROM

Users WHERE UserID='" _

 

&

txtName.Text & "' AND Password='"

&

 

_

txtPassword.Text & "'"

Dim comm As New SqlCommand(str, SqlConnection1)

Dim reader As SqlDataReader

comm.ExecuteReader() If Not reader.HasRows Then

=

_ Response.Write("Login failed. Please try again")

Elies Jebri

2008

42

30/32

Elies Jebri

2008

43

While reader.Read() Response.Write("Hello " & reader("UserName")) End While

End

Sub

On

peut

faire

de

l'injection

avec

xyz'

union

select

@@servername,

@@servicename, @@version ­­

Une solution est d'utiliser les mécanismes de sécurité du langage ou bien de valider les données en entrée.

Les informations sensibles ne doivent pas non plus être stocké dans de cookies sur le poste client car ceux-ci peuvent être modifiés. Il vaut mieux stocker ces informations dans des variables de sessions sur le serveur.

L'authentification basique http transmet le nom de l'utilisateur et le mot de passe en clair dans les en-têtes. Il est donc nécessaire de chiffrer le lien et de protéger l'accès au fichier contenant les mots de passe et la liste des utilisateurs.

Il faut éviter de passer des informations cachées dans les formulaires si ce n'est pas nécessaire et les garder dans des variables de sessions car l'utilisateur peut les modifier.

Les validations des données des formulaires par des codes javascript sont inutiles du point de vue de la sécurité car l'utilisateur peut les contourner. De la même façon la délégation de traitement de données dans des applets peut être manipuler par l'utilisateur qui peut lire et modifier le code si celui-ci n'est pas protéger (exemple java, mon légionnaire.com).

est

brute force permet de récupérer des sessions, en particuli er si on utilise le temps pour l'aléa.

La

gestion

des

aléas

pour

les

sessions

importante

sinon

une

simple

attaque

par

http://www.cible.fr/shop.htm?id=0112037524678

http://www.cible.fr/shop.htm?id=0112037520987

http://www.cible.fr/shop.htm?id=0112037521345

http://www.cible.fr/shop.htm?id=0112037526794

http://www.cible.fr/shop.htm?id=0112037523098

Indépendemment de l'application web, il est judicieux de mettre des filtres (mod_security) afin de bloquer les requêtes malveillantes connues. Ceci permet également de cacher les erreurs qui peuvent être générées par le serveur. Enfin on peut faire une analyse avec un antivirus des fichiers reçus ou encore chrooter le serveur. Dans le cas d'application web bien construite, on peut définir un profil contenant l'ensemble des requêtes valides afin de ne permettre que l'envoi de celles-ci.