Problèmes liés à l'utilisation de JavaScript
-
Détourner les visiteurs vers des sites inappropriés
- Javascript permet la redirection automatique vers une autre URL
- Les moteurs de recherche indexent le contenu HTML d'un document
- Des utilisateurs selectionnent le document sur la base de la description fournie par un moteur de recherche
-
Un script redirige le butineur vers un autre document, qui n'a peut-être
rien à voir avec le sujet du premier, p.ex. contenu pornographique
ou offensant (window.location=URL)
-
La politique de la "Même Origine" permet à un script de
définir la valeur de
document.domain
avec un suffixe du domaine courant. Comme la plupart des sites sont dans le domaine générique .com, en mettantdocument.domain
à "com" le script peut avoir accès aux informations d'autres sites .com qui seraient affichées dans d'autres frames.
-
Les URLs des documents visités précédemment sont accessibles
via l'objet history. Un script peut facilement envoyer cette
information à un serveur à distance.
-
Le champ "Location:", dans la fenêtre du butineur, est accessible
et modifiable par JavaScript sur plusieurs versions de butineurs. Un script
peut donc faire croire au lecteur qu'ils sont sur un site alors qu'ils sont
en réalité sur un autre, en modifiant l'URL affichée.
Ceci peut être utilisé en conjonction avec des frames pour rendre les choses encore pires: un script peut demander à charger un ensemble de frames, où le premier frame est d'un pixel de large et un pixel de haut et le second frame occupe la place qui reste. Le premier frame contiendrait un script qui contrôlera ce qui se passe dans l'autre frame. Le second frame affichera le contenu d'un site apparemment inoffensif. Le script du premier frame quasi invisible met à jour continuellement le champ location pour faire croire au lecteur qu'il visite ce site inoffensif tout en espionnant les actions de l'utilisateur, y compris l'éventuelle saisie d'un mot de passe. A cause de la taille des frames, ne réalise pas que ce qu'il lit est affiché dans un frame et qu'un script s'exécute en arrière-plan pour l'espionner.
-
Un script mal écrit peut consommer toute la mémoire du
système, nécessitant alors un redémarage. E.g.:
var big_string = "double moi!"; while (true) { big_string = big_string + big_string; }
-
Avec l'introduction du concept de "layers", il est maintenant possible d'avoir
un formulaire contrôlé par Javascript avec un
élément de transfert de fichier (file upload) caché
derrière un contenu apparemment inoffensif. Si l'élément
de transfert de fichier contient, comme valeur par défaut, un chemin
d'accès à un fichier specifique, le mécanisme de transfert
de fichier pourrait envoyer le fichier au site à distance sans aucune
intervention de l'utilisateur.
-
Pour les utilisateurs de services de courrier électronique via le
web (p.ex. Hotmail), un message contenant une balise <img. ..> du genre
<IMG LOWSRC= "javascript:....">
peut amener leur butineur à exécuter un script JavaScript lorsqu'ils ouvrent un message. Ce script peut alors afficher un écran de saisie de mot passe pour transmettre le mot de passe de l'utilisateur, ou envoyer des messages au nom de l'utilisateur, etc... - Différents butineurs et différentes versions du même butineur ne se comportent pas de la même façon. Pour atteindre une large audience, le programmeur JavaScript doit donc tester le butineur et la version (la documentation Netscape dit: "Up until now, web developers who wished to write sophisticated JavaScript applications or use Dynamic HTML had to use the Navigator 4 DOM and the Internet Explorer 4 DOM. Both of these DOMs were proprietary, non W3C DOM-compliant, and incompatible with each other. The difficulty, frustration, and expense of developing and debugging the same functionality twice for different DOMs has led web developers to call on all browser vendors to fully support the W3C DOM so that web developers can write once and run anywhere.")
- Section sur JavaScript de la World Wide Web Security FAQ
- Netscape Security Notes
- NetScape Navigator JavaScript Trojan Horse
- WWW Browser Security & Privacy Flaws
- "Son of Cache-Cow" Netscape Vulnerability