I. Introduction

Un navigateur est un logiciel permettant de naviguer sur Internet et d'en afficher les pages web conformes aux principaux standards en vigueur. Ces standards étant nombreux et les types de ressources multimédia disponibles étant variées (script VBScript, document PDF, animation Flash, formule MathML, présentation SMIL, vidéo MPEG4, son MP3…) et parfois propriétaires, il est nécessaire d'ajouter au navigateur des modules provenant d'éditeurs divers. Chacun de ses plug-ins apportant au navigateur ses propres vulnérabilités.

Sa légèreté et sa simplicité d'utilisation font du navigateur une application universelle incontournable et largement déployée sur les PC comme sur les clients légers de type PDA, téléphone mobile… Il est partout ! Ce qui fait de lui une cible privilégiée des pirates désireux de nuire aux internautes.

II. Etat des menaces

L'internaute est menacé via son navigateur d'être victime des attaques suivantes :

  • profilisation et analyse comportementale à des fins de revente marketing
  • vol de données personnelles par accès à ses fichiers
  • escroquerie par phishing
  • plantage de son ordinateur par bug du navigateur

III. Eléments d'un navigateur

Un navigateur est constitué de modules divers réalisant des fonctions bien déterminées :

  • un interpréteur d'URL
  • un interpréteur de code HTML
  • un interpréteur de langage de script (JavaScript, VBScript…)
  • un environnement d'exécution d'applications (Applet Java, ActiveX, plug-ins)
  • une barre d'outils

A. Interpréteur de code HTML

L'interpréteur de code HTML/CSS construit la page web en fonction des instructions de présentation et de mise en page du fichier HTML et des ressources associées (frames, images liées…). Les normes HTML, XHTML, WAP, CSS utilisées par le navigateur pour la construction du rendu de la page sont stables et ne donnent lieu à aucune faille de sécurité. La seule malfonction pouvant apparaître sont des erreurs de rendu suite à la mauvaise interprétation des instructions de description.

B. Interpréteur de langage de script

L'interpréteur de langage de script permet l'exécution côté client de petit programmes permettant d'ajouter du dynamisme et d'interactivité aux pages, ce qui manquait terriblement aux pages statiques écrites en HTML.

Le langage le plus répandu est le JavaScript compréhensible par la plupart des navigateurs (IE, Firefox, Mozilla, Opera, Safari…) mais aussi le VBScript spécifique à Internet Explorer. Ces langages rajoutent un niveau significatif de complexité au navigateur web, ce qui est propice à l'apparition de bug. De plus, un programme informatique, même sous la simple forme de scripts interprétés, est susceptible de réaliser délibérément des actions non autorisées exploitant des bugs connus du navigateur. Certains pouvant jusqu'à permettre l'accès en lecture à des fichiers de l'ordinateur, d'où une fuite possible d'informations confidentielles.

De plus, une simple erreur de programmation d'un script peut provoquer le plantage du navigateur, voire de l'ordinateur. Par exemple, une boucle infinie peut avoir cet effet par saturation de la mémoire (pile d'appel).

Exemple de code JavaScript avec boucle infinie
Sélectionnez

<script langage="javascript">
<!--
var i = 0 ;
while(i < 10) {
	document.white('toto<BR>');
	// oubli d'incrément du compteur I pour sortir de la boucle
}
-->
</script>
				

C. Interpréteur d'URL

L'URL est le chemin d'une ressource sur le web, exemple :
http://cyberzoide.developpez.com/graphviz/article/index.php?param=valeur&id=50#LIII

Elle est constituée des éléments suivants :

Une URL est une simple chaîne de caractères sans accents.

Il existe deux vulnérabilités connues utilisées par les pirates pour procéder à des attaques par phishing :

  • écriture d'une URL falsifiée mais contenant du texte trompant la confiance (nom d'une banque de confiance)
  • exploitation d'une erreur d'interprétation du codage des URL afin de diriger l'internaute vers un site falsifié

1. URL trompeuse : phishing

