IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

La sécurité du navigateur web

Cet article présente les éléments d'insécurité du navigateur web. Il permettra à l'internaute de mieux comprendre le comportement de son navigateur ainsi que de prendre connaissance de ses vulnérabilités. Mieux connaître son navigateur permet de mieux se prémunir des attaques possibles.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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édias 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 ces 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. État 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. Élé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.

III-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 est des erreurs de rendu suite à la mauvaise interprétation des instructions de description.

III-B. Interpréteur de langage de script

L'interpréteur de langage de script permet l'exécution côté client de petits 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'appels).

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>

III-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 :

  • protocole utilisé (HTTP, FTP…) ;
  • le serveur (nom de domaine ou adresse IP) ;
  • le chemin dans le système de fichiers du serveur ;
  • le nom du fichier ;
  • des paramètres ;
  • un fragment ;
  • d'autres informations optionnelles (utilisateur, mot de passe, port)…

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é.

III-C-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és 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.

III-C-2. Bug de codage des URL : spoofing

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

III-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 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).

III-D-1. Applets Java

Les applets Java sont des applications Java portables distribuées sur le web. Elles s'exécutent dans un environnement d'exécution spécifique appelé une JVM (Java Virtuel Machine). Cette JVM fournit 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 exempte 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.

III-D-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.

III-D-3. Lecteurs multimédias

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.

III-D-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 insu sur vos sites visités, les mots de passe 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 demandent.

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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2006 Hugo Etiévant (cyberzoide). Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.