La sécurité du navigateur webDate de publication : 17/08/2006 , Date de mise à jour : 17/08/2006
Par
Hugo Etiévant (Le CyberZoïde Qui Frétille)
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.
I. Introduction
II. Etat des menaces
III. Eléments d'un navigateur
A. Interpréteur de code HTML
B. Interpréteur de langage de script
C. Interpréteur d'URL
1. URL trompeuse : phishing
2. Bug de codage des URL : spoofing
D. plug-ins
1. Applets Java
2. ActiveX
3. Lecteurs multimedia
4. Barre d'outils
IV. Conclusion
Voir aussi
Remerciements
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 | <script langage="javascript">
<!--
var i = 0 ;
while(i < 10) {
document.white('toto<BR>');
}
-->
</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
Remerciements
Merci à buchs pour sa relecture orthographique.
 
|