Par exemple, un internaute peut se voir proposer de se rendre vers des URL falsifiées du type (au lieu de http://www.mabanquedeconfiance.fr) :

  • http://www.mabanquedeconfiance.fr.banquefalsifiee.com/
  • http://www.mabanquedeconfiance.fr:id=5454@www.banquefalsifiee.com/
  • http://www.mabanquedeconfiance.fr%00@214.15.29.172
  • http://www.mabank-de-confiance.com

où il est explicitement écrit l'adresse de ma banque habituelle mabanquedeconfiance.fr, pourtant ce sont des fausses adresses qui pointent vers un site différent : banquefalsifiee.com dont l'aspect graphique sera le même que l'original et me demandera de saisir mes identifiants confidentiels pour m'escroquer. Une simple lettre peut changer dans l'URL afin de tromper l'internaute et le diriger vers un site pirate !

La seule parade et de ne jamais se rendre sur le site de sa banque via des liens trouvées dans des mails ou sur Internet. Il faut recopier l'URL fournie sur les documents (contrats, brochures…) officiels fournis en mains propres par votre banquier lors de l'ouverture de votre compte et disponibles dans votre agence.

2. Bug de codage des URL : spoofing

Des URL trop longues où comportant certains caractères spéciaux peuvent être mal interprétés et provoquer un bug dans l'affichage : une URL différente de celle réellement visitée sera affichée, trompant ainsi l'internaute.

D. plug-ins

Les plug-ins sont des modules logiciels ajoutés au navigateur pour en étendre les fonctionnalités. Un plug-in est généralement très spécifique et réalise une tâche particulière, comme, par exemple, la lecture d'un format particulier de vidéo. Un plug-in peut être intégré directement au navigateur ou bien au système d'exploitation qui sera requis par le navigateur pour fournir un moyen de lire un type de ressource particulier (type MIME).

1. Applets Java

Les applets Java sont des applications Java portables distribuées sur le web. Elle s'exécute dans un environnement d'exécution spécifique appelé une JVM (Java Virtuel Machine). Cette JVM fourni les mécanismes de contrôle et de sécurité permettant d'empêcher un accès frauduleux à l'ordinateur et ses fichiers. Cependant, la JVM n'est pas exempt de bugs exploitables par des webmasters malicieux.

Une applet Java peut posséder une signature électronique certifiant sa provenance, le navigateur contrôlant auprès d'une autorité de certification que le programme est diffusé par tel ou tel éditeur. Cette signature donne une information utile à l'internaute afin de décider d'exécuter ou pas cette applet.

2. ActiveX

Les ActiveX sont eux aussi des programmes autonomes intégrés aux pages web et s'exécutant sur l'ordinateur de l'internaute. Contrairement aux JVM, rien n'empêche un ActiveX d'accéder directement aux ressources intimes de l'ordinateur et aux fichiers de l'utilisateur.

Le navigateur demande à l'internaute s'il veut faire confiance à l'ActiveX mais cette relation de confiance est biaisée dans le cas où l'utilisateur est novice. Un ActiveX peut lui aussi posséder une signature électronique destinée à certifier sa provenance, permettant ainsi à l'utilisateur de décider du niveau de confiance à accorder à ce programme en fonction de l'éditeur.

3. Lecteurs multimedia

Le navigateur possède en interne les moyens de lire et d'afficher les types de ressources de base du web : les pages HTML, les feuilles de style CSS, les pages mobile WAP, les images GIF, JPEG et PNG, les sons WAV et MID. En revanche, il existe sur le web un grand nombre d'autres formats très répandus qu'il ne sait pas lire. Pour parer à cette limitation, il délègue à d'autres applications le soin de lire et afficher le contenu de ses ressources.

Quelques formats populaires lus par des plug-ins :

Nom Type Extention Principaux lecteurs
PDF document texte enrichi portable pdf Adobe Reader
Flash animation multimédia swf Macromedia Flash Player
SMIL présentation multimédia smil RealOne, QuickTime
MPEG-4 vidéo enrichie mpeg Real Player
MOV vidéo mov QuickTime
MathML formule mathématique de calcul formel mml MathPlayer
VRML animation 3D wrl Cosmo

Et évidemment, les vulnérabilités de chacun de ces plug-ins s'ajoutent à celles du navigateur. La popularité d'un plug-in attisant le désir des pirates d'en découvrir des bugs afin de les exploiter.

4. Barre d'outils

Les divers outils à placer en barre d'outils du navigateur sont des petits programmes au comportement pas toujours bien documenté puisque beaucoup d'entre eux contiennent des spywares : des modules espions transmettant des informations à votre insue sur vos sites visités, les mots de passes saisis, vos documents personnels…

L'installation d'un tel outil doit se faire avec précaution : il faut en connaître l'auteur et décider de la confiance à lui accorder.

Par exemple un plug-in permet de discuter en ligne avec les autres visiteurs du site en cours de visite, et potentiellement de se faire espionner ses discussions.

Le propre d'un plug-in en barre d'outils est d'être actif dès le lancement du navigateur et pour toute la durée de son exécution, certains en profitent pour espionner les sites visités, les mots clés de recherche, les mots de passe saisis, les emails envoyés… D'où le problème de sécurité !

IV. Conclusion

Avant d'installer quoi que ce soit sur son ordinateur et d'autoriser l'exécution d'un code exécutable d'une page web, il faut toujours contrôler l'origine du programme. Si l'éditeur n'est pas une société de confiance, alors il faut le refuser.

Ne jamais se rendre sur une page exigeant une authentification à partir une demande venue du web ou d'un lien trouvé sur le web. Il faut s'y rendre à partir des URL obtenues de façon sûre et officielle et recopiée au clavier puis placée en favori.

Le navigateur peut contenir des bugs, mais on peut en éviter facilement l'exploitation par des pirates par un comportement adéquat de l'utilisateur qui doit s'informer et se former sur les attaques possibles. L'utilisateur est à 95% le maillon faible de la chaîne de sécurité en acceptant naïvement de faire tout ce que des inconnus mal intentionnés lui demande.

Mettez à jour votre navigateur, optez pour une mise à jour automatique si cette option existe ! Utilisez de préférence l'un des navigateurs les plus répandus afin de profiter d'une équipe de développeurs motivés :

Systèmes d'exploitation Navigateurs
Windows Internet Explorer, Mozilla, Firefox, Opera
Linux Mozilla, Firefox, Konqueror
Mac OS Safari, Camino

Voir aussi

Pour en savoir plus sur le comportement d'un navigateur web, je vous recommande la lecture de l'article Le Comportement des Navigateurs Internet de Mathieu Lemoine. Ce document PDF ActiveX et la sécurité de Frédéric Comte vous en dira plus sur les risques inhérents à l'utilisation des ActiveX.

Remerciements

Merci à buchs pour sa relecture orthographique.