La quasi-généralisation des accès haut débit et la quasi-hégémonie des systèmes windows font de vos PCs de véritables cibles de choix pour des centaines (milliers ?) de programmes malveillants, qui circulent sur le net.
Tout logiciel (toute création humaine) est imparfaite. Qui n'a jamais eu le fameux écran bleu de Windows, le fameux redémarrage impromptu ou le fameux plantage ? Derrière chaque plantage il y a une erreur, que le programmeur a fait à un moment, une situation à laquelle il n'a pas pensé, une situation exceptionnelle exception que l'ordinateur ne sait pas gérer.
Il faut dire, c'est bête, un ordinateur : on leur demande d'écrire une phrase de 10 mots sur un cahier en leur disant "ok tu écris ceci sur une ligne sur le cahier", eux au lieu de retourner à la ligne si l'écriture dépasse, vont écrire sur le cahier du voisin. C'est ce qu'on appelle en informatique le buffer overflow : écrire des données en dehors de la zone mémoire prévue à cet effet.
Le Buffer Overflow se traduit donc par une écriture de données, par un programme A, dans une zone mémoire qui appartient à un programme B. Du coup, dans le meilleur des cas : plantage du programme B avec notamment les écrans bleus, et d'autres "erreurs système" à répétition que vous pouvez voir (c'est un exemple).
Mais alors... si un programme peut écrire comme ça, dans certains cas, dans la mémoire d'un autre programme... peut-il aussi intervenir sur son propre fonctionnement ? Oui!
Ces plantages, ces failles, sont parfois exploitables, c'est à dire qu'en s'y prenant bien, on peut parvenir à injecter dans le programme B (celui qui se fait écrire-dessus) un code arbitraire... un code de virus par exemple. Lorsque c'est réalisable, on parle alors de faille exploitable.
Injecter un virus ? Comment ça ? Patience, on y vient...
Avec les programmes communiquants (Internet Explorer, Outlook Express, ...), les failles sont maintenant exploitables à distance depuis le réseau, depuis Internet. En effet, lorsque Outlook Express reçoit un e-mail, cet e-mail est écrit en mémoire, décortiqué et mis en forme pour être présenté dans l'interface.
De la même manière, lorsque vous chargez une page web, cette page est également écrite en mémoire, analysée de toutes parts, le code HTML est interprété et présenté sur votre navigateur.
Je l'ai écrit plus haut, rien n'est parfait, surtout pas Internet Explorer, à qui l'on peut faire gober n'importe quoi... Comprenez que si au cours de la mise en mémoire des données HTML survient une exception, une situation à laquelle les programmeurs n'ont pas pensé, alors les données en question seront stockée dans la mémoire d'IE, mais aussi malheureusement, dans la mémoire d'autres programmes.
Si cet "autre programme" s'appelle "Système Windows" et si les "données" que l'ordinateur écrit sur le cahier du voisin ne sont pas des données HTML mais le code exécutable d'un virus, vous imaginez ce qui se passe...
On parle alors d'injection de code : par le biais de la faille, on injecte un code (exécutable c'est mieux) dans le déroulement normal d'un programme... Si ce code est un virus, au mieux, le système sera ralenti, plantera ou redémarrera, au pire, le système sera infecté.
Il existe des chasseurs de failles, des p'tits gars qui recherchent la faille qui fera planter tel ou tel logiciel, la faille par le biais de laquelle sera réalisable l'injection d'un virus sur des dizaines de machines reliées à Internet.
Plus un logiciel est populaire, plus il est répandu, plus grand est le nombre de chasseurs de failles, plus grand sera le nombre de failles découvertes.
Les chasseurs de failles, pour mettre en évidence leurs découvertes, développent des "exploits" : petits programmes exécutables qui mettent la faille en évidence. On parle de proof of concept lorsque l'exploit n'a pas de charge nocive.
Vous trouverez un beau spécimen de proof of concept sur ce site.
Cet exploit a été découvert récemment. Il concerne une faille de Internet Explorer, découverte il y a six mois, mais non corrigée à ce jour.
Oui... pardon... en général, ça marche comme ça :
- Quelqu'un trouve une faille, par hasard ou en ayant passé plusieurs jours à investiguer sur un logiciel.
- Ce quelqu'un choisit ou non de dévoiler la faille à l'éditeur ou au public (on parle alors respectivement de Responsible Disclosure, ou de Full Disclosure).
- Dans le meilleur des cas, un correctif logiciel (patche, sorte de vaccin numérique) est fourni par l'éditeur et aucun exploit n'est diffusé dans le laps de temps qui sépare la découverte de la faille de la sortie du patche.
- Dans le pire des cas, l'éditeur ne fournit pas de vaccin, un exploit est diffusé sur le net, laissé en pâture à des individus qui vont intégrer à cet exploit... un virus.
C'est le cas avec l'exploit présenté. La faille fut découverte il y a six mois... à ce jour : aucun patche de Microsoft et un exploit lâché dans la nature par un groupe d'individus.
Il y a fort à parier que cet exploit sera intégré à de prochains virus... en attendant, on ne peut pas faire grand chose sauf croiser les doigts.
Voilà, j'espère que la lecture fut intéressante... si vous avez des questions, vous savez où me trouver
:-)