|
Dans le monde de l'informatique,
il existe au moins des millions de failles, et encore
plus de manières de les exploiter. Même
si certaines sont tellement particulières qu'il
est difficile de les qualifier avec des termes génériques,
la plupart se rangent dans des catégories précises.
Cette suite de questions-réponses que vous propose
JDNet Solutions ne constitue en rien un mode d'emploi
visant à former de nouveaux pirates, ou à
aider ceux-ci dans leurs basses besognes. C'est pourquoi
le degré de précision s'arrête à
de simples définitions mises en perspective.
L'objectif étant de sensibiliser le lecteur aux
problématiques de sécurité, et
de l'assister dans sa compréhension des phénomènes
les plus courants.
Voir les autres Questions-Réponses
Faille, vulnérabilité, attaque, intrusion,
exploit, incident, alerte... quelle est la différence
entre tous ces termes ?
Pour commencer par le plus évident, une faille,
une vulnérabilité et une brèche
sont de véritables synonymes. En langage familier,
l'on parle également de "trou de sécurité".
Les solutions du commerce tant que les développements
propriétaires n'échappent pas à
la règle: il n'existe pas de système infaillible.
En clair: il existe presque toujours un ou plusieurs
moyens de détourner le fonctionnement "normal"
d'une application.
Une fois ceci considéré, le fait de se
servir d'une faille pour parvenir à détourner
un système de son fonctionnement
normal
s'appelle un exploit. Le pirate "exploite"
la vulnérabilité, sans confusion possible
avec un exploit au sens de la prouesse. Il est souvent
enfantin d'exploiter l'existence d'une brèche,
même si la réussite de l'action peut susciter
un plaisir chez l'individu. C'est d'ailleurs cette évidence,
entre autres, qui fait aujourd'hui qu'un nombre croissant
de jeunes inexpérimentés constituent la
principale menace externe aux systèmes d'informations
des entreprises. Une raison de plus de protéger
ses capitaux efficacement, car la motivation de ces
"boutonneux" ou "boiteux" - comme
les appellent les américains - est difficilement
contrôlable.
Ensuite, toutes les attaques ne sont pas des exploits.
En l'absence de faille, il est parfois encore possible
d'attaquer un système. L'un des exemples les
plus flagrants consiste à "casser"
les codes de chiffrement en mettant en oeuvre de la
puissance de calcul. La pratique qui consiste à
"forcer une serrure" s'appelle communément
"brute force cracking" en langage de sécurité.
L'intrusion dans un système, de son côté,
est seulement l'un des objectifs possibles d'une attaque.
Certaines attaques ont en effet pour simple but de mettre
le dit système hors fonction.
Enfin, la question de l'incident intervient quand une
attaque a été constatée en
dehors du cadre des tests effectués par les experts
en sécurité pour vérifier la présence
ou l'absence de failles. A la suite d'un incident, la
société spécialisée ou l'organisme
chargé du support peuvent publier une alerte
afin d'avertir les autres possesseurs de ce système
qu'ils courent des risques auxquels ils peuvent pallier.
Pourquoi est-il parfois si facile d'exploiter des
failles ?
La réutilisation du code source et de la méthodologie
des exploits publiés par certains experts en
sécurité ne constitue qu'un des aspects
de cette simplicité. Les caractéristiques
d'un système varient souvent en fonction des
paramètres définis lors de son installation
dans un environnement donné. Quelqu'un qui ne
maîtrise pas les langages de programmation et
l'architecture du système ne saura a priori que
copier/coller les lignes de code et suivre pas à
pas les explications données.
Il en résulte que les installations par défaut
d'applications vulnérables sur des systèmes
répandus représentent un élément
de facilité supplémentaire, puisque le
copier/coller aura davantage de chances de fonctionner.
Parmi les situations types de failles évidentes
à exploiter, l'on retrouve aussi l'absence de
mots de passe, ou le fait que ceux-ci soient trop facile
à élucider. Que dire, par exemple, de
l'administrateur qui oublie de supprimer un compte de
test, dont l'identifiant est "test" et le
mot de passe "test"... Et pourtant, le même
plaisir peut se lire sur la face du débutant
qui trouve cela, que sur celle du hacker expérimenté
qui résoud un problème complexe.
Les virus, les vers et les chevaux de Troie sont-ils
des failles ?
Souvent, les virus et les vers, quels que soient leurs
modes de réplication qui les différencient,
profitent de vulnérabilités existantes
pour se propager. Ce ne sont pas des failles, mais il
arrive parfois qu'ils en créent de nouvelles
au passage, volontairement ou non, sur les systèmes
dans lesquels ils s'insèrent. En outre, les virus
et les vers étant des programmes, ils peuvent
eux-mêmes en transporter.
Les chevaux de Troie, en revanche, ont justement pour
but d'ouvrir de nouvelles brèches appelées
"backdoors" (portes de derrière). Pour
éviter de reproduire un exploit à chaque
intrusion dans un système, le hacker peut en
installer un pour revenir quand bon lui semble et disposer
de ressources en place qui lui permettent d'élargir
son champ d'action.
Lire le Questions-Réponses
sur
les codes malicieux
Les vulnérabilités touchent-elles uniquement
les systèmes ?
Non, pas seulement. L'être humain, lui aussi,
est faillible. Lorsqu'il ne respecte pas les consignes
élémentaires de sécurité,
il met en danger l'intégrité du système
dont il a la charge. C'est ce qui arrive, par exemple,
lorsque les mots de passe sont en clair ou trop faciles
à élucider. Et l'on parle également
de vulnérabilité humaine quand un ver
arrivant par mail se sert de la crédulité
en incitant à cliquer sur la pièce jointe
infectée.
N'est-ce pas ce qui arrive aussi dans le cas du "Social
Engineering" (ingénierie sociale) ?
Tout à fait. L'ingénierie sociale est
un ensemble de procédés utilisés
par les hackers pour exploiter les vulnérabilités
humaines. Un appel à la secrétaire du
patron en se faisant passer pour le support technique
afin de récupérer un mot de passe, et
les nombreuses techniques du genre que l'on retrouve
parfois dans les films d'espionnage, sont des pratiques
d'ingénierie sociale. En raison de leur prolifération,
il est essentiel d'implémenter une politique
globale de sécurité qui tienne compte
des facteurs humains et pas seulement informatisés.
Revenons à l'informatique. A quoi correspondent
les attaques de déni de service (DOS) ? Pourquoi
dit-on parfois qu'elles sont "distribuées"
(DDOS) ?
Lorsqu'un système refuse de fonctionner, il "dénie"
le service qu'il est censé rendre. Lorsqu'ils
sont soumis à une attaque de déni de service,
un serveur web n'affiche plus le site qu'il supporte,
un serveur de messagerie ne gère plus l'envoi
et la réception des messages, et un serveur d'applications
ne sait plus quoi faire de ses applications. Cela arrive,
par exemple, lorsque le serveur est forcé de
redémarrer au lieu d'assurer la continuité
du service. Cela arrive aussi lorsqu'il se bloque.
L'une des principales techniques employées pour
provoquer un déni de service consiste à
"flooder" (inonder en bon français)
l'ordinateur cible. En recevant un flux trop important
de données, celui-ci n'est plus capable de les
gérer. Et en quelque sorte, il fait la grève.
Pour augmenter ce flux, le pirate peut commander à
plusieurs machines synchronisées entre elles
d'envoyer simultanément des données. Et
l'on parle alors de déni de service distribué.
Certaines attaques de DOS ou de DDOS ont pour seul objectif
de provoquer la panne. Mais d'autres visent à
profiter de cette panne pour faciliter l'intrusion,
lorsque les systèmes de sécurité
installés sont aussi touchés ou qu'une
brèche s'ouvre à un instant donné.
Qu'est-ce qu'un "buffer overflow" ? Ce
terme est-il synonyme d'un "buffer overrun"
?
Ces deux techniques
d'attaque sont différentes, mais ont pour même
objet la mémoire tampon, ou le "buffer".
Le logiciel se sert de celle-ci pour stocker en mémoire,
à un espace réservé, les données
en cours de traitement. A partir de là, et connaissant
l'adresse en mémoire vive (RAM) de cette mémoire
tampon (buffer) du logiciel, le pirate peut provoquer
un "buffer overflow" en dépassant sa
capacité maximale de traitement. Selon les cas,
l'excédent de données peut avoir différentes
conséquences : provoquer un mauvais fonctionnement
exploitable du logiciel, ou même réécrire
la zone suivante qui était protégée
et n'était pas facilement accessible.
Un "buffer overrun", quant à lui, a
pour but de remplacer purement et simplement le contenu
de la mémoire tampon, de sorte qu'il soit interprété
(bien ou mal) et/ou éxécuté par
l'application. L'un et l'autre sont des vulnérabilités
que les programmeurs du logiciel pourraient éviter
s'ils protégeaient cette zone de la mémoire.
Pourquoi l'obtention d'un "root compromise"
est-elle si prisée des hackers ?
Le terme "root"
est un synonyme anglais de "superuser", soit
le super-utilisateur à l'échelon le plus
élevé de la hiérarchie des utilisateurs
d'un système comme Unix ou Windows NT. Mais pas
de Windows 95, 98 et Me, qui sont des systèmes
à un seul utilisateur. C'est la raison pour laquelle
ils ne sont généralement pas utilisés
pour faire tourner des applications serveur auxquelles
accèdent plusieurs personnes en simultané.
Un "root compromise" signifie donc l'obtention
du privilège de super-utilisateur. Comme celui-ci
est le plus souvent l'administrateur du système,
le hacker qui réussit à posséder
ce droit dispose du contrôle existant le plus
élevé du système. En clair, il
peut changer les mots de passe des autres utilisateurs,
accéder à des lecteurs partagés
et en ouvrir sur le réseau, modifier les composantes
de son choix, etc. Pour éviter cela, les systèmes
les plus sécurisés à l'heure actuelle
répartissent les privilèges les plus hauts
entre deux personnes: l'administrateur et le responsable
de la sécurité qui contrôle le premier.
Les failles CSS ont-elles quelque chose à
voir avec le langage permettant d'écrire des
feuilles de style pour afficher des pages web en fonction
de scénarios ?
Pas vraiment. En
réalité, l'acronyme CSS signifie Cross
Site Scripting dans le cas d'une faille, tandis que
le langage s'appelle Cascade Style-Sheet. Lorsqu'il
s'agit de la vulnérabilité, elle affecte
les sites web où il est possible d'entrer du
texte dans des cases: formulaires, forums, webmails...
En insérant des lignes de code en langage de
script (JavaScript, VBScript...) à la place du
texte classique, le serveur non protégé
peut les interpréter et les éxécuter.
Le résultat varie selon le script qui est inséré.
La solution: revoir les développements du site
en empêchant l'interprétation des scripts
insérés dans les champs ouverts à
la saisie.
Une bonne partie de ces risques concernent des attaques
depuis l'extérieur. Mais pourquoi dit-on aussi
que les risques internes sont plus importants ?
Parce que l'entreprise
comprend en général qu'elle doit se protéger
de l'extérieur, et installe pour cela des firewalls
et différents systèmes de protection qui
ont pour but de stopper les intrus. Mais les systèmes
de sécurité internes sont plus rares,
et n'existent le plus souvent que lorsqu'un audit a
été réalisé et une politique
globale implémentée. D'autre part, lorsque
le cheval de Troie est humain, il connaît l'entreprise,
ses habitudes et sait en général où
et comment se renseigner pour en apprendre plus. Si
les mots de passe apparaissent sur des "post-its"
collés aux écrans, il n'a pas besoin de
se procurer un badge d'accès pour les voir. Or,
le véritable ennemi est parfois interne: salarié
qui a le sentiment de ne pas être reconnu, jaloux
d'un confrère, simplement curieux... ou même
taupe dépêchée par un concurrent.
Si aucun système n'est infaillible, alors
pourquoi confier des tâches critiques à
l'informatique et ne pas revenir au format papier ?
Et si même les systèmes de sécurité
sont faillibles, alors pourquoi en installer ?
Tout d'abord, le format papier est lui aussi faillible.
Sinon, il n'existerait par exemple pas de faux billets
de banque. Quand on connait les moyens mis en oeuvre
pour empêcher leur duplication, et que l'on s'aperçoit
un beau jour que des petits malins ont réussi
à les reproduire... l'on n'interdit pas pour
autant les vrais billets.
Un expert a dit un jour: "ne pas installer un système
de sécurité sur un serveur revient à
ouvrir une banque sans porte blindée ni caméras,
avec la possibilité d'aller et venir dans le
coffre". Evidemment, la porte blindée ne
résistera pas forcément à une caisse
de dynamite, mais si elle n'est pas là, rien
n'empêche effectivement quiconque de rentrer.
Enfin, dans une banque, il faut aussi des gardes et
un chef de sécurité qui font respecter
des règles. Sans quoi, la porte blindée
reste ouverte, les caméras ne sont pas remplacées
si elles sont cassées, et personne ne sait quoi
faire en cas d'attaque. La politique de sécurité
est aussi un peu comme cela: il faut des systèmes
de protection adaptés, des règles et des
procédures applicables, et des personnes pour
les faire respecter.
Pour des informations complémentaires sur
les 20 failles les plus critiques liées
à la sécurité sur Internet, nous
vous suggérons d'en consulter la liste
détaillée sur le site du SANS Institute.
Cette organisation coopérative américaine
de recherche et d'éducation, fondée en
1989, regroupe plus de 96 000 administrateurs
réseaux/systèmes et experts en sécurité
informatique, travaillant dans les secteurs privé,
public et militaire.
